voucher/test/bank_multi_activity_test.go

160 lines
7.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package test
import (
"context"
"encoding/base64"
"encoding/json"
"fmt"
"net/http"
"testing"
"time"
"voucher/internal/biz/bo"
"voucher/internal/pkg/helper"
)
func Test_MarketingSend(t *testing.T) {
tests := []struct {
name string
}{
{
name: "给指定用户报名多笔立减活动",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
MarketingSend()
})
}
}
func Test_MarketingQuery(t *testing.T) {
tests := []struct {
name string
appId, openId, couponId string
}{
{
name: "查询绑定多笔立减活动的代金券详情", // 查询的商户非创建方商户 查询商户要为创建方商户
appId: "wx619991cc795028f5",
openId: "oSNb4ftgnWC22Z0cWTjsQebdr2Yk",
couponId: "139923450432",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
resp, err := MarketingQuery(tt.appId, tt.openId, tt.couponId)
if err != nil {
t.Errorf("MarketingQuery() error = %v", err)
return
}
t.Logf("MarketingQuery() = %v", resp)
})
}
// 合单订单就是没有核销回调通知的
// {"code":"APPID_MCHID_NOT_MATCH","message":"商户号与AppID不匹配"}
// APPID_MCHID_NOT_MATCH 商户号与AppID不匹配 调用接口的商户号需与接口传入的AppID有绑定关系
//openid不是自己的appid下的喔这也能查询到吗”
//不行的需要是在自己appid下的才能查到
}
func Test_QixingNotifyDataDecodeString(t *testing.T) {
content := `eyJzdW1tYXJ5Ijoi5Luj6YeR5Yi45qC46ZSA6YCa55+lIiwiYXNzb2NpYXRlZF9kYXRhIjoiY291cG9uIiwiZXZlbnRfdHlwZSI6IkNPVVBPTi5VU0UiLCJjcmVhdGVfdGltZSI6IjIwMjUtMTItMjRUMTk6NDg6NDYrMDg6MDAiLCJwbGFpbl90ZXh0Ijp7InN0b2NrX2NyZWF0b3JfbWNoaWQiOiIxNzE1MzQ5NTc4Iiwic3RvY2tfaWQiOiIyMTQzODg1MSIsImNvdXBvbl9pZCI6IjE0NDQ2MTIyOTg5MCIsInNpbmdsZWl0ZW1fZGlzY291bnRfb2ZmIjpudWxsLCJkaXNjb3VudF90byI6bnVsbCwiY291cG9uX25hbWUiOiLpk7booYzljaHlpJrnrJTnq4vlh48iLCJzdGF0dXMiOiJVU0VEIiwiZGVzY3JpcHRpb24iOiIiLCJjcmVhdGVfdGltZSI6IjIwMjUtMTItMThUMTU6NDQ6NTIrMDg6MDAiLCJjb3Vwb25fdHlwZSI6Ik5PUk1BTCIsIm5vX2Nhc2giOmZhbHNlLCJhdmFpbGFibGVfYmVnaW5fdGltZSI6IjIwMjUtMTItMThUMDA6MDA6MDArMDg6MDAiLCJhdmFpbGFibGVfZW5kX3RpbWUiOiIyMDI2LTAxLTE2VDIzOjU5OjU5KzA4OjAwIiwic2luZ2xlaXRlbSI6ZmFsc2UsIm5vcm1hbF9jb3Vwb25faW5mb3JtYXRpb24iOnsiY291cG9uX2Ftb3VudCI6MzAwLCJ0cmFuc2FjdGlvbl9taW5pbXVtIjoxODAwfSwiY29uc3VtZV9pbmZvcm1hdGlvbiI6eyJjb25zdW1lX3RpbWUiOiIyMDI1LTEyLTI0VDE5OjQ4OjQ2KzA4OjAwIiwiY29uc3VtZV9tY2hpZCI6IjEyNzQ5Mzg2MDEiLCJ0cmFuc2FjdGlvbl9pZCI6IjQyMDAwMDI5MTcyMDI1MTIyNDgzODQ2MTg0MzgiLCJjb25zdW1lX2Ftb3VudCI6MzAwLCJnb29kc19kZXRhaWwiOm51bGx9fSwicmVzb3VyY2VfdHlwZSI6ImVuY3J5cHQtcmVzb3VyY2UiLCJvcmlnaW5hbF90eXBlIjoiY291cG9uIiwiaWQiOiI4NzkxZTMyZS0zYjFiLTViNDktYTNiNi1mYzY0YTc5NTVlZjEifQ==`
b, err := base64.StdEncoding.DecodeString(content)
if err != nil {
t.Errorf("base64.StdEncoding.DecodeString() error = %v", err)
return
}
t.Log(string(b))
}
func Test_QixingNotifyData(t *testing.T) {
//wxBody := `{"id":"4ab2699d-e91d-5460-9810-25fd6d4c69a5","create_time":"2025-12-08T17:54:24+08:00","resource_type":"encrypt-resource","event_type":"COUPON.USE","summary":"代金券核销通知","original_type":"coupon","associated_data":"coupon","plain_text":{"stock_creator_mchid":"1652465541","stock_id":"21386484","coupon_id":"142388354994","coupon_name":"银行卡多笔立减","description":"","status":"SENDED","create_time":"2025-12-08T17:50:48+08:00","coupon_type":"NORMAL","no_cash":false,"singleitem":false,"business_type":"","consume_information":{"consume_time":"2025-12-08T17:54:24+08:00","consume_mchid":"1274938601","transaction_id":"4200002996202512083063051834","consume_amount":16}}}`
wxBody := `{"id":"4ab2699d-e91d-5460-9810-25fd6d4c69a6","create_time":"2025-12-08T17:54:24+08:00","resource_type":"encrypt-resource","event_type":"COUPON.USE","summary":"代金券核销通知","original_type":"coupon","associated_data":"coupon","plain_text":{"stock_creator_mchid":"1652465541","stock_id":"21386484","coupon_id":"118758145502","coupon_name":"银行卡多笔立减","description":"","status":"USED","create_time":"2025-12-08T17:50:48+08:00","coupon_type":"NORMAL","no_cash":false,"singleitem":false,"business_type":"","consume_information":{"consume_time":"2025-12-08T17:54:24+08:00","consume_mchid":"1274938601","transaction_id":"4200002996202512083063051834","consume_amount":16}}}`
t.Log(len(wxBody))
content := base64.StdEncoding.EncodeToString([]byte(wxBody))
ciphertext := helper.Md5(content + "DrY1zLkOH01q0sN66vrmkdpbWsyb41ho")
req := bo.QiXingRequestBo{
Content: content,
Timestamp: time.Now().UnixMilli(),
Ciphertext: ciphertext,
}
b, _ := json.Marshal(req)
t.Log(string(b))
// {"content":"base64(微信通知json对象数据)","timestamp":1765447477945,"ciphertext":"md5(base64(微信通知json对象数据)+key)"}
//t.Logf(`{"content":"%s","timestamp":122345677890,"ciphertext":"%s"}`, content, ciphertext)
}
func Test_MarketingNotify(t *testing.T) {
header := `{
"Content-Type": [
"application/json"
],
"Wechatpay-Nonce": [
"dF8R9izUJnPBjVLa2cAcCaa7j6QUgitl"
],
"Wechatpay-Serial": [
"PUB_KEY_ID_0116523224422025061800192371001800"
],
"Wechatpay-Signature": [
"SoXIiTRTr6jofXXxGlfO+wyf1IzXFXcsfvEU2EggQfRKFu+8h3TT6QMQ8zIf8dpkkTPexB/3igGiATrR3uZY4ZeOpRrhIFHSJj0Ala0Ri2Nt4zk+MuBQnhybSYJ4Cn3/sHC4i2HFoOSil7OqlSr79hjod3h0tjYVQLtZ4+Cjp0IeMNB4p5qmIuERuhtfRqcyqXik9/uYNYxw8/Wkf1mMnTsBxyXK3iHAoinXNrEiqCCrQHCfnORMYosr7l+Ox8v9u1c8FFt+rt09vKssVCqYaZ/XRala3mjslDRiluFKSuqb7/JO3AxQjBK6M0iSZOlnmiXSIAq+UxJg4cem6wHi+g=="
],
"Wechatpay-Signature-Type": [
"WECHATPAY2-SHA256-RSA2048"
],
"Wechatpay-Timestamp": [
"1753690220"
],
"X-Forwarded-For": [
"121.51.58.168"
],
"X-Forwarded-Proto": [
"https"
],
"X-Real-Ip": [
"121.51.58.168"
]
}`
body := `{
"id": "fd06376a-3e1b-5516-81f8-9b69cf1ba416",
"create_time": "2025-07-28T16:10:15+08:00",
"resource_type": "encrypt-resource",
"event_type": "MCHTRANSFER.BILL.FINISHED",
"summary": "商家转账单据终态通知",
"resource": {
"original_type": "mch_payment",
"algorithm": "AEAD_AES_256_GCM",
"ciphertext": "XJBIhrHgbe9NR5q/jLYmZKdT/3xuKm2x7EFu3T52Hj2hjPzarRSA2HCsGTxGojfD+CFyJHIULlL2adqLijAjpi3B6TaYKY4LqhtJ/RYSQtYNxYvBpWX1yLOWe8luJbWxmQvKZxIekFs8lGVgkPBUw0IfEAvJ6jHAGCcgxLIqxgOf6UtGUqxCCNp/V3xy8zCiHB0Mvlw8eXCTuG+ZESJIXvloVGNS79R6iNeqk4kNKRSaV86MNh1KQlmoBxZ4yEshD/vIlMulU3xEc+mM25y8vUS4Ot6pxEpUdUyjwcb9QTwTTnZzm6i+VWYymcItAVBQrvsKBMmqWnPtNXG8++13k3DeO1LyVKURmnWXXT1mImmGx/teN/1xPV5y6nChu/HTbcJGDQy2twuq6TPFbbYlTjZH047z/ZtozJNvGNeh",
"associated_data": "mch_payment",
"nonce": "YN3eW5H8mxLs"
}
}`
fmt.Print(header)
fmt.Print(body)
httpHeaders := make(http.Header)
if err := json.Unmarshal([]byte(header), &httpHeaders); err != nil {
fmt.Printf("headers Unmarshal err: %+v\n", err)
return
}
bizContent, err := marketingFJLF().Notify(context.Background(), &httpHeaders, []byte(body))
if err != nil {
fmt.Printf("notify err: %+v\n", err)
return
}
fmt.Printf("bizContent: %+v\n", bizContent)
}