jsapi支付签名_微信支付JSAPI:商户签名错误

在使用微信支付的接口,测试的时候一直提示“商户签名错误”,搜索了一下网上的解决方案,都不能解决。

使用环境:

1.统一下单文档:http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

2.支付API文档:http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7

我遇到的问题在请求统一下单接口时,需要传递‘body’参数,我传递的参数如下:

$params = array(

'body' => '商品简单描述',

'out_trade_no' => '1217752501201407033233368018',

'total_fee' => 1,

'notify_url' => 'http://www.baidu.com',

'trade_type' => 'JSAPI',

'openid' => 'oYUwluMxtbO_tabXoEDNHIxxxx'

);

传递该参数能正常的返回数据,如下:

array (size=6)

'appid' => string 'wx3ec688f9222xxxd' (length=18)

'nonceStr' => string '3EMgh9Xk3R2sLjcy' (length=16)

'package' => string 'prepay_id=wx20150511014800d5e76c718c0217038858' (length=46)

'signType' => string 'MD5' (length=3)

'timeStamp' => int 1431280085

'paySign' => string '8FC35D2EB24D0D1780A169C0EE65AD30' (length=32)

在这种情况,在微信浏览器中打开我的测试页面会提示

商户签名错误

,如果我改变了body参数的值,比如将其换为

good description

,此时请求统一下单接口时,就不能获得

prepay_id

,结果如下:

array (size=6)

'appid' => string 'wx3ec688f9222bbd0d' (length=18)

'nonceStr' => string 'oatMrO1yGiDloKPM' (length=16)

'package' => string 'prepay_id=' (length=10)  // 为空

'signType' => string 'MD5' (length=3)

'timeStamp' => int 1431280216

'paySign' => string 'B389D7CAA92FCA3887A3D75C41C40595' (length=32)

百度了好久,也没找到合适的解决方案,麻烦做过得帮忙看下。。。

同问。。。。楼主解决了么

如果只是body变化的话,请考虑一下md5签名的时候用的编码,我用的是UTF-8,好像中文英文都可以

我也是遇到这个商户签名错误 结果是错在:timeStamp

后台签名是用 timeStamp没错,但是前端chooseWXpay时候传参是 timestamp。 s小写。就这么解决了。。

Jssdk chooseWXpay 和 WeixinJSBridge invoke 方式 timestamp 中的 S 大小写不一样,后台 Sign 算法一致使用大写,前端 chooseWXpay 为小写,WeixinJSBridge 为大写,这一块容易出错!

参考:https://github.com/thenbsp/Wechat

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值