「企业微信支付」php实现微信企业付款到零钱,常用于用户提现自动到账

企业微信支付

php实现微信企业付款到零钱,常用于用户提现自动到账

序言:用户账户余额申请提现,平台审核通过线下打款,此步骤比较繁琐,如果你的小程序已经使用90天以上并且连续30天有交易,这时可以开通企业付款到零钱这个功能,只需后台进行审核打款,提现的金额就自动到用户零钱了,赶紧点赞收藏吧。
接口文档。
文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html。
微信商户平台开通企业付款到零钱。
我的小程序暂时不符合开通条件,虽然连续交易已超过30天,但入驻时间才40天。
代码。
开通产品的条件不能满足,但是代码已经对接完成,只等条件满足之后开通就能使用了,有需要的朋友可以直接复制以下代码。
<?php/****@author:lidong*@day:2021/12/01*微信付款到零钱*/namespacecrmebservices;usethinkfacadeDb;classWxpayToCash{publicfunctionpay($openid,$money){$wechat=SystemConfigService::more(['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__)))."/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,//用户openidopenid是微信用户在公众号appid下的唯一用户标识'check_name'=>"NO_CHECK",//校验用户姓名选项NO_CHECK:不校验真实姓名FORCE_CHECK:强校验真实姓名'amount'=>(int)($money*100),//付款金额,单位为分'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位*@paramint$length*@return产生的随机字符串*/publicstaticfunctiongetNonceStr($length=32){$chars="abcdefghijklmnopqrstuvwxyz0123456789";$str="";for($i=0;$i<$length;$i){$str.=substr($chars,mt_rand(0,strlen($chars)-1),1);}return$str;}//需要使用证书的请求functionpostXmlSSLCurl($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);//设置headercurl_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);returnfalse;}}/***生成签名*@return签名*/publicfunctionMakeSign($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*@returnstring*/publicfunctionToUrlParams($params){$string='';if(!empty($params)){$array=array();foreach($paramsas$key=>$value){$array[]=$key.'='.$value;}$string=implode("&",$array);}return$string;}/***输出xml字符*@param$params参数名称*returnstring返回组装的xml**/publicfunctiondata_to_xml($params){if(!is_array($params)||count($params)<=0){returnfalse;}$xml="<xml>";foreach($paramsas$key=>$val){if(is_numeric($val)){$xml.="<".$key.">".$val."</".$key.">";}else{$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";}}$xml.="</xml>";return$xml;}publicfunctionxmlToArray($xml_data){returnjson_decode(json_encode(simplexml_load_string($xml_data,'SimpleXMLElement',LIBXML_NOCDATA)),true);}}。

企业微信支付(网络配图)

企业微信支付(网络配图)

业务场景。
用户申请提现。
平台审核。
总结一下。
以上就是微信企业付款到零钱的具体操作流程。
我是小程序软件开发,每天分享开发过程中遇到的知识点,如果对你有帮助的话,帮忙点个赞再走呗,非常感谢。
往期文章分享:
接口文档中api的请求方式是用get还是post呢?
小程序实现下拉刷新、上拉加载,代码可直接复用,拿走不谢。

发表评论

免责声明:本站部分内容转载于网络,其中内容仅代表作者个人观点,与本网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。

本站联系邮箱:douxingdu02@163.co m