700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信 企业付款到零钱 提现

微信 企业付款到零钱 提现

时间:2022-01-26 20:09:43

相关推荐

微信 企业付款到零钱 提现

官方文档:https://pay./wiki/doc/api/tools/mch_pay.php?chapter=14_1

关键参数如图:

证书如图:

证书路径要与代码里的路径对应,放在根目录下,最好用cert或其它命名文件夹存起来(本人实践时发现放在文件夹里有效),如图

基本流程

1、拼凑所需要传递的参数 map集合

2、根据要传递的参数生成自己的签名

3、把签名放到map集合中【因为签名也要传递过去,看API】

4、将当前的map结合转化成xml格式

5、发送请求到企业付款到零钱的Api。发送请求是一个方法来的POST

6、解析返回的xml数据===》map集合

7、根据map中的result_code AND return_code来判断是否成功与失败

上代码

/*** 企业支付(向微信发起企业支付到零钱的请求)* @param string $openid 用户openID* @param string $trade_no 单号* @param string $money 金额(单位分)* @param string $desc 描述* @param string $appid 协会appid* @return string XML 结构的字符串**/function txFunc($openid,$trade_no,$money,$desc,$appid){$data = array('mch_appid' =>$appid,//协会appid'mchid' => '',//微信支付商户号'nonce_str' => getNonceStr(), //随机字符串'partner_trade_no' => $trade_no, //商户订单号,需要唯一'openid' => $openid,'check_name' => 'NO_CHECK', //OPTION_CHECK不强制校验真实姓名, FORCE_CHECK:强制 NO_CHECK:'amount' => $money * 100, //付款金额单位为分'desc' => $desc,'spbill_create_ip' => get_client_ip(),//'re_user_name' => 'jorsh', //收款人用户姓名 *选填//'device_info' => '1000', //设备号 *选填);//生成签名$secrect_key = '';//API密码$data = array_filter($data);ksort($data);$str ='';foreach($data as $k=>$v) {$str.=$k.'='.$v.'&';}$str.='key='.$secrect_key;$data['sign'] = md5($str);//构造XML数据(数据包要以xml格式进行发送)$xmldata = arrToXml($data);//请求url$url = 'https://api.mch./mmpaymkttransfers/promotion/transfers';//发送post请求$res = curl_post_ssl($url,$xmldata);return $res;}/*** 数组转XML* @param $data* @return string*/function arrToXml($data){$xml = "<xml>";// 遍历组合foreach ($data as $k=>$v){$xml.='<'.$k.'>'.$v.'</'.$k.'>';}$xml .= '</xml>';return $xml;}/*** [curl_post_ssl 发送curl_post数据]* @param [type] $url[发送地址]* @param [type] $xmldata [发送文件格式]* @param [type] $second [设置执行最长秒数]* @param [type] $aHeader [设置头部]* @return [type] [description]*/function curl_post_ssl($url, $xmldata, $second = 30, $aHeader = array()){$isdir = $_SERVER['DOCUMENT_ROOT'].'/cert/';//证书位置;绝对路径// return $isdir;$ch = curl_init();//初始化curlcurl_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_SSLCERTTYPE, 'PEM');//证书类型curl_setopt($ch, CURLOPT_SSLCERT, $isdir . 'apiclient_cert.pem');//证书位置curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');//CURLOPT_SSLKEY中规定的私钥的加密类型curl_setopt($ch, CURLOPT_SSLKEY, $isdir . 'apiclient_key.pem');//证书位置curl_setopt($ch, CURLOPT_CAINFO, 'PEM');curl_setopt($ch, CURLOPT_CAINFO, $isdir . 'rootca.pem');if (count($aHeader) >= 1) {curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);//设置头部}curl_setopt($ch, CURLOPT_POST, 1);//post提交方式curl_setopt($ch, CURLOPT_POSTFIELDS, $xmldata);//全部数据使用HTTP协议中的"POST"操作来发送$data = curl_exec($ch);//执行回话if ($data) {curl_close($ch);return xmlToArray($data);} else {$error = curl_errno($ch);echo "call faild, errorCode:$error\n";curl_close($ch);return false;}}

回调结果

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