Thinkphp 5.0实现微信企业付款到零钱
程序员文章站
2023-10-17 14:38:55
本文实例为大家分享了thinkphp 5.0 微信企业付款到零钱的具体代码,供大家参考,具体内容如下
【微信支付】企业付款到零钱:
注意:1,证书路径一定要写绝对路径,...
本文实例为大家分享了thinkphp 5.0 微信企业付款到零钱的具体代码,供大家参考,具体内容如下
【微信支付】企业付款到零钱:
注意:1,证书路径一定要写绝对路径,且使用函数getcwd()。
function transfer($data){ //支付信息 $wxchat['appid'] = wxpayconfig::$appid; $wxchat['mchid'] = wxpayconfig::$mchid; $webdata = array( 'mch_appid' => $wxchat['appid'],//商户账号appid 'mchid' => $wxchat['mchid'],//商户号 'nonce_str' => md5(time()),//随机字符串 'partner_trade_no'=> date('ymdhis'), //商户订单号,需要唯一 'openid' => $data['openid'],//转账用户的openid 'check_name'=> 'no_check', //option_check不强制校验真实姓名, force_check:强制 no_check: 'amount' => $data['money']*100, //付款金额单位为分 'desc' => '微信企业付款到零钱',//企业付款描述信息 'spbill_create_ip' => request()->ip(),//获取ip ); foreach ($webdata as $k => $v) { $tarr[] =$k.'='.$v; } sort($tarr); $sign = implode($tarr, '&'); $sign .= '&key='.wxpayconfig::$key; $webdata['sign']=strtoupper(md5($sign)); $wget = $this->arrtoxml($webdata);//数组转xml $pay_url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';//api地址 $res = $this->postdata($pay_url,$wget);//发送数据 if(!$res){ return array('status'=>1, 'msg'=>"can't connect the server" ); } $content = simplexml_load_string($res, 'simplexmlelement', libxml_nocdata); if(strval($content->return_code) == 'fail'){ return array('status'=>1, 'msg'=>strval($content->return_msg)); } if(strval($content->result_code) == 'fail'){ return array('status'=>1, 'msg'=>strval($content->err_code),':'.strval($content->err_code_des)); } $rdata = array( 'mch_appid' => strval($content->mch_appid), 'mchid' => strval($content->mchid), 'device_info' => strval($content->device_info), 'nonce_str' => strval($content->nonce_str), 'result_code' => strval($content->result_code), 'partner_trade_no' => strval($content->partner_trade_no), 'payment_no' => strval($content->payment_no), 'payment_time' => strval($content->payment_time), ); return $rdata; }
//数组转xml function arrtoxml($arr) { if(!is_array($arr) || count($arr) == 0) return ''; $xml = "<xml>"; foreach ($arr as $key=>$val) { if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![cdata[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; }
//发送数据 function postdata($url,$postfields){ $ch = curl_init(); $params[curlopt_url] = $url; //请求url地址 $params[curlopt_header] = false; //是否返回响应头信息 $params[curlopt_returntransfer] = true; //是否将结果返回 $params[curlopt_followlocation] = true; //是否重定向 $params[curlopt_post] = true; $params[curlopt_postfields] = $postfields; $params[curlopt_ssl_verifypeer] = false; $params[curlopt_ssl_verifyhost] = false; //以下是证书相关代码 $params[curlopt_sslcerttype] = 'pem'; $params[curlopt_sslcert] = getcwd().'/plugins/payment/weixin/cert/apiclient_cert.pem';//绝对路径 $params[curlopt_sslkeytype] = 'pem'; $params[curlopt_sslkey] = getcwd().'/plugins/payment/weixin/cert/apiclient_key.pem';//绝对路径 curl_setopt_array($ch, $params); //传入curl参数 $content = curl_exec($ch); //执行 curl_close($ch); //关闭连接 return $content; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。