微信支付 -1

微信支付 返回状态码为 -1 的问题

一般客户端应用签名跟微信开发平台提供的签名一致的话那么这个问题就是出在服务端了,服务端签名的时候需要注意下面一些细节。

1、签名参数如下所示,键都是小写字母加下划线的形式!!!!!
2、签名参数键的顺序需升序排列(或者最后使用ksort()方法排序下)!!!!!
3、签名参数的数量如下所示,不可随意添加其他参数!!!!

1、先进行统一下单签名,为了获取到prepay_id

        //这里参数大小写一定注意,参数键都是小写字母加下划线的形式
        $parameters = array(
            'appid' => $appId,              //appid,这里是“微信开放平台”获取的APPID
            'body' => 'APP支付测试',        //商品描述
            'mch_id' => $mchId,             //商户号,这里是“微信商户平台”获取的商户
            'nonce_str' => $nonceStr,       //随机生成的字符串
            'notify_url' => 'http://www.weixin.qq.com/wxpay/pay.php',//通知地址
            'out_trade_no' => $orderId,     //自己平台定义的订单号码
            'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],//终端IP
            'total_fee' => floatval($totalGoodsPrice * 100),//总金额 单位 分
            'trade_type' => 'APP'           //交易类型
        );

将上面的参数进行签名获取到sign,然后再将该签名的值添加到上述参数中。即伪代码如下:

$parameters['sign'] = sign($parameters);

然后再将该 parameters p a r a m e t e r s 操 作 得 到 prepayId(具体操作方法请查看微信官方文档)。

2、第二次签名,返回给客户端

$parameters2 = array(
            'appid' => $appId,          //“微信开放平台”获取的APPID
            'noncestr' => $nonceStr,    //随机生成的字符串
            'package' => 'Sign=WXPay',  //暂定为“Sign=WXPay”
            'partnerid' => $mchId,      //“微信商户平台”获取的商户
            'prepayid' => $prepayId,
            'timestamp' => '' . time() . '',//时间戳
        );

将上述的 parameters2使 p a r a m e t e r s 2 使 用 跟 上 次 一 样 的 方 式 签 名 方 式 , 签 名 后 加 入 到 parameters2 的参数中:即伪代码如下:

$parameters2['sign'] = sign($parameters2);

然后将该参数$parameters2返回给客户端即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值