微信网页调用支付, 生成预订单号时成功返回 XML, 但是 JS 提交支付的时候提示签名错误?

2015-07-09 11:01:40 +08:00
 iugo

微信支付困扰我几天了.

出错点

目前遇到的问题是, 在 JS 发起支付请求后返回 "商户签名错误".

使用的 JS 代码

我在两个地方看到有不同的示例代码

第一个地方: http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82

第一个地方是微信 JSSDK 的线上文档, 按照里面的要求放上示例代码后根本无法发起请求.

第二个地方: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7

我就是使用第二个地方的 JS 示例代码后出错. 可以发起请求, 但是提示 "商户签名错误", 支付中断.

关于我使用的签名

我看到微信中有两个签名, 一个是微信支付中说的 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

我利用上面那个方法成功完成 "统一下单". 发送 XML 请求并得到 XML 返回.

我在 JS 里面填写的就是统一下单时的签名.

如果不是这个签名, 那我要拼接什么参数用什么算法得到这个 paySign?

微信中的签名

我看到的签名有三种:

1. signature

JS-SDK 使用权限签名

尝试生成过, 但没验证对错.

SHA1 算法.

可以找到要拼接的字符串.

2.sign

统一下单的签名

已经成功生成.

MD5 算法.

可以找到要拼接的字符串.

3. paySign JS

提交支付所用的签名

不知道这个是什么.

2911 次点击
所在节点    问与答
2 条回复
b821025551b
2015-07-09 11:17:18 +08:00
最后一步发起请求的字段用这个:timestamp,签名时用这个:timeStamp 试试。
iugo
2015-07-09 11:21:35 +08:00
目前找到了 paysign 这东西怎么拼接: $pay_sign = "appId=$appid&nonceStr=$nonce_str&package=prepay_id=$prepay_id&signType=MD5&timeStamp=$timestamp";

新的错误诞生了, 提示
调用支付JSAPI缺少参数: sign

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/204417

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX