From cb3c0def58bf1a6811c2ea42a3d8d3ade49d764e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AD=90=E9=93=AD?= Date: Mon, 2 Sep 2024 13:59:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BA=A2=E5=8C=85=20?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8A=A0=E8=BD=BD=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/wechat_redpack.go | 31 +++++++++++++++++-- .../internal/wechat_redpack_test.go | 8 +++-- utils/wechat/client.go | 21 ++++++++----- 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/cmd/wechat_redpack.go b/cmd/wechat_redpack.go index a6134fe..e7e3aff 100644 --- a/cmd/wechat_redpack.go +++ b/cmd/wechat_redpack.go @@ -33,13 +33,40 @@ func wechatRedPack() { if err != nil { log.Fatalln(err) } + wechatRedPackQuery() +} + +func wechatRedPackOrder() { + req := &proto.OrderRequest{ + Config: getWechatRedPackConf(), + Order: &proto.OrderRequest_Order{ + OrderNo: "240403164049635931", + Account: "oO3vO5AxRWgTjmMD38FTvnB5Rq6o", + Amount: 0.01, + Quantity: 1, + Extra: []byte(`{"app_id":"wxbfcf9fd93f390c3a", "out_detail_no":"123456789"}`), + }, + Product: &proto.OrderRequest_Product{ + ProductNo: "", + Extra: []byte(`{"batch_name":"13100720242", "batch_remark":"stock_creator_mchid"}`), + }, + } + res, err := instance.Order(context.Background(), wechatRedPackConf.Tag, req) + if err != nil { + log.Fatalln(err) + } + log.Printf("Order res:%+v", res) +} + +func wechatRedPackQuery() { + //{status:ING order_no:"240403164049635931" trade_no:"131000508038701499912952024090256259261117" message:"成功"} queryRequest := &proto.QueryRequest{ Config: getWechatRedPackConf(), Order: &proto.QueryRequest_Order{ OrderNo: "", - TradeNo: "202408211517304392270563", + TradeNo: "131000508038701499912952024090256259261117", Account: "", - Extra: []byte(`{"out_detail_no":"20240821151730439227056399842027"}`), + Extra: []byte(`{"out_detail_no":"123456789"}`), }, } resQuery, err := instance.Query(context.Background(), wechatRedPackConf.Tag, queryRequest) diff --git a/plugins/wechat_redpack/internal/wechat_redpack_test.go b/plugins/wechat_redpack/internal/wechat_redpack_test.go index 8d869db..bafc06f 100644 --- a/plugins/wechat_redpack/internal/wechat_redpack_test.go +++ b/plugins/wechat_redpack/internal/wechat_redpack_test.go @@ -26,9 +26,11 @@ func TestOrder(t *testing.T) { request := &proto.OrderRequest{ Config: config(), Order: &proto.OrderRequest_Order{ - OrderNo: "240403164049635931", - Account: "oO3vO5AxRWgTjmMD38FTvnB5Rq6o", - Extra: []byte(`{"app_id":"13100720242", "out_detail_no":"stock_creator_mchid"}`), + OrderNo: "240403164049635931", + Account: "oO3vO5AxRWgTjmMD38FTvnB5Rq6o", + Quantity: 1, + Amount: 0.01, + Extra: []byte(`{"app_id":"13100720242", "out_detail_no":"stock_creator_mchid"}`), }, Product: &proto.OrderRequest_Product{ ProductNo: "", diff --git a/utils/wechat/client.go b/utils/wechat/client.go index 4415dfd..2860af6 100644 --- a/utils/wechat/client.go +++ b/utils/wechat/client.go @@ -31,18 +31,23 @@ func newClient(ctx context.Context, c *Server) (*core.Client, error) { if err != nil { return nil, fmt.Errorf("MchID[%s] load merchant private key error:%v", c.MchID, err) } - opts := []core.ClientOption{ - option.WithWechatPayAutoAuthCipher(c.MchID, c.MchCertificateSerialNumber, mchPrivateKey, c.MchAPIv3Key), - } + var client *core.Client // 微信支付平台配置 - payCert, err := utils.LoadCertificateWithPath(fmt.Sprintf("%s/%s", filePath, "wechat_cert.pem")) + wechatPayCertificate, err := utils.LoadCertificateWithPath(fmt.Sprintf("%s/%s", filePath, "wechat_cert.pem")) if err != nil { - return nil, fmt.Errorf("MchID[%s] load pay certificate error:%v", c.MchID, err) + return nil, fmt.Errorf("平台证书有误:%v", err) } - opts = append(opts, option.WithWechatPayCertificate([]*x509.Certificate{payCert})) - client, err := core.NewClient(ctx, opts...) + client, err = core.NewClient( + ctx, + option.WithMerchantCredential( + c.MchID, + c.MchCertificateSerialNumber, + mchPrivateKey, + ), + option.WithWechatPayCertificate([]*x509.Certificate{wechatPayCertificate}), + ) if err != nil { - return nil, fmt.Errorf("MchID[%s] %v", c.MchID, err) + return nil, fmt.Errorf("创建 Client 失败:%v", err) } return client, nil }