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

序言:用户账户余额申请提现,平台审核通过线下打款,此步骤比较繁琐,如果你的小程序已经使用90天以上并且连续30天有交易,这时可以开通企业付款到零钱这个功能,只需后台进行审核打款,提现的金额就自动到用户零钱了,赶紧点赞收藏吧。

接口文档

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

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

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

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

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

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

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

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

代码

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

<?php/** * * @author: lidong * @day: 2021/12/01 * 微信付款到零钱 */namespace crmebservices;use thinkfacadeDb;class WxpayToCash{    public function pay($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,//用户openid openid是微信用户在公众号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位     * @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);    }}

业务场景

用户申请提现

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

平台审核

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

总结一下

以上就是微信企业付款到零钱的具体操作流程

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

往期文章分享:

接口文档中api的请求方式是用get还是post呢?

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

来源:小程序软件开发

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月1日
下一篇 2021年11月1日

相关推荐