切换主体
This commit is contained in:
parent
6e57c2afe5
commit
00e637d383
|
|
@ -19,7 +19,6 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
@ -297,13 +296,13 @@ func ValidateResponse(
|
||||||
nonce := headers.Get(WechatPayNonce)
|
nonce := headers.Get(WechatPayNonce)
|
||||||
|
|
||||||
// 拒绝过期请求
|
// 拒绝过期请求
|
||||||
timestamp, err := strconv.ParseInt(timestampStr, 10, 64)
|
//timestamp, err := strconv.ParseInt(timestampStr, 10, 64)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
return fmt.Errorf("invalid timestamp: %v", err)
|
// return fmt.Errorf("invalid timestamp: %v", err)
|
||||||
}
|
//}
|
||||||
if time.Now().Sub(time.Unix(timestamp, 0)) > 5*time.Minute {
|
//if time.Now().Sub(time.Unix(timestamp, 0)) > 5*time.Minute {
|
||||||
return errors.New("invalid timestamp")
|
// return errors.New("invalid timestamp")
|
||||||
}
|
//}
|
||||||
|
|
||||||
if serialNo != wechatpayPublicKeyId {
|
if serialNo != wechatpayPublicKeyId {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,7 @@ func marketingFJLF() *marketing2.Marketing {
|
||||||
certificateSerialNo := "46712853869DB0EDAA9B4DF97DADEECD4CCDC85B"
|
certificateSerialNo := "46712853869DB0EDAA9B4DF97DADEECD4CCDC85B"
|
||||||
|
|
||||||
filePath := fmt.Sprintf("%s/cert/wechat/%s", parentDir, mchId)
|
filePath := fmt.Sprintf("%s/cert/wechat/%s", parentDir, mchId)
|
||||||
|
fmt.Printf("filePath: %s\n", filePath)
|
||||||
|
|
||||||
c, err := utils.CreateMchConfig(
|
c, err := utils.CreateMchConfig(
|
||||||
mchId, // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/merchant/4013070756
|
mchId, // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/merchant/4013070756
|
||||||
|
|
@ -98,7 +99,7 @@ func marketingFJLF() *marketing2.Marketing {
|
||||||
fmt.Sprintf("%s/%s", filePath, "wechat_private_key.pem"), // 商户API证书私钥文件路径,本地文件路径
|
fmt.Sprintf("%s/%s", filePath, "wechat_private_key.pem"), // 商户API证书私钥文件路径,本地文件路径
|
||||||
wechatPayPublicKeyId, // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013038816
|
wechatPayPublicKeyId, // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013038816
|
||||||
fmt.Sprintf("%s/%s", filePath, "pub_key.pem"), // 微信支付公钥文件路径,本地文件路径
|
fmt.Sprintf("%s/%s", filePath, "pub_key.pem"), // 微信支付公钥文件路径,本地文件路径
|
||||||
"",
|
"d9af70585b18ae206d981548c766563f",
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|
|
||||||
|
|
@ -101,48 +101,35 @@ func Test_MarketingNotify(t *testing.T) {
|
||||||
"application/json"
|
"application/json"
|
||||||
],
|
],
|
||||||
"Wechatpay-Nonce": [
|
"Wechatpay-Nonce": [
|
||||||
"dF8R9izUJnPBjVLa2cAcCaa7j6QUgitl"
|
"H3Bs5sCbMJZOBLA4w3S6YbN4cCcO9i00"
|
||||||
],
|
],
|
||||||
"Wechatpay-Serial": [
|
"Wechatpay-Serial": [
|
||||||
"PUB_KEY_ID_0116523224422025061800192371001800"
|
"PUB_KEY_ID_0111000406952026032500382251001000"
|
||||||
],
|
],
|
||||||
"Wechatpay-Signature": [
|
"Wechatpay-Signature": [
|
||||||
"SoXIiTRTr6jofXXxGlfO+wyf1IzXFXcsfvEU2EggQfRKFu+8h3TT6QMQ8zIf8dpkkTPexB/3igGiATrR3uZY4ZeOpRrhIFHSJj0Ala0Ri2Nt4zk+MuBQnhybSYJ4Cn3/sHC4i2HFoOSil7OqlSr79hjod3h0tjYVQLtZ4+Cjp0IeMNB4p5qmIuERuhtfRqcyqXik9/uYNYxw8/Wkf1mMnTsBxyXK3iHAoinXNrEiqCCrQHCfnORMYosr7l+Ox8v9u1c8FFt+rt09vKssVCqYaZ/XRala3mjslDRiluFKSuqb7/JO3AxQjBK6M0iSZOlnmiXSIAq+UxJg4cem6wHi+g=="
|
"Kk5uQqZA3pyOV1cfJpRDNEghsG4vE0gBM4XIncJGgsuyG6SNNMbmXUy9TaBRoqylE5EoIYWXaXWOXn7gHW8rOK6bDkiJW2zoZUI6lRrPZSN8Mm1qaIiB42NsfExA+J6H3VqlsUtfyDiXJdsMRe2Y6pwGhj/GDJpb74PlsyaGOuZUfp/Z1Fy4gFZ2hhBx9MVIdIy0aGpU7D096HaDf30YJmdqHX0Cy59bPI9paaOX39kHt0H0WYpOeQEAsCHtVJTXF7betIBAPT1HO0PVZDS9ShO19AhMbislvPRxMEsZ6QYA2TVdyU6qegzkc7vaRiRjDla2V7YSzrmT745OTvPu1g=="
|
||||||
],
|
],
|
||||||
"Wechatpay-Signature-Type": [
|
"Wechatpay-Signature-Type": [
|
||||||
"WECHATPAY2-SHA256-RSA2048"
|
"WECHATPAY2-SHA256-RSA2048"
|
||||||
],
|
],
|
||||||
"Wechatpay-Timestamp": [
|
"Wechatpay-Timestamp": [
|
||||||
"1753690220"
|
"1774490961"
|
||||||
],
|
|
||||||
"X-Forwarded-For": [
|
|
||||||
"121.51.58.168"
|
|
||||||
],
|
|
||||||
"X-Forwarded-Proto": [
|
|
||||||
"https"
|
|
||||||
],
|
|
||||||
"X-Real-Ip": [
|
|
||||||
"121.51.58.168"
|
|
||||||
]
|
]
|
||||||
}`
|
}`
|
||||||
body := `{
|
body := `{
|
||||||
"id": "fd06376a-3e1b-5516-81f8-9b69cf1ba416",
|
"id": "56b4937c-8f32-52e0-880a-828c869fa2c0",
|
||||||
"create_time": "2025-07-28T16:10:15+08:00",
|
"create_time": "2026-03-26T10:09:21+08:00",
|
||||||
"resource_type": "encrypt-resource",
|
"resource_type": "encrypt-resource",
|
||||||
"event_type": "MCHTRANSFER.BILL.FINISHED",
|
"event_type": "COUPON.USE",
|
||||||
"summary": "商家转账单据终态通知",
|
"summary": "代金券核销通知",
|
||||||
"resource": {
|
"resource": {
|
||||||
"original_type": "mch_payment",
|
"original_type": "coupon",
|
||||||
"algorithm": "AEAD_AES_256_GCM",
|
"algorithm": "AEAD_AES_256_GCM",
|
||||||
"ciphertext": "XJBIhrHgbe9NR5q/jLYmZKdT/3xuKm2x7EFu3T52Hj2hjPzarRSA2HCsGTxGojfD+CFyJHIULlL2adqLijAjpi3B6TaYKY4LqhtJ/RYSQtYNxYvBpWX1yLOWe8luJbWxmQvKZxIekFs8lGVgkPBUw0IfEAvJ6jHAGCcgxLIqxgOf6UtGUqxCCNp/V3xy8zCiHB0Mvlw8eXCTuG+ZESJIXvloVGNS79R6iNeqk4kNKRSaV86MNh1KQlmoBxZ4yEshD/vIlMulU3xEc+mM25y8vUS4Ot6pxEpUdUyjwcb9QTwTTnZzm6i+VWYymcItAVBQrvsKBMmqWnPtNXG8++13k3DeO1LyVKURmnWXXT1mImmGx/teN/1xPV5y6nChu/HTbcJGDQy2twuq6TPFbbYlTjZH047z/ZtozJNvGNeh",
|
"ciphertext": "IfJmKJnBYezruwmk+IA+ENQBn13oWiLR1YnYi3bhYaqYreaXwFcFWbnnQjWfh8RDF36S1v+H1eLj0OtiQVDveLJ9vOcCrtr0M8bkV6NpRN7amqcf02vg+xLcs6UiZDedkN353nMnVVY1SAyuJj0AjKTUJrMhPNtxzdPpL/A3bMVCHrw4sqUItAOsDWVyJ5Kb09BEbdNOesmFkCc+Pcqmr554UHXzjQxzYimMpdbZ8OCovEy6JY1jnbxyiduDI7XBiTvxLr5CzLGlxNk1tIHUSrrDnRzUCpFJzNETgcrF3JWvQVAPThelGnTLN/TT3/pyM7/Kz60YNGaSbJTNKOtxbLXopk72x5hlt45fgrueP+RsnVQWmjULJ0AVEVmPNtlHTYRw7WV0cGwwrF7CCSDifYPed9QZPU1+awVtnGb3If53l109HojJiJB7Y0C/ZPX/vH/KLmtUx+10YKIFOo3vYnxEBV5lv4D5ZqXn4gOOtufVH/URYqgRqnzNFqJV6sW2qP6K9AgBhe/BO4AoeDDHG00XP89XFbeHmR2zZ019jBapq92YkvDVtQc2oLr9MWPoHJUhkmApwB6AmOK7ldWJ14P/Fws3/zBzCxVSlQsgLoDyBKm461ZnA6k09c+hffhTutLt89HYv+pqA1nukdTGuCWqPqUgx0AsK5i1CngrBQZJwc7+ylpakpOrX8oulyuA3So65hgMuqgl5dgkR0e8nvjjv7dVl0aRkqTZt3VL7BB1xwGqbvO3aTEuqqPrFQKLpnaY5Gz64dgg6huQFOBnZww=",
|
||||||
"associated_data": "mch_payment",
|
"associated_data": "coupon",
|
||||||
"nonce": "YN3eW5H8mxLs"
|
"nonce": "pV96KsdLrSAd"
|
||||||
}
|
|
||||||
}`
|
}`
|
||||||
|
|
||||||
fmt.Print(header)
|
|
||||||
fmt.Print(body)
|
|
||||||
|
|
||||||
httpHeaders := make(http.Header)
|
httpHeaders := make(http.Header)
|
||||||
if err := json.Unmarshal([]byte(header), &httpHeaders); err != nil {
|
if err := json.Unmarshal([]byte(header), &httpHeaders); err != nil {
|
||||||
fmt.Printf("headers Unmarshal err: %+v\n", err)
|
fmt.Printf("headers Unmarshal err: %+v\n", err)
|
||||||
|
|
@ -151,7 +138,7 @@ func Test_MarketingNotify(t *testing.T) {
|
||||||
|
|
||||||
_, bizContent, err := marketingFJLF().Notify(context.Background(), &httpHeaders, []byte(body))
|
_, bizContent, err := marketingFJLF().Notify(context.Background(), &httpHeaders, []byte(body))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("notify err: %+v\n", err)
|
t.Errorf("notify err: %+v\n", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue