收藏
回答

服务商模式小程序支付签名失败问题,拜求各位帮忙看看问题出在哪儿




开发小程序时调起支付一直提示

{err_code: "2", err_desc: "支付验证签名失败", errMsg: "requestPayment:fail"}

我是以服务商模式发起的支付,统一下单什么都成功了,但是一到调起支付的时候就验证签名失败。我服务端返回的6个参数如下:

Array
(
   [appId] => wxc21534f70356ba05  //这里是服务商的appid,不是小程序的
   [nonceStr] => bangkkwrslpveua69dek54k344r5coz7
   [package] => prepay_id=wx201710101537105ea7593fcb0689926766
   [signType] => MD5
   [timeStamp] => 1507621030
   [paySign] => E5C4A3BC291A45EDBD3FF131E93E5280
)

根据服务商模式的小程序支付文档:服务商模式下应为当前调起支付的小程序的appid,貌似问题就出在这个这个appid上,而在我的小程序是第三方平台的模板小程序,特约商户授权后的extAppid:为"wx1ce0dfce6268ceac",也就是当前小程序的appid。

附上统一下单的整个过程的参数,烦请各位帮忙看看问题是出在哪儿。

统一下单参数:
{
   "appid":"wxc21534f70356ba05",//服务商appid
   "attach":"",
   "body":"asdfasdfasdfa",
   "goods_tag":"",
   "mch_id":"1481143442",//服务商mch_id
   "nonce_str":"sb0q2rzoxu4e40kl5y9lf9pqzhzaw03m",
   "notify_url":"https://pay.zsmart.me/wxpay/notify",
   "out_trade_no":"2017092209341118572",
   "spbill_create_ip":"220.172.54.174",
   "sub_appid":"wx1ce0dfce6268ceac",//授权的小程序
   "sub_mch_id":"1489086632",//特约商户号
   "sub_openid":"obQb60MPr_xxtiLNeg6iLZ-Itahg",//与sub_appid对应的sub_openid
   "time_expire":"20171010154710",
   "time_start":"20171010153710",
   "total_fee":"7000",
   "trade_type":"JSAPI",
   "sign":"51CD7C77D29515FE007B9E5ADD1D8DBD"
}
统一下单成功返回预付单:
Array
(
   [appid] => wxc21534f70356ba05
   [mch_id] => 1481143442
   [nonce_str] => MXP4KyE43Jqwufgk
   [prepay_id] => wx201710101537105ea7593fcb0689926766
   [result_code] => SUCCESS
   [return_code] => SUCCESS
   [return_msg] => OK
   [sign] => FC4576C71554FB56512C2E65C91882B7
   [sub_appid] => wx1ce0dfce6268ceac
   [sub_mch_id] => 1489086632
   [trade_type] => JSAPI
)
预付单再次签名后的jsApiParamter
Array
(
   [appId] => wxc21534f70356ba05 //为什么
   [nonceStr] => bangkkwrslpveua69dek54k344r5coz7
   [package] => prepay_id=wx201710101537105ea7593fcb0689926766
   [signType] => MD5
   [timeStamp] => 1507621030
   [paySign] => E5C4A3BC291A45EDBD3FF131E93E5280
)

拜托拜托

最后一次编辑于  2017-10-10
回答关注问题邀请回答
收藏

12 个回答

  • 波
    2018-01-10

    服务商模式的小程序支付步骤,1,在后台绑定小程序appid与子商户号的关联关系(银行服务商下的特约商户由银行配置)2.统一下单的时候sub_appid传小程序已关联的appid;3. 获取到prepayid后, 再根据支付文档说明重新生成一次签名,参与签名的字段appId(小程序的appid),timeStamp,nonceStr,packagesignType(详细说明见支付文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_sl_api.php?chapter=7_7&index=5), 将这5个字段+生成的sign,6个字段返回给小程序端调起支付

    2018-01-10
    有用
    回复
  • sweetyจุ๊บ😄👌
    sweetyจุ๊บ😄👌
    2018-01-10

    哪几个参数呢?是那5个吗?

    2018-01-10
    有用
    回复
  • Fish
    Fish
    2018-01-10

    参数,注意参数吗,一个个比对。

    我就因为参数名,一个微小的差异,搞了很久。。。。。。

    2018-01-10
    有用
    回复
  • sweetyจุ๊บ😄👌
    sweetyจุ๊บ😄👌
    2018-01-09

    nonceStr,packagesignType,timeStamp和sub_appid再次生成一个签名,是这种意思吗@熊旭

    2018-01-09
    有用
    回复
  • .
    .
    2017-12-31

    请问下最后一个签名是appId 和sub_appid 都要传还是只传sub_appid

    2017-12-31
    有用
    回复
  • 熊旭
    熊旭
    2017-12-12

    sub_appid 就是小程序的appId

    2017-12-12
    有用
    回复
  • Fish
    Fish
    2017-12-11

    sub_appid 是个什么?  同样的问题,在线等求解~

    2017-12-11
    有用
    回复
  • 670
    670
    2017-10-10

    我也不懂了,官方给出的文档是用小程序的appId

    2017-10-10
    有用
    回复
  • 熊旭
    熊旭
    2017-10-10

    换了的,换成小程序的APPID:wx1ce0dfce6268ceac依然是一样 的结果,感觉问题是不是出在统一下单的时候的参数配置配置上呢。

    2017-10-10
    有用
    回复
  • 670
    670
    2017-10-10
    Array
    (
       [appId] => wxc21534f70356ba05  换成小程序的APPID试试
       [nonceStr] => bangkkwrslpveua69dek54k344r5coz7
       [package] => prepay_id=wx201710101537105ea7593fcb0689926766
       [signType] => MD5
       [timeStamp] => 1507621030
       [paySign] => E5C4A3BC291A45EDBD3FF131E93E5280
    )


    2017-10-10
    有用
    回复

正在加载...

登录 后发表内容