wechatpay-apiv3 / wechatpay-go

微信支付 APIv3 的官方 Go Library
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/index.shtml
Apache License 2.0
1.03k stars 141 forks source link

救命,验签不通过怎么办。 #141

Closed klarkxy closed 1 year ago

klarkxy commented 1 year ago

invalid notification, err: validate verify fail serial=[4996xxxxxxx] request-id=[|e8cdaxxxxxxxxxx] err=verify signature with public key err:crypto/rsa: verification error, request: &{Method:POST URL:/notify/wechat Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Accept:[*/*] Cache-Control:[no-cache] Connection:[Keep-Alive, Keep-Alive] Content-Length:[911] Content-Type:[application/json] Pragma:[no-cache] Request-Id:[|e8cda1ea-4axxxxxxxxxxx] User-Agent:[Mozilla/4.0] Wechatpay-Nonce:[XCOEbSzzSIxxxxxxxxxxxxx] Wechatpay-Serial:[4996xxxxxxxxxxxxxxxxxxxxxxxx] Wechatpay-Signature:[AIAY+VBDWZbJ5jWW/jT1Nuw/5H4xxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Wechatpay-Signature-Type:[WECHATPAY2-SHA256-RSA2048] Wechatpay-Timestamp:[1668493026]] Body:{Reader:{"id":"0e007367-4832-5eb0-805c-9dc0a58cd723","create_time":"2022-11-15T14:16:48+08:00","event_type":"TRANSACTION.SUCCESS","resource_type":"encrypt-resource","resource":{"algorithm":"AEAD_AES_256_GCM","ciphertext":"Nl+EL6JBe6dGzSbazxHXVL/8vMJAW3vRNe1JjOPakQjGYfmd1gt/exIYenbpB21AUcgHAltQXmHw50VZvIE334Y6rfQCgs7RRGt0QCl59CKv5l422mVrNL57AAIpWYuDVyFPD716Qm0gsUfY+4lUYsv/QlSWYhtywFozop9VVdIkTGp5tDxUpElFIw93cLz6ZiBmaBx3eYqvsAc16kHN9daY5jyK2D4KNlegrjVyB2iQTylFq4O7FoHY5Fsik9YwEsLsmocTM5aJ3ebnzCrIGp/D7mMUnGo7wT9P2msUZyy3lgpB7cesNeexUFmhaFsSwWTSBUzsCVrBN8+usdICJz0C+lMlSpMmjPwvR0tuy25iGEsmY9GdV5+I5f+Il6Vif1xkAOr/vtjVx0sR7GXrACFykp5yJHJQOWlakENBM8EZC47KLNU1XGMozBWvKvkmvs8rJsjMU+UdDrmJY1VM9pnw0KE4X5ZyLglWfqBG1WE7Z2fWw+BW4m+dNrIQvcBnlFHlkP1q8tfJ6l+w5hz5RKWzubh/4H9ps74prVNgoH7OJqYWA7MMpmgZ3jFeJBZ1wjjCGA==","associated_data":"transaction","original_type":"transaction","nonce":"V5Pk3cJupyWi"},"summary":"支付成功"}} GetBody:<nil> ContentLength:911 TransferEncoding:[] Close:false Host:infinite.hero.heihuyouxi.com Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr:172.17.16.4:56739 RequestURI:/notify/wechat TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc000247880}

中间经过了本机的中转,把head和body都转发过来了。 image 初始化 image

xy-peng commented 1 year ago

中转的时候,有可能修改了报文数据吗?例如解析之后重新生成JSON。

klarkxy commented 1 year ago

没有的。中转的地方什么就是直接转发的。 之前曾经有段时间我记忆中是可以用的,但是不是这个ID。 换了新的ID和Key之后搞不明白了

xy-peng commented 1 year ago

没有的。中转的地方什么就是直接转发的。

你得查查你们的中转服务了,必须原文转发。我看到发送的报文,跟你日志中的报文是不一样的,字段顺序变化了。这意味着,数据被“修改”了,自然验签不过了。

klarkxy commented 1 year ago

没有的。中转的地方什么就是直接转发的。

你得查查你们的中转服务了,必须原文转发。我看到发送的报文,跟你日志中的报文是不一样的,字段顺序变化了。这意味着,数据被“修改”了,自然验签不过了。

感谢,已解决