失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信企业支付 公众号付款到零钱(二)代码实现

微信企业支付 公众号付款到零钱(二)代码实现

时间:2020-01-12 01:01:15

相关推荐

微信企业支付 公众号付款到零钱(二)代码实现

很久很久之前,写了打通接口时遇到的坑,最近,终于写代码啦哈哈哈哈

好了,正题:

参考官方文档

https://pay./wiki/doc/api/tools/mch_pay.php?chapter=14_2java

有序参数生成签名(复制的官方文档代码~~~)将参数值data按照ASCII码值排序,ksort() 解决data的元素参考下方xml参数(不包括sign)

function createSign($data){$stringA = '';foreach ($data as $key => $value) {$stringA .= '&'.$key.'='.$value;}$stringA = substr($stringA, 1);$stringSignTemp = $stringA."&key=key"; //注:key为商户平台设置的密钥key$sign = strtoupper(MD5($stringSignTemp)); //注:MD5签名方式//$sign = strtoupper(hash_hmac("sha256", $stringSignTemp, $key)); //注:HMAC-SHA256签名方式$data['sign'] = $sign;return $data;}

发送的xml参数把xml参数拼接成字符串$xml,再发送

<xml><amount>amount</amount>//金额以分为单位,最低限额可在企业账号平台进行设置<check_name>NO_CHECK</check_name>//是否校验真实姓名,如果值为FORCE_CHECK,下面注释的re_user_name代码也要作为参数传递<desc>desc</desc>//描述,用户收到打款信息详情显示的提示<mch_appid>mch_appid</mch_appid> //进行打款的公众号的openid<mchid>mchid</mchid> //商户号<nonce_str>sdfklqswdcfec</nonce_str> //随机字符串<openid>openid</openid>//收到打款的用户,在当前公众号下的openid<partner_trade_no>no</partner_trade_no> //系统内部订单号,不是微信的,是我们开发的系统内部的订单号<!--<re_user_name>张三</re_user_name>--> //真实姓名<spbill_create_ip>ip</spbill_create_ip> //该IP同在商户平台设置的IP白名单中的IP没有关联,该IP可传用户端或者服务端的IP。<sign>025FE0384AQS28E11DCF2D3A023435AE</sign> //通过算法处理得到的签名 </xml><!--把xml参数拼接成字符串$xml,再发送-->

通过httpcurl携带证书发送请求$url = ‘https://api.mch./mmpaymkttransfers/promotion/transfers’;

$url = 'https://api.mch./mmpaymkttransfers/promotion/transfers';function withdraw_post($url,$xml,$second=30){$ch = curl_init();curl_setopt($ch,CURLOPT_TIMEOUT,$second);curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);curl_setopt($ch,CURLOPT_SSLKEY,'/证书在服务器上的绝对路径key.pem');curl_setopt($ch,CURLOPT_SSLCERT,'/证书在服务器上的绝对路径cert.pem');curl_setopt($ch,CURLOPT_POST, 1);curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);$data = curl_exec($ch);if($data){curl_close($ch);return $data;}else{$error = curl_errno($ch);echo "call faild, errorCode:$error\n";curl_close($ch);return false;}}

处理接口返回的xml数据

$xmlstring = simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA);//simplexml_load_string() 函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象 $arr = json_decode(json_encode($xmlstring),true);

如果觉得《微信企业支付 公众号付款到零钱(二)代码实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。