收藏
回答

文档中关于签名的描述有些难以理解

根据文档中说的:


构造待签名串


在运用具体的签名算法前,商户需要先构造待签名串。

第一步,获取 HTTP 请求的方法(GET,POST,PUT 等)

POST

第二步,获取请求的 URL,并去除域名的部分,如果链接带参数,参数值必须进行 URLencode。示例请求的 URL 为

/hk/v3/transactions/micropay


第三步,获取发起请求时的系统当前时间戳,即格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北 京时间 1970 年 01 月 01 日 08 时 00 分 00 秒)起至现在的总秒数,作为请求时间戳。时间戳必须是最新的, 如果时间戳比微信支付服务器时间晚 300 秒,微信支付服务器会不认这个请求并报错,请商户保持自身系 统的时间准确。

1507709906


第四步,生成一个请求随机串,算法可开发者自定义(可调用系统随机数生成函数转化成字符串),建议长度不少于 10 位。

kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg

第五步,获取提交数据

{
"appid": "wx2421b1c4370ec43b",
"transaction_id": "1008450740201411110005820873", "out_trade_no": "1415757673"

}


第六步,按照如下方法,组成待签名串。待签名串共有五行,每行包括一个参数,行尾以\n 结束,包括最后一行,如果内容为空也需要占有换行符。请注意,\n 为换行符(ASCII 编码值为 0x0A)。

HTTP 请求方法\n URL\n请求时间戳\n

请求随机串\n请求报文\n


按照以上规则,请求报文的待签名串为:

POST /hk/v3/transactions/micropay 1507709906

kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg

{
"appid": "wx2421b1c4370ec43b",
"transaction_id": "1008450740201411110005820873", "out_trade_no": "1415757673"

}



其中第二步:

获取请求的 URL,并去除域名的部分,如果链接带参数,参数值必须进行 URLencode。示例请求的 URL 为

/hk/v3/transactions/micropay


如果是 get 请求,url为:


https://api.mch.weixin.qq.com/hk/v3/transactions/out-trade-no/123456?mchid=123456


问题1:

参与签名的url是

/hk/v3/transactions/out-trade-no/123456?mchid=123456 还是

/hk/v3/transactions/out-trade-no/123456 呢?


问题2:

参与签名的请求报文是空的吗?也就是说get请求中不需要把mchid=123456参与到请求报文中去,那么请求报文应该是{} 还是说直接就没有了呢


最后一次编辑于  2019-07-03
回答关注问题邀请回答
收藏

1 个回答

  • Innocence
    Innocence
    2019-07-03

    已经解决。 get请求中 报文中只加一个换行符即可

    2019-07-03
    赞同 2
    回复
登录 后发表内容