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

2022-10-11 21:25:51 119 0
魁首哥

接口文档

文档地址:

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

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

代码

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

  $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,'#39;,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"."
"; 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 = ""; foreach ($params as $key=>$val) { if (is_numeric($val)){ $xml.="<".$key.">".$val.""; }else{ $xml.="<".$key.">"; } } $xml.=""; return $xml; } public function xmlToArray($xml_data){ return json_decode(json_encode(simplexml_load_string($xml_data, 'SimpleXMLElement', LIBXML_NOCDATA)), true); } }

业务场景

用户申请提现

平台审核

总结一下

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

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

往期文章分享:

收藏
分享
海报
0 条评论
119
上一篇:解决PHP导出CSV文件中文乱码问题 下一篇:给你代码:PHP7中的异常与错误处理

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码