【微信支付付款至零钱】

欢迎观看——xpx分享

如果你觉得分享的不错,麻烦阅览到最后点个赞哈,谢谢。

注意以下几点

  1. 首先整理好您的请求参数格式;
  2. 对参数按照key=value的格式,并按照参数名ASCII字典序排序生成字符串;
  3. 连接密钥key;
  4. 生成sign并转成大写;

第一点:整理好 请求参数格式

$SendMessageData = array(
            'mch_appid'=>wx8888888888888888,
            'mchid'=>1900000109,
            'nonce_str'=>strtoupper(self::GetRandStr(32)),//随机生成32位随机数再转大写
            'openid'=>oxTWIuGaIt6gTKsQRLau2M0yL16E,
            'partner_trade_no'=>10000098201411111234567890,
            'check_name'=>'FORCE_CHECK',
            're_user_name'=>王小王,
            'amount'=>100,#代表1元   最小单位分
            'desc'=>节日快乐,
        );

    /**
     * 随机生成数
     */
    function GetRandStr($length){
        $str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $len=strlen($str)-1;
        $randstr='';
        for($i=0;$i<$length;$i++){
            $num=mt_rand(0,$len);
            $randstr .= $str[$num];
        }
        return $randstr;
    }

第二点:对参数按照key=value的格式,并按照参数名ASCII字典序排序生成字符串


$ASCIIData = $this->ASCII($SendMessageData);

//数组转xml 字典排序
 function ASCII($params = array()){
        //ksort()对数组按照键名进行升序排序
        ksort($params);
        //reset()内部指针指向数组中的第一个元素
        reset($params);
        $sign = '';//初始化
        foreach ($params AS $key => $val) { //遍历POST参数
            if ($val == ''||$key == 'sign'||$key == 'param') continue; //跳过这些不签名
            if ($sign) $sign .= '&'; //第一个字符串签名不加& 其他加&连接起来参数
            $sign .= "$key=$val"; //拼接为url参数形式
        }
        return $sign;
    }

第三四点:连接密钥key再转成大写字母 (在ASCIIData最后拼接上key得到$signParam字符串)

注意:密钥的长度为32个字节。
◆ key设置路径:微信商户平台(pay.weixin.qq.com)–>账户中心–>账户设置–>API安全–>设置API密钥

 $signParam = $ASCIIData."&key=192006250b4c09247ec02edce69f6a2d"//注:key为商户平台设置的密钥key
 $sign      = strtoupper(md5($signParam));//注:MD5签名方式
//最终得到最终发送的数据:
<xml>

<mch_appid>wxe062425f740c30d8</mch_appid>

<mchid>10000098</mchid>

<nonce_str>3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str>

<partner_trade_no>100000982014120919616</partner_trade_no>

<openid>ohO4Gt7wVPxIT1A9GjFaMYMiZY1s</openid>

<check_name>FORCE_CHECK</check_name>

<re_user_name>张三</re_user_name>

<amount>100</amount>

<desc>节日快乐!</desc>

<spbill_create_ip>10.2.3.10</spbill_create_ip>

<sign>C97BDBACF37622775366F38B629F45E3</sign>

</xml>


### 微信支付官方文档有详细的解释,也可以查看下方链接

 [1]:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
 
- 如果觉得分享的不错,麻烦点个赞,祝各位大吉大利!



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值