Comments (2)
测试代码如下:
func WxCouponNotifySample() {
headers := map[string]string{
"Content-Type": "application/json",
"Wechatpay-Nonce": "ri5SgbZrwKATeGy9qCPTDomESqQibc5T",
"Wechatpay-Timestamp": "1694490266",
"Wechatpay-Serial": "79162C62CE1BCE443D4E362A0BE4B4A1547BF695",
"Wechatpay-Signature": "aJNCrfpCtpBuKEgKkEg44qENHexEcZqqQng3C/P1DiT4bcyXk7+S+A2BmO1kSPlRSnKTNdZvTQfQX/gGElF/07GbKiQjk/tnuEkzOyOpyFIzGGSPP4f4zdPTvIQzbhQRylzTUn6/s8kMMYUi8Qb904CZiMTWWd9KMTaDIkwDDB0+JWqC1OnfnS0DR7LPFfFoGe3+WnT7r/+u8CvPehvFA4PtmcF9b23aMMCI20u7CN/q9RAFrYCagy3H+dBV9VSgHErJgfr79uXB2sdv1frIwK0vu8ktfYCKuqVuXxPOPev0nOZoFMKRj339NHmoC9FmYAzSbsI5YvTNM1dc4hYklA==",
}
body := `{"id":"4fd1ce56-00c0-530b-96b6-a46d09434a27","create_time":"2023-09-12T11:24:22+08:00","resource_type":"encrypt-resource","event_type":"COUPON.USE","summary":"代金券核销通知","resource":{"original_type":"coupon","algorithm":"AEAD_AES_256_GCM","ciphertext":"nRSWMUk1hgyhJzOwSXm2MzRQTEtCH9ALtDf0+GJsGEn/X2VETYwHcOggbJnaDFlXbptAuGaEBIck3B5VAvzPRMyBEzrXkSzaAqNeBlK6ol/R2CH5ZPYSUJnGbWQePEBLQ+a0MYxKlxmU3OUMuLmyj7dbZXWkz+B8rwjNSc+CUatYxJGGyTBXMuc3npt2cS821i6gQJZ83jPDvJw6gLDKHVgRgDNPbb0x6kv+QJeg16FjlplYhI36dbiEnQVOqUyVmRaCPGDAZCQ7othdVdzg5FsCcKXL1KLv53W/t/uyRissdsMochoB4rvmCXCLP09TLNuBSJ/G04laMGIRkgGhzY44+IZQlQzJpiIzlpe5hEgd2FJRuJA+XqUXNcwamvSeUDo29kjfvENexcvYo2aivjDdDhDcu5w8hmeRh9wEKrhwpSfFAGnzr97SptLFOQunHyBC3SvcIfbG46S7lLgWBNXcNDNMD9kGslmJqn1mkFGLgq3d4mSEtPjMCeRYVqvFvu0NP8accOB4ql3KWKSHeOAuTz/3SgbnkHco2/gqGSgTnmDzoaBwC8iL1GUsIymr5p22Hh0+oX6kfTGIAHgplkq2+u9s6J1gkUbeWmNHkftRKbNqgxcBQsctsaq/RECMGby0Oo49pYmtHfxbKGmG2ZdheWlRI4FNfvwvT+DDSXkebOGARdqiZtPOKdXhuGdL/BJ0vWondmRDOaWhJQMddmdrD2kz17TKf5mtnRayksKBNaPNTCoNfqbZq4vD5odnimpYt3bWlLVtppkzDHlUUA==","associated_data":"coupon","nonce":"4K4U2AMXql03"}}`
bodyBuf := &bytes.Buffer{}
bodyBuf.WriteString(body)
req := httptest.NewRequest(http.MethodGet, "http://127.0.0.1", bodyBuf)
for key, value := range headers {
req.Header.Set(key, value)
}
mchPrivateKey, err := loadPrivateKeyFromFile(WXPay_keyFile)
if err != nil {
fmt.Println(err.Error())
return
}
// 1. 使用 `RegisterDownloaderWithPrivateKey` 注册下载器
err = downloader.MgrInstance().RegisterDownloaderWithPrivateKey(context.Background(), mchPrivateKey, WXPay_mchCertificateSerialNumber, WXPay_mchID, WXPay_mchAPIv3Key)
if err != nil {
fmt.Println(err.Error())
return
}
// 2. 获取商户号对应的微信支付平台证书访问器
certificateVisitor := downloader.MgrInstance().GetCertificateVisitor(WXPay_mchID)
handler, err := NewRSANotifyHandler(WXPay_mchAPIv3Key, verifiers.NewSHA256WithRSAVerifier(certificateVisitor))
// cert, err := utils.LoadCertificateWithPath(WXPay_PlatformCertFile)
// // cert, err := utils.LoadCertificate(wechatPayCertificate)
// if err != nil {
// fmt.Println("1", err.Error())
// return
// }
// // handler := NewNotifyHandler(WXPay_mchAPIv3Key, verifiers.NewSHA256WithRSAVerifier(core.NewCertificateMapWithList([]*x509.Certificate{cert})))
// handler, err := NewRSANotifyHandler(
// WXPay_mchAPIv3Key, verifiers.NewSHA256WithRSAVerifier(core.NewCertificateMapWithList([]*x509.Certificate{cert})),
// )
if err != nil {
fmt.Println("2", err.Error())
return
}
// content := new(WXCouponNotifyContent)
content := &WXCouponNotifyContent{}
notifyReq, err := handler.ParseNotifyRequest(context.Background(), req, content)
if err != nil {
fmt.Println("3", err.Error())
return
}
spew.Dump(notifyReq)
}
from wechatpay-go.
invalid notification, err: timestamp=[1694490266] expires; 是指时间戳过期了吗?我拿到线上实时测试下
from wechatpay-go.
Related Issues (20)
- 支付回调异常nvalid notification, err: validate verify fail serial=[***] request-id=[] err=certificate[***] not found in verifier HOT 4
- [回调通知的验签与解密]方法三,希望把文档写清楚。 HOT 6
- [feature request] sdk 支持开启沙箱模式
- 退款回调包解析错误 HOT 2
- wechat pay client err:init client setting err:decrypt downloaded certificate failed: crypto/aes: invalid key size 40 HOT 1
- feature request 什么时候可以有 ecommerce 相关的API
- 退款回调按照issue写法 取不到解密后的数据 HOT 1
- 希望支持V2接口 HOT 1
- 希望支持导入定向用户协议号API的封装
- Feature Request: 在收到支付通知后,如何先获取mch_id而不是先验证签名 HOT 1
- Feature Request:为什么结构体不将数据类型结构化 HOT 1
- 为什么取字符串地址判断,不使用空字符串判断
- 到底怎么对字段加密解密,能不能说清楚,直接告诉我调用哪个函数就完了? HOT 2
- 在证书序列号部分增加格式
- 小程序下单仅提示参数错误,不返回错误的参数与原因
- 小程序下单仅提示参数错误,不返回错误的参数与原因
- 支持 Server Mock HOT 3
- Go SDK 下载不到core/notify
- /v3/ecommerce/account/cancel-applications/media 图片Content-Type非法 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wechatpay-go.