PHP微信提现

1、微信提现到零钱功能既是商户号中"企业付款到零钱"功能,开通链接https://pay.weixin.qq.com/index.php/public/product/detail?pid=5&productType=0
2、微信提现文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
3、在提现文档中有个参数为appid,如果你是通过微信开放平台授权获得的openid,那么在参数中appid为开放平台应用的appid,如果你是通过微信公众号授权获得的openid,那么参数中appid为公众号的appid。需要自己在代码中做判断。如果不一致,会报错“appid与openid不匹配”。
提现代码如下(TP5):

public function wx_withdrawal(){
	header('content-type:text/html;charset=utf-8');
	$mch_appid = "**************";   #appid
    $key = "**********************************";     #商户key
    $mchid = "***********";    #商户号
    $desc='提现';
    $openid='********************';
    $check_name='NO_CHECK';     #此参数为不验证真实姓名,如果需要验证真实姓名,请参考微信文档,注意参数排序,否则将报错->签名错误
    #$re_user_name='';        #微信真实姓名
    
    $nonce_str = strtoupper(md5(time()));
    $partner_trade_no = time().rand(100,999);   #订单号
    $amount = 0.3 * 100;     #总金额   最小0.3,最大5000,以分为单位,金额*100
    $spbill_create_ip = $_SERVER['REMOTE_ADDR'];
    $www_url = $_SERVER['HTTP_HOST'];
    $stringA = "amount={$amount}&check_name={$check_name}&desc={$desc}&mch_appid={$mch_appid}&mchid={$mchid}&nonce_str={$nonce_str}&openid={$openid}&partner_trade_no={$partner_trade_no}&spbill_create_ip={$spbill_create_ip}";
    $stringSignTemp = $stringA."&key=".$key;
    $sign=strtoupper(md5($stringSignTemp));
    $postData =
        "<xml>
    <amount>{$amount}</amount>
    <check_name>{$check_name}</check_name>
    <desc>{$desc}</desc>
    <mch_appid>{$mch_appid}</mch_appid>
    <mchid>{$mchid}</mchid>
    <nonce_str>{$nonce_str}</nonce_str>
    <openid>{$openid}</openid>
    <partner_trade_no>{$partner_trade_no}</partner_trade_no>
    <spbill_create_ip>{$spbill_create_ip}</spbill_create_ip>
    <sign>{$sign}</sign>
    </xml>";
    $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
    $dataxml = postCertXmlCurl($url,$postData);   #在这里post请求是要带证书,方法如下
    if($dataxml['return_code'] == 'SUCCESS' && $dataxml['result_code'] == 'SUCCESS'){
    	#执行提现到账后的逻辑
    }else{
    	$this->error($dataxml['err_code_des']);
    }
}

function postCertXmlCurl($url,$xml)
{

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验
    //设置header
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    //要求结果为字符串且输出到屏幕上
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1);//证书检查
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');
    curl_setopt($ch,CURLOPT_SSLCERT,$_SERVER['DOCUMENT_ROOT'].'/wxcert/apiclient_cert.pem');
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');
    curl_setopt($ch,CURLOPT_SSLKEY,$_SERVER['DOCUMENT_ROOT'].'/wxcert/apiclient_key.pem');
    //    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');
    //    curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/cert/rootca.pem');

    //post提交方式
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    //运行curl
    $data = curl_exec($ch);
    $objectxml = (array)simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
    //         $data = $this->xml_to_json($data);
    return $objectxml;
    //         dump($objectxml);die;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值