132 lines
4.8 KiB
Go
132 lines
4.8 KiB
Go
package main
|
||
|
||
import (
|
||
"context"
|
||
"encoding/json"
|
||
"gitea.cdlsxd.cn/sdk/plugin/instance"
|
||
"gitea.cdlsxd.cn/sdk/plugin/manage"
|
||
"gitea.cdlsxd.cn/sdk/plugin/proto"
|
||
"log"
|
||
)
|
||
|
||
var wechatRedPackConfig = &manage.Config{
|
||
Cmd: "pkg/mac/wechat_redpack_v2.so",
|
||
Tag: "wechat_redpack_v2",
|
||
Version: 1,
|
||
CookieKey: "wechat_redpack_v2",
|
||
CookieValue: "wechat_redpack_v2",
|
||
}
|
||
|
||
type Wechat struct {
|
||
MchID string `json:"mch_id"`
|
||
MchCertificateSerialNumber string `json:"mch_certificate_serial_number"`
|
||
WechatPayPublicKeyID string `json:"wechat_pay_public_key_id"`
|
||
MchApiV3Key string `json:"mch_api_v3_key"`
|
||
}
|
||
|
||
func getWechatRedPackV2Conf() []byte {
|
||
c := &Wechat{
|
||
MchID: "1652322442", // 证书所属商户
|
||
MchCertificateSerialNumber: "2CE0C4F37E960878F354C986E6F1A5342558BABC",
|
||
WechatPayPublicKeyID: "PUB_KEY_ID_0116523224422025061800192371001800",
|
||
MchApiV3Key: "7e6eb4a5ebeed3cf61c693586b11d00b",
|
||
}
|
||
marshal, _ := json.Marshal(c)
|
||
return marshal
|
||
}
|
||
|
||
func WechatRedPackV2Order() {
|
||
|
||
orderExtra := struct {
|
||
Appid string `json:"app_id"`
|
||
NotifyUrl string `json:"notify_url"`
|
||
}{
|
||
Appid: "wxe3bd59243545fa8a",
|
||
NotifyUrl: "https://transfer.86698.cn/notify/v1/wx_1652322442", // 通知url必须为公网可访问的URL,必须为HTTPS,不能携带参数,因此路由设计 “wx_1652322442” 处理
|
||
}
|
||
orderExtraBytes, _ := json.Marshal(orderExtra)
|
||
|
||
productExtra := struct {
|
||
BatchName string `json:"batch_name"`
|
||
BatchRemark string `json:"batch_remark"`
|
||
}{
|
||
BatchName: "LSXD测试",
|
||
BatchRemark: "LSXD测试~",
|
||
}
|
||
productExtraBytes, _ := json.Marshal(productExtra)
|
||
|
||
err := manage.Add(wechatRedPackConfig)
|
||
if err != nil {
|
||
log.Fatalln(err)
|
||
}
|
||
defer manage.Close()
|
||
|
||
request := &proto.OrderRequest{
|
||
Config: getWechatRedPackV2Conf(),
|
||
Order: &proto.OrderRequest_Order{
|
||
OrderNo: "20251106001",
|
||
Account: "ojbqr6HpeWKFy9Sgdx8yCmmeVJiw",
|
||
Quantity: 1,
|
||
Amount: 0.1,
|
||
Extra: orderExtraBytes,
|
||
},
|
||
Product: &proto.OrderRequest_Product{
|
||
ProductNo: "",
|
||
Price: 0.1,
|
||
Type: 0,
|
||
Extra: productExtraBytes,
|
||
},
|
||
}
|
||
res, err := instance.Order(context.Background(), wechatRedPackConfig.Tag, request)
|
||
if err != nil {
|
||
log.Fatalln(err)
|
||
}
|
||
log.Printf("Order res:%+v", res)
|
||
}
|
||
|
||
func WechatRedPackV2Query() {
|
||
|
||
err := manage.Add(wechatRedPackConfig)
|
||
if err != nil {
|
||
log.Fatalln(err)
|
||
}
|
||
defer manage.Close()
|
||
|
||
request := &proto.QueryRequest{
|
||
Config: getWechatRedPackV2Conf(),
|
||
Order: &proto.QueryRequest_Order{
|
||
OrderNo: "19497351672832450564",
|
||
TradeNo: "",
|
||
Account: "",
|
||
Extra: []byte(``),
|
||
},
|
||
}
|
||
res, err := instance.Query(context.Background(), wechatRedPackConfig.Tag, request)
|
||
if err != nil {
|
||
log.Fatalln(err)
|
||
}
|
||
log.Printf("Query res:%+v", res)
|
||
}
|
||
|
||
func WechatRedPackV2Notify() {
|
||
body := []byte(`{"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"}}`)
|
||
hds := `{"Accept":["*/*"],"Cache-Control":["no-cache"],"Connection":["close"],"Content-Length":["775"],"Content-Type":["application/json"],"Pragma":["no-cache"],"User-Agent":["Mozilla/4.0"],"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"]}`
|
||
|
||
if err := manage.Add(wechatRedPackConfig); err != nil {
|
||
log.Fatalln(err)
|
||
}
|
||
defer manage.Close()
|
||
|
||
request := &proto.NotifyRequest{
|
||
Config: getWechatRedPackV2Conf(),
|
||
Queries: nil,
|
||
Headers: []byte(hds),
|
||
Body: body,
|
||
}
|
||
res, err := instance.Notify(context.Background(), wechatRedPackConfig.Tag, request)
|
||
if err != nil {
|
||
log.Fatalln(err)
|
||
}
|
||
log.Printf("Query res:%+v", res)
|
||
}
|