Lspring
Lspring
  • 发布:2018-05-03 11:10
  • 更新:2018-05-07 20:40
  • 阅读:5167

求助啊,微信支付一直返回-1

分类:HTML5+

{"appid":"wxa029342389e*****","noncestr":"CD07C1CA953B31A815B7C51D9382B5D8","package":"Sign=WXPay","partnerid":"1498770182","prepayid":"wx03112929626868c6c034f89e3703949469","timestamp":"1525318178662","sign":"2FC1CDB4BD4A1E225C6C44EB8576751C"}
这是后台返回我拼接上的字符串,前台公有证书打包和私有证书打包后都去微信开放平台上把应用签名改成一致的,后台也对noncestr和sign加密过,后台效验也通过,但就是前台一致报-1。求助

这是我前端的代码

这是微信支付appid

这是私有证书打包

这是微信开放平台上的签名

最后这是打包好的签名

真的不知道错在哪了,求帮助啊

2018-05-03 11:10 负责人:无 分享
已邀请:
Lspring

Lspring (作者) -

谢谢了各位,解决了,是后台的问题。
建议后台有问题的看一下这篇文章:http://ask.dcloud.net.cn/article/271。
然后我总结了昨天微信支付的坑:
1.打包:公有证书打包还是私有证书打包,包名和签名都要和微信开放平台上的一致,如果签名文件换了,这时候应用签名也是换的,需要手动到微信开放平台上去修改(这个很重要)。

  1. 缓存:如果之前用过某个账号调用过支付的,微信在这个账号上是有订单缓存的,如果有问题,需要换个账号试试,我就是将申请了三个账号,一个之前调用过,后来没清缓存就调不起来,其他两个账号就可以。
  2. 后台返回:返回的是字符串,参数必须是这7个:appid,partnerid,prepayid,package,noncestr,timestamp,而且noncestr和timestamp只能生成一次,因为后台向微信发送订单和后台返回给你的东西必须是一样的,我一天的坑就是这个原因造成的。
  3. 联机调试:不能联机调试,因为联机调试生成的应用id和微信开放平台上的肯定不一样,应用调试应用的包名就不一样。
    有问题的再一起交流
  • skysowe

    你们当时做了沙箱验收吗?这是必须的还是可选的,我用沙箱能获得数据,直接用正式api密钥返回的数据是空,我跟你的情况几乎一模一样

    2018-05-07 20:35

  • skysowe

    能具体说一下是哪个参数吗

    2018-05-07 20:37

  • Lspring (作者)

    回复 skysowe:后台需要给你返回的就是这appid,partnerid,prepayid,package,noncestr,timestamp 七个参数,很重要的,这七个不能有错,否则还是调用不起来。

    2018-05-08 10:23

  • Lspring (作者)

    回复 skysowe:你的是微信支付php后台,看下https://github.com/dcloudio/H5P.Server/tree/master/payment/wxpayv3

    空的话可能我觉得你没把当时申请微信支付的时候那些秘钥,key啥的没整合进来

    2018-05-08 10:34

  • skysowe

    回复 Lspring:终于过了,回头我写个总结,以飨后来者。

    2018-05-09 10:55

  • Lspring (作者)

    回复 skysowe:微信支付就是个巨坑啊

    2018-05-09 11:06

钟

把 timestame 的值改为字符串格式试试

  • Lspring (作者)

    谢谢,改了还是不行

    2018-05-03 11:48

小和尚ABC

小和尚ABC - 金融公司,公司都是mui项目,金融电商等类型都做过。

云打包试一下。

  • Lspring (作者)

    就是用的云打包,公有打包和私有打包也都试了,哎

    2018-05-03 11:48

skysowe

skysowe

这是我的截图,只装了一个微信的手机直接错误,装了双开微信的手机,能调起微信选择框,点任何一个都报错

  • Lspring (作者)

    1.需要云打包,后台返回的是一个JSON字符串,咱们直接用这个串去调用,好像不能咱们自己拼接后再调用。2.timestamp里面的时间戳是int类型。3.打包后你看下微信开放平台和你打包apk后的应用签名是否一致,一致还调用不起来,大部分是后台返回的问题了

    2018-05-08 10:26

该问题目前已经被锁定, 无法添加新回复