收藏
回答

小程序同一段支付代码,在本地服务器上能正常调起支付,但是在服务器上却显示签名错误?

一段支付代码,在本地测试的时候,在本地tomcat 上能支持调起支付界面,签名显示成功,但是把后台程序放到服务上的tomcat 上时,却一直显示签名错误,而且不能通过签名校验,说是sign 值不一致,本地服务器上是一致的,请问各位大佬是什么原因呢,卡这里卡两天了

回答关注问题邀请回答
收藏

2 个回答

  • 微信支付技术助手8
    微信支付技术助手8
    2020-06-11

    请按照以下几点进行排查:

    1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误

    2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)

    3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)

    4、确认参数的大小写,参数名与接口文档一致

    5、签名原串的参数值使用原始值,不需要encode

    6、接口需要使用UTF-8编码

    7、调用“小程序支付API”中appid没有按照文档要求的格式

    8、调用“小程序支付API”中signType类型与“统一下单接口”不一致

    2020-06-11
    有用
    回复 3
    • 我的名字
      我的名字
      2020-06-11
      在本地服务器上签名校验是可以通过的,但是在云服务器上生成的签名校验不能通过,而且我在本地服务器和云服务器上的程序是一样的
      2020-06-11
      回复
    • 微信支付技术助手8
      微信支付技术助手8
      2020-06-11回复我的名字
      肯定是你本地的环境和服务器环境有偏差。
      2020-06-11
      回复
    • 我的名字
      我的名字
      2020-06-11回复微信支付技术助手8
      环境是一样的,都是tomcat8.5和jdk8
      2020-06-11
      回复
  • 启年
    启年
    2020-06-10

    你本地环境和服务器环境不一致呗!

    JDK,tomcat,jar包。等等的版本都检查一遍。

    多半是jar包不一致的原因。

    2020-06-10
    有用
    回复 8
    • 我的名字
      我的名字
      2020-06-10
      版本都是一致的
      2020-06-10
      回复
    • 启年
      启年
      2020-06-10回复我的名字
      要么是jar包有多有少,要么就是代码里边的参数问题
      2020-06-10
      回复
    • 我的名字
      我的名字
      2020-06-10
      不应该是这种问题,我是直接把程序打成war,放到服务器上去跑的
      2020-06-10
      回复
    • 启年
      启年
      2020-06-10回复我的名字
      你服务器的tomcat/lib里边的jar包和本地的环境一样吗?要么就是参数的问题。
      2020-06-10
      回复
    • 我的名字
      我的名字
      2020-06-10
      服务器上的jar是一样的 ,但是参数的,调用支付的几个参数生成方式是一样的,不应该是在本地跑的起,在服务器上跑不起啊
      2020-06-10
      回复
    查看更多(3)
登录 后发表内容
问题标签