收藏
回答

微信支付服务商JSAPI接口调用出现签名失败

支付参数如下:

<xml><appid>wx43cfd479b5d1bxxx</appid><sub_appid>wxbbb7e3b83c2a8xxx</sub_appid><mch_id>1307103xxx</mch_id><nonce_str>36a4j17ce6nh5mzw1pilh9kqi87j9xvb</nonce_str><sub_mch_id>1625568458</sub_mch_id><body>会员充值</body><out_trade_no>9100-1665996657-charge-</out_trade_no><total_fee>100</total_fee><spbill_create_ip>221.223.96.95</spbill_create_ip><notify_url>https://yun.33jg.cn/addons/lionfish_comshop/notify.php</notify_url><sub_openid>okb7Z5e7yMUy2ika8PZUmTVwtU1s</sub_openid><trade_type>JSAPI</trade_type><sign>1421C31556597C5A618F197BCDF0A933</sign></xml>

返回结果:

<xml><return_code><![CDATA[FAIL]]></return_code>

<return_msg><![CDATA[签名错误,请检查后再试]]></return_msg>

</xml>

试了很多次都这样, 参数配置完全按照文档来的

        'appid' =>'', //服务商关联公众号appid

        'sub_appid'=>$this->appid,//子商户小程序appid

        'mch_id' =>'', //服务商商户号

        'nonce_str' => $this->createNoncestr(), //随机字符串

        'sub_mch_id'=>$this->mch_id,//子商户商户号

        'body' => $this->body,//商品描述

        'out_trade_no'=> $this->out_trade_no,//子商户订单号

        'total_fee' => floatval(0.01 * 100), //总金额 单位 分

        // 'total_fee' => $this->total_fee,

        'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], //终端 IP

        'notify_url' => '', //通知地址  确保外网能正常访问

        'sub_openid' => $this->openid, //子商户用户 openid//这里传子商户小程序openid就行了

        'trade_type' => 'JSAPI'//交易类型

请指点

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

1 个回答

  • Memory
    Memory
    2022-10-17

    签名错误问题可以按照以下几点进行排查:

    1、使用签名检查工具校验签名算法是否有误

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

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

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

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

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


    2022-10-17
    有用 1
    回复 6
    查看更多(1)
登录 后发表内容