收藏
回答

JSAPI调用申请退款

退款结果通知会报一个could not find sign value from wx back data, data <xml>XXXXX</xml>的错误

xml中的内容是正常返回的结果

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

3 个回答

  • Memory
    Memory
    2021-11-15

    退款结果对重要的数据进行了加密,商户需要用商户密钥进行解密后才能获得结果通知的内容,返回内容没有签名,不需要进行验签操作

    解密步骤如下:

    (1)对加密串A做base64解码,得到加密串B

    (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 )

    (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding)


    这里是返回示例,req_info为加密内容
    <xml>
    <return_code>SUCCESS</return_code>
       <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
       <mch_id><![CDATA[10000100]]></mch_id>
       <nonce_str><![CDATA[TeqClE3i0mvn3DrK]]></nonce_str>
       <req_info><![CDATA[T87GAHG17TGAHG1TGHAHAHA1Y1CIOA9UGJH1GAHV871HAGAGQYQQPOOJMXNBCXBVNMNMAJAA]]></req_info>
    </xml>
    


    req_info解密后的示例:
    <root>
    <out_refund_no><![CDATA[131811191610442717309]]></out_refund_no>
    <out_trade_no><![CDATA[71106718111915575302817]]></out_trade_no>
    <refund_account><![CDATA[REFUND_SOURCE_RECHARGE_FUNDS]]></refund_account>
    <refund_fee><![CDATA[3960]]></refund_fee>
    <refund_id><![CDATA[50000408942018111907145868882]]></refund_id>
    <refund_recv_accout><![CDATA[支付用户零钱]]></refund_recv_accout>
    <refund_request_source><![CDATA[API]]></refund_request_source>
    <refund_status><![CDATA[SUCCESS]]></refund_status>
    <settlement_refund_fee><![CDATA[3960]]></settlement_refund_fee>
    <settlement_total_fee><![CDATA[3960]]></settlement_total_fee>
    <success_time><![CDATA[2018-11-19 16:24:13]]></success_time>
    <total_fee><![CDATA[3960]]></total_fee>
    <transaction_id><![CDATA[4200000215201811190261405420]]></transaction_id>
    </root>
    


    2021-11-15
    有用 1
    回复 3
    • C
      C
      2021-11-15
      你好,返回结果中是可以正常解密的。
      请问这个返回结果集中的报错是写代码时自身代码的业务逻辑进行的验签报错,还是因api版本问题导致的验签问题呢?
      2021-11-15
      回复
    • Memory
      Memory
      2021-11-15回复C
      自身代码的问题
      2021-11-15
      回复
    • Memory
      Memory
      2021-11-15回复C
      因为这里就不需要验证签名
      2021-11-15
      回复
  • 北望沣渭
    北望沣渭
    2021-11-15

    因为通知XML加密了,没有md5(密钥)将无法解密加密字段,安全性有得保证,所以被设计成无需sign验签了。

    2021-11-15
    有用
    回复
  • C
    C
    2021-11-15

    返回结果如图

    2021-11-15
    有用
    回复
登录 后发表内容