接口文档

文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html

微信商户平台开通企业付款到零钱

我的小程序暂时不符合开通条件,虽然连续交易已超过30天,但入驻韶光才40天。

微信企业付款phpphp实现微信企业付款到零钱常用于用户提现主动到账 Node.js

代码

开通产品的条件不能知足,但是代码已经对接完成,只等条件知足之后开通就能利用了,有须要的朋友可以直接复制以下代码

<?php/ @author: lidong @day: 2021/12/01 微信付款到零钱 /namespace crmeb\services;use think\facade\Db;class WxpayToCash{ public function pay($openid,$money){ $wechat = SystemConfigService::more([&#39;pay_routine_appid', 'pay_routine_appsecret', 'pay_routine_mchid', 'pay_routine_key', 'pay_routine_client_cert', 'pay_routine_client_key']); $apiclient_cert = dirname(dirname(dirname(__FILE__))).&#34;/public".$wechat["pay_routine_client_cert"]; $apiclient_key = dirname(dirname(dirname(__FILE__)))."/public".$wechat["pay_routine_client_key"]; $pay_routine_key = $wechat["pay_routine_key"]; //通过微信api进行退款流程 $parma = array( 'mch_appid'=> $wechat["pay_routine_appid"],//商户账号appid 申请商户号的appid或商户号绑定的appid 'mchid'=> $wechat["pay_routine_mchid"],//商户号 微信支付分配的商户号 'nonce_str'=> $this->getNonceStr(10),//随机字符串 随机字符串,不长于32位 'partner_trade_no'=> $this->getNonceStr(11)."YmdHis".rand(1000,9999),//商户订单号 商户订单号,需保持唯一性 'openid'=> $openid,//用户openid openid是微信用户在"大众号appid下的唯一用户标识 'check_name'=> "NO_CHECK",//校验用户姓名选项 NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名 'amount'=> (int) ($money100),//付款金额,单位为分 'desc'=> "微信付款到零钱",//付款备注 ); $parma['sign'] = $this->MakeSign($parma,$pay_routine_key);//署名 $xmldata = $this->data_to_xml($parma); $xmlresult = $this->postXmlSSLCurl($xmldata,'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers',30,$apiclient_cert,$apiclient_key); $result = $this->xmlToArray($xmlresult); if($result['return_code'] == 'SUCCESS' && $result['return_msg'] == 'OK' && $result['result_code'] == 'SUCCESS'){ return ["code"=>200,"message"=>"success"]; }else{ return ["code"=>100,"message"=>$result["err_code_des"]]; } } / 产生随机字符串,不长于32位 @param int $length @return 产生的随机字符串 / public static function getNonceStr($length = 32) { $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str =""; for ( $i = 0; $i < $length; $i++ ) { $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1); } return $str; } //须要利用证书的要求 function postXmlSSLCurl($xml,$url,$second=30,$apiclient_cert,$apiclient_key) { $ch = curl_init(); //超时时间 curl_setopt($ch,CURLOPT_TIMEOUT,$second); //这里设置代理,如果有的话 //curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8'); //curl_setopt($ch,CURLOPT_PROXYPORT, 8080); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); //设置header curl_setopt($ch,CURLOPT_HEADER,FALSE); //哀求结果为字符串且输出到屏幕上 curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); //设置证书 //利用证书:cert 与 key 分别属于两个.pem文件 //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLCERT, $apiclient_cert); //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLKEY, $apiclient_key); //post提交办法 curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POSTFIELDS,$xml); $data = curl_exec($ch); //返回结果 if($data){ curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "curl出错,缺点码:$error"."<br>"; curl_close($ch); return false; } } / 天生署名 @return 署名 / public function MakeSign( $params , $pay_routine_key ){ //署名步骤一:按字典序排序数组参数 ksort($params); $string = $this->ToUrlParams($params); //署名步骤二:在string后加入KEY $string = $string . "&key=".$pay_routine_key; // echo $string; //署名步骤三:MD5加密 $string = md5($string); //署名步骤四:所有字符转为大写 $result = strtoupper($string); return $result; } / 将参数拼接为url: key=value&key=value @param $params @return string / public function ToUrlParams( $params ){ $string = ''; if( !empty($params) ){ $array = array(); foreach( $params as $key => $value ){ $array[] = $key.'='.$value; } $string = implode("&",$array); } return $string; } / 输出xml字符 @param $params 参数名称 return string 返回组装的xml / public function data_to_xml( $params ){ if(!is_array($params)|| count($params) <= 0) { return false; } $xml = "<xml>"; foreach ($params as $key=>$val) { if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; } public function xmlToArray($xml_data){ return json_decode(json_encode(simplexml_load_string($xml_data, 'SimpleXMLElement', LIBXML_NOCDATA)), true); }}业务场景

用户申请提现

平台审核

总结一下

以上便是微信企业付款到零钱的详细操作流程

我是小程序软件开拓,每天分享开拓过程中碰着的知识点,如果对你有帮助的话,帮忙点个赞再走呗,非常感谢。

往期文章分享:

接口文档中api的要求办法是用get还是post呢?

小程序实现下拉刷新、上拉加载,代码可直接复用,拿走不谢