From 6099e5bec70cf5f0f16d68e5138748db44f1bf46 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Tue, 21 Jan 2025 20:00:18 +0800 Subject: [PATCH] fix wx payment --- app/user/cmd/api/desc/pay/pay.api | 3 +- app/user/cmd/api/etc/main.dev.yaml | 10 ++-- app/user/cmd/api/etc/main.yaml | 14 ++--- .../cmd/api/etc/merchant/apiclient_key.pem | 52 +++++++++---------- app/user/cmd/api/etc/merchant/pub_key.pem | 9 ++++ app/user/cmd/api/internal/config/config.go | 2 + .../api/internal/logic/pay/paymentlogic.go | 16 ++++-- .../api/internal/logic/user/wxh5authlogic.go | 14 ++--- .../api/internal/service/wechatpayService.go | 50 +++++++++++++----- .../cmd/api/internal/svc/servicecontext.go | 5 +- app/user/cmd/api/internal/types/types.go | 5 +- 11 files changed, 115 insertions(+), 65 deletions(-) create mode 100644 app/user/cmd/api/etc/merchant/pub_key.pem diff --git a/app/user/cmd/api/desc/pay/pay.api b/app/user/cmd/api/desc/pay/pay.api index aa20738..2d80db1 100644 --- a/app/user/cmd/api/desc/pay/pay.api +++ b/app/user/cmd/api/desc/pay/pay.api @@ -13,7 +13,8 @@ type ( PayMethod string `json:"pay_method"` } PaymentResp { - prepayID string `json:"prepay_id"` + prepayData interface{} `json:"prepay_data"` + prepayId string `json:"prepay_id"` OrderID int64 `json:"order_id"` } ) diff --git a/app/user/cmd/api/etc/main.dev.yaml b/app/user/cmd/api/etc/main.dev.yaml index df50bdb..c18369d 100644 --- a/app/user/cmd/api/etc/main.dev.yaml +++ b/app/user/cmd/api/etc/main.dev.yaml @@ -36,10 +36,12 @@ Alipay: NotifyUrl: "https://6m4685017o.goho.co/api/v1/pay/alipay/callback" ReturnURL: "http://localhost:5678/inquire" Wxpay: - AppID: "1682635136" - MchID: "1682635136" - MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61" - MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f" + AppID: "wxa581992dc74d860e" + MchID: "1704330055" + MchPublicKeyID: "PUB_KEY_ID_0117043300552025010900447500000187" + MchPublicKeyPath: "etc/merchant/pub_key.pem" + MchCertificateSerialNumber: "434FE8C0FC8CFEF28B76B3EF35DD2297E977A3CB" + MchApiv3Key: "h6Jk9Qm7W1pXyFzA4bL2V8CzH0K3wDqw" MchPrivateKeyPath: "etc/merchant/apiclient_key.pem" NotifyUrl: "https://6m4685017o.goho.co/api/v1/pay/wechat/callback" RefundNotifyUrl: "https://6m4685017o.goho.co/api/v1/wechat/refund_callback" diff --git a/app/user/cmd/api/etc/main.yaml b/app/user/cmd/api/etc/main.yaml index 09bbeda..8edd441 100644 --- a/app/user/cmd/api/etc/main.yaml +++ b/app/user/cmd/api/etc/main.yaml @@ -38,13 +38,15 @@ Alipay: NotifyUrl: "https://www.tianyuandb.com/api/v1/pay/alipay/callback" ReturnURL: "https://www.tianyuandb.com/report" Wxpay: - AppID: "1682635136" - MchID: "1682635136" - MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61" - MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f" + AppID: "wxa581992dc74d860e" + MchID: "1704330055" + MchPublicKeyID: "PUB_KEY_ID_0117043300552025010900447500000187" + MchPublicKeyPath: "etc/merchant/pub_key.pem" + MchCertificateSerialNumber: "434FE8C0FC8CFEF28B76B3EF35DD2297E977A3CB" + MchApiv3Key: "h6Jk9Qm7W1pXyFzA4bL2V8CzH0K3wDqw" MchPrivateKeyPath: "etc/merchant/apiclient_key.pem" - NotifyUrl: "https://app.tianyuandb.com/api/v1/pay/wechat/callback" - RefundNotifyUrl: "https://app.tianyuandb.com/api/v1/wechat/refund_callback" + NotifyUrl: "https://www.tianyuandb.com/api/v1/pay/wechat/callback" + RefundNotifyUrl: "https://www.tianyuandb.com/api/v1/wechat/refund_callback" Applepay: ProductionVerifyURL: "https://api.storekit.itunes.apple.com/inApps/v1/transactions/receipt" SandboxVerifyURL: "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/receipt" diff --git a/app/user/cmd/api/etc/merchant/apiclient_key.pem b/app/user/cmd/api/etc/merchant/apiclient_key.pem index 246c1df..1501ef0 100644 --- a/app/user/cmd/api/etc/merchant/apiclient_key.pem +++ b/app/user/cmd/api/etc/merchant/apiclient_key.pem @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCP6fWm1vXXybH -m3Ne6PjacGrN2+iMrzWZlzdHCZ31udDPqSUYaZ+78b441KZK/CJFQWeSJ/1h//A+ -BGsQDKvE/fj2QzN1KkOuQ8WJXNGpixE5uu5bv/QTN/ukurGdA1aO2aFCANumlOmB -HkB/B2so57ii8iQQjwK2xM4r3oOU/IfcFGKL+9/QjLGFFp9PJXCDBCgrxxlZGaj1 -3wowlfVOzlaX94gemQsCYVkuAFIYMAnFHs9cKNZQIU80somW/yy2Gy38N6n7NnbD -nvFSaq4GoDROqRgKbRZ5e706d/p7A3aS/2oRqq1jomUIugK8g++LmoHFTgfhfQkI -v1aG/nPzAgMBAAECggEAD2RN31J2J42xm/V0YdviBCUOQXugZK1peN8jkSxw6Myt -gBbuCo4sCw9vvD8VYjGyYXx6QXmLuV03YyKkfSQT5EsflBvlEu6jaEaUe3rwXhfX -6JQoWPrP00oHVZk5g7CFBlK2VW2N+hgonIOSJr6mvhoGZlr7gphiZasYjx9Vm9N3 -Pbnfru5ttzplYNniwH3DF6ph8VmdbD1nnbWSKLXvHCsXQT2wBcnsIagIH3vyq6K1 -pc5abWsQJrixOPebpI8jD5w0HxHAqVLx58H/OC2zW/roAw1WS2AkueJ1j7dQ7Z0C -mc9Xexz5gcAP0nMAQv+LP7iYqsa/niFhfcTFWfdxkQKBgQD5JkKNmInU2/IVYCwO -c483MCSv1+MnbRXlb7vut8T0IupHTU6hCge6C3q3HsjbKSBn8bRChtPUzvw9JFxK -QWKiQqQDPLDJ08AIKhfQD2JiLtoikkZN0bF6OTL+Soney1yGx51mlfHM194+PcCJ -jF7iWdMVbcBwHbgydNxxIS5cKQKBgQDHlvQ4lw6gvLILpGK494/vNYSJP/Jmd66V -3oSGYi84YRKTSwH4NlbBVVieb3Dv+pPugbsXEuFHBif7WsivbYgNTE9++8Yvt0gh -duB1G4yh7m/ylQeSuipgQU9tozrU/15cWwmcCRV50wWXBGoVEM0kf7mzEKSxmjYk -Qzko/zxSuwKBgQCY6Bc+SViFz3qSDdTcBaXma+CIHsmlH7ipd9px1kzEvEzl95cD -FGHLl1H34qfIgUQHJvrHPXHyEBoT+CW/2MMM7DM2XV/ubctT92ln4pkxwqlTQExv -Y/s1FLesAtj8Z/hgK0/5bprYab9WmZV5lTGCXzhB1XqeFE9AgCHuODv4iQKBgQC8 -g2uwd5ytXQydymokYk9klJvWNrvw5GHV1BJAC0Smb6lnzZTSqCBRAxdsrb1yLK7E -u2vGY2K7/qiM1DZw23eBd+4t9gg+0VIjqXBfq+GsoNTDvtckUwnrWER5PY831ut9 -N89fvYS3SAUjmlvIAdKBAtKWusWTqiAxJ/05J7oGOQKBgB5PSr5i0LlupIbKui9t -XtXnRqGPxxrZZUpTkyrGOAnlCz/zq2QiwFpBWo/NMHOp0KmxzJpQ8yEY2LWlRZ61 -Oc9m0J/HtPw3Ohi1treBosEVG/0NOI9Tq1Obny23N51MVibdW6zEIyGUp/DbFS8h -5DljdOYX9IYIHHn3Ig4GeTGe +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDBUq/9OV6FzRcl +vUReArEh6czC001MVzEsBbde88xpsZjQkCoECzJL7wHq9aWcom4yQjp6AiTHeHO1 +FvHoRN/dssxgVf28V3L2zF4U23FNcWOElScQksYESNAIVTQb5lKnRdgAS4LRY0OE +BzSnlYn+m6zQV6GRCOv0uCR7tgRFGdYW+RoHjHJqH4dX2cN/SrpuB01/BEkUJIp7 +bWswyh8Ogf9GZZumJlmJtld18ZDqd1RzQDk8VbYxJgsmcXcQPa1LouZsBVzU4IdV +Bz0/vNIJ2+D+shifPT7dL4IWCjL6zHxYdnHv9VDb1bS9JN6pk4Tpi4C3Tyhaq3kI +iRW0IPqFAgMBAAECggEAR9KMh6t0rokPfHngmHyvikXuSMNwCFiscAp/ocs5ulq8 +x1+H/JCcUxGsyLoSmSrPfeSVDRcWyvS5KCIqJXzRHvB6dZ/88KgckgxDN8R/R6JE +stEm/kVJQ/Y5M59UCLl9I6ATK6jiJSCXyMlUip5H8kur3Itx/wwtfXGcPEnXNERK +qM7AXRB2d6Ag0XkC9Cfdf6U7WNk1zKAr+1V1Iiav5mU7A8iHFsgK6RjVbxdh2ghJ +45LLU26YdoNoSWRefd1Wu/n0OMfyQdpySnyJcei2+5PlNbt6uHKrQLxtSE/HllcK +agv+FzfRYNpZ+ia7GMvTDNEuvnkKxs/K24Gk+aOwUQKBgQD48Qkns6gIN9yURMgc +KE8mDaerNeuCHY1cxymgriYUQAjrEysy51W41q+gvvJbXYMAmNM5RbrV+ktSWDZG +kljQaY0c/u0mYofuNYs/ul1TFcQTwxNnYUMmCWFzRgFM7Sp2H+sRO3W+Tvs9ctFJ +7a8HOYxqkQSfnHSgOuXAKXvy6wKBgQDGzfCF6DfRh3D/QQ9WCBi1JNWdLL6fHbmI +V4OrpQuQiTGGf/yY8ySOLq0QYXyc3pBxgTdOChliSNBjdr7/LXusIByZEvcKOds5 +pOalrjrFWoNf87zM38wMQjUeMprWQniBmq4H+TL7De29hR1QhdGb62uZCLo5V1u2 +k41gGvoMTwKBgC1blaRzOomMzBcD1UY0Hf+7+zHZ2DhT9B7UdwQ81tlXtYhHbNaQ +ifDsxQFP6U62Yhkov0uvJdS5DyJIylLfdWk74idHV6RnzYacoOuSpFBwJdLH93Ad +q6NxkBz1w2TlzZfKRwVTxSdQsrxGgFWtBfgWBzyfga0nT6SmNphltpzTAoGAML3l +Lq+Un+aZKbwFyo4JoL/7L6H8yn47MtZiDf9VKoa4gcV3ZPiYCdQf0lhUeRGIUIvh +x1xqhNJdZUWD5oR8QeNNn6oqr3Mn8KYhdpWVCzX559iWfZSRLqA87b5yf/2kFgKa +kJHkkfEETOcKHOfyUEwUAV1GazCj58udaeazT7kCgYB23ZTeqRsxw7jqEVz6KOSW +oWGYi0/lDmW6dtjcT3fDtyiYDlnE+53dIs2mcIvUyOwzcQ+e1rH+ZmGf/UpfWyXl +7aftUeDlPMLHi7wQUU04DaZU/Lyy0HGHMKVrPJF47gLKCgfk8I8HdUEtHSXNmYZb +hZ3T2j+d4u74saGGaxOlqw== -----END PRIVATE KEY----- diff --git a/app/user/cmd/api/etc/merchant/pub_key.pem b/app/user/cmd/api/etc/merchant/pub_key.pem new file mode 100644 index 0000000..9d8523b --- /dev/null +++ b/app/user/cmd/api/etc/merchant/pub_key.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsNH2kztg9gybkuulreL+ +BMyakxmKTFqrujYLm+S40v64KbNH3+sWdf1XR59vWjSvGWo+BAbuSIHNmIIFMFKE +sUxqHAYbta4oD9Ogr0+88drnXv+AA6vxQML0KaaTuHessvUhGC5GEUxa+TFefO9/ +EjbwL1E/XQ8oBkxHJO6RjKevuts39RjEyocnNhV7m8RP6WIBQeJDXhbfO1etcwdJ +B2yQ1eoPK9kGAqQ7wL4pDXrLXMfS1DXlNHsLf4if7rwu3fibk/qfkKdtmqvUw39f +tCKZRiexIq6ad9kTTjouXUU5EMRAn3ocRvNzCD4RaW1qVYMxFQ8AraQ8W3MXlPeL +EQIDAQAB +-----END PUBLIC KEY----- diff --git a/app/user/cmd/api/internal/config/config.go b/app/user/cmd/api/internal/config/config.go index 944d1ba..dc234ea 100644 --- a/app/user/cmd/api/internal/config/config.go +++ b/app/user/cmd/api/internal/config/config.go @@ -50,6 +50,8 @@ type AlipayConfig struct { type WxpayConfig struct { AppID string MchID string + MchPublicKeyID string + MchPublicKeyPath string MchCertificateSerialNumber string MchApiv3Key string MchPrivateKeyPath string diff --git a/app/user/cmd/api/internal/logic/pay/paymentlogic.go b/app/user/cmd/api/internal/logic/pay/paymentlogic.go index 09d28a4..54878d3 100644 --- a/app/user/cmd/api/internal/logic/pay/paymentlogic.go +++ b/app/user/cmd/api/internal/logic/pay/paymentlogic.go @@ -68,7 +68,7 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp, if aesEncryptErr != nil { return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成订单, 加密参数失败: %+v", aesEncryptErr) } - var prepayID string + var prepayData interface{} var outTradeNo string var amount float64 user, err := l.svcCtx.UserModel.FindOne(l.ctx, userID) @@ -84,13 +84,13 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp, var createOrderErr error if req.PayMethod == "wechatpay" { outTradeNo = l.svcCtx.WechatPayService.GenerateOutTradeNo() - prepayID, createOrderErr = l.svcCtx.WechatPayService.CreateWechatOrder(l.ctx, amount, product.ProductName, outTradeNo) + prepayData, createOrderErr = l.svcCtx.WechatPayService.CreateWechatOrder(l.ctx, amount, product.ProductName, outTradeNo) } else if req.PayMethod == "alipay" { outTradeNo = l.svcCtx.AlipayService.GenerateOutTradeNo() - prepayID, createOrderErr = l.svcCtx.AlipayService.CreateAlipayOrder(l.ctx, amount, product.ProductName, outTradeNo, brand) + prepayData, createOrderErr = l.svcCtx.AlipayService.CreateAlipayOrder(l.ctx, amount, product.ProductName, outTradeNo, brand) } else if req.PayMethod == "appleiap" { outTradeNo = l.svcCtx.ApplePayService.GenerateOutTradeNo() - prepayID = l.svcCtx.ApplePayService.GetIappayAppID(product.ProductEn) + prepayData = l.svcCtx.ApplePayService.GetIappayAppID(product.ProductEn) } if createOrderErr != nil { return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成订单, 创建支付订单失败: %+v", createOrderErr) @@ -132,5 +132,11 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp, return nil, transErr } - return &types.PaymentResp{PrepayID: prepayID, OrderID: orderID}, nil + switch v := prepayData.(type) { + case string: + // 如果 prepayData 是字符串类型,直接返回 + return &types.PaymentResp{PrepayId: v, OrderID: orderID}, nil + default: + return &types.PaymentResp{PrepayData: prepayData, OrderID: orderID}, nil + } } diff --git a/app/user/cmd/api/internal/logic/user/wxh5authlogic.go b/app/user/cmd/api/internal/logic/user/wxh5authlogic.go index ce2cd9f..61953b8 100644 --- a/app/user/cmd/api/internal/logic/user/wxh5authlogic.go +++ b/app/user/cmd/api/internal/logic/user/wxh5authlogic.go @@ -114,23 +114,23 @@ func GetAccessToken(code string) (*AccessTokenResp, error) { resp, err := http.Get(url) if err != nil { - return nil, errors.Wrap(err, "获取access_token失败") + return nil, err } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { - return nil, errors.Wrap(err, "读取access_token响应失败") + return nil, err } var accessTokenResp AccessTokenResp - if err := json.Unmarshal(body, &accessTokenResp); err != nil { - return nil, errors.Wrap(err, "解析access_token响应失败") + if err = json.Unmarshal(body, &accessTokenResp); err != nil { + return nil, err } - if accessTokenResp.AccessToken == "" { - return nil, errors.New("获取access_token失败") - } + //if accessTokenResp.AccessToken == "" { + // return nil, errors.New("accessTokenResp.AccessToken为空") + //} return &accessTokenResp, nil } diff --git a/app/user/cmd/api/internal/service/wechatpayService.go b/app/user/cmd/api/internal/service/wechatpayService.go index 8b99072..96a2dac 100644 --- a/app/user/cmd/api/internal/service/wechatpayService.go +++ b/app/user/cmd/api/internal/service/wechatpayService.go @@ -18,6 +18,8 @@ import ( "strconv" "time" "tydata-server/app/user/cmd/api/internal/config" + "tydata-server/app/user/model" + "tydata-server/common/ctxdata" "tydata-server/pkg/lzkit/lzUtils" ) @@ -35,25 +37,31 @@ type WechatPayService struct { config config.WxpayConfig wechatClient *core.Client notifyHandler *notify.Handler + userAuthModel model.UserAuthModel } // NewWechatPayService 初始化微信支付服务 -func NewWechatPayService(c config.Config) *WechatPayService { +func NewWechatPayService(c config.Config, userAuthModel model.UserAuthModel) *WechatPayService { // 从配置中加载商户信息 mchID := c.Wxpay.MchID mchCertificateSerialNumber := c.Wxpay.MchCertificateSerialNumber mchAPIv3Key := c.Wxpay.MchApiv3Key - + mchPublicKeyID := c.Wxpay.MchPublicKeyID // 从文件中加载商户私钥 mchPrivateKey, err := utils.LoadPrivateKeyWithPath(c.Wxpay.MchPrivateKeyPath) if err != nil { logx.Errorf("加载商户私钥失败: %v", err) panic(fmt.Sprintf("初始化失败,服务停止: %v", err)) // 记录错误并停止程序 } - + // 从文件中加载公钥 + mchPublicKey, err := utils.LoadPublicKeyWithPath(c.Wxpay.MchPublicKeyPath) + if err != nil { + logx.Errorf("加载商户私钥失败: %v", err) + panic(fmt.Sprintf("初始化失败,服务停止: %v", err)) // 记录错误并停止程序 + } // 使用商户私钥和其他参数初始化微信支付客户端 opts := []core.ClientOption{ - option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key), + option.WithWechatPayPublicKeyAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchPublicKeyID, mchPublicKey), } client, err := core.NewClient(context.Background(), opts...) if err != nil { @@ -71,6 +79,7 @@ func NewWechatPayService(c config.Config) *WechatPayService { config: c.Wxpay, wechatClient: client, notifyHandler: notifyHandler, + userAuthModel: userAuthModel, } } @@ -104,7 +113,7 @@ func (w *WechatPayService) CreateWechatAppOrder(ctx context.Context, amount floa } // CreateWechatMiniProgramOrder 创建微信小程序支付订单 -func (w *WechatPayService) CreateWechatMiniProgramOrder(ctx context.Context, amount float64, description string, outTradeNo string, openid string) (string, error) { +func (w *WechatPayService) CreateWechatMiniProgramOrder(ctx context.Context, amount float64, description string, outTradeNo string, openid string) (interface{}, error) { totalAmount := lzUtils.ToWechatAmount(amount) // 构建支付请求参数 @@ -131,24 +140,41 @@ func (w *WechatPayService) CreateWechatMiniProgramOrder(ctx context.Context, amo } // 返回预支付交易会话标识 - return *resp.PrepayId, nil + return resp, nil } // CreateWechatOrder 创建微信支付订单(集成 APP、H5、小程序) -func (w *WechatPayService) CreateWechatOrder(ctx context.Context, amount float64, description string, outTradeNo string) (string, error) { +func (w *WechatPayService) CreateWechatOrder(ctx context.Context, amount float64, description string, outTradeNo string) (interface{}, error) { // 根据 ctx 中的 platform 判断平台 platform := ctx.Value("platform").(string) - var prepayId string + var prepayData interface{} var err error switch platform { case "mp-weixin": - // 如果是小程序平台,调用小程序支付订单创建 - prepayId, err = w.CreateWechatMiniProgramOrder(ctx, amount, description, outTradeNo, "asdasd") + userID, getUidErr := ctxdata.GetUidFromCtx(ctx) + if getUidErr != nil { + return "", getUidErr + } + userAuthModel, findAuthModelErr := w.userAuthModel.FindOneByUserIdAuthType(ctx, userID, model.UserAuthTypeWxMini) + if findAuthModelErr != nil { + return "", findAuthModelErr + } + prepayData, err = w.CreateWechatMiniProgramOrder(ctx, amount, description, outTradeNo, userAuthModel.AuthKey) + case "h5-weixin": + userID, getUidErr := ctxdata.GetUidFromCtx(ctx) + if getUidErr != nil { + return "", getUidErr + } + userAuthModel, findAuthModelErr := w.userAuthModel.FindOneByUserIdAuthType(ctx, userID, model.UserAuthTypeWxh5) + if findAuthModelErr != nil { + return "", findAuthModelErr + } + prepayData, err = w.CreateWechatMiniProgramOrder(ctx, amount, description, outTradeNo, userAuthModel.AuthKey) case "app": // 如果是 APP 平台,调用 APP 支付订单创建 - prepayId, err = w.CreateWechatAppOrder(ctx, amount, description, outTradeNo) + prepayData, err = w.CreateWechatAppOrder(ctx, amount, description, outTradeNo) default: return "", fmt.Errorf("不支持的支付平台: %s", platform) } @@ -159,7 +185,7 @@ func (w *WechatPayService) CreateWechatOrder(ctx context.Context, amount float64 } // 返回预支付ID - return prepayId, nil + return prepayData, nil } // HandleWechatPayNotification 处理微信支付回调 diff --git a/app/user/cmd/api/internal/svc/servicecontext.go b/app/user/cmd/api/internal/svc/servicecontext.go index 5b9ce90..be952c1 100644 --- a/app/user/cmd/api/internal/svc/servicecontext.go +++ b/app/user/cmd/api/internal/svc/servicecontext.go @@ -56,12 +56,13 @@ func NewServiceContext(c config.Config) *ServiceContext { yushanService := service.NewYushanService(c) productFeatureModel := model.NewProductFeatureModel(db, c.CacheRedis) featureModel := model.NewFeatureModel(db, c.CacheRedis) + userAuthModel := model.NewUserAuthModel(db, c.CacheRedis) return &ServiceContext{ Config: c, Redis: redis.MustNewRedis(redisConf), SourceInterceptor: middleware.NewSourceInterceptorMiddleware().Handle, AlipayService: service.NewAliPayService(c), - WechatPayService: service.NewWechatPayService(c), + WechatPayService: service.NewWechatPayService(c, userAuthModel), ApplePayService: service.NewApplePayService(c), WestDexService: westDexService, YushanService: yushanService, @@ -70,7 +71,7 @@ func NewServiceContext(c config.Config) *ServiceContext { ApiRequestService: service.NewApiRequestService(c, westDexService, yushanService, featureModel, productFeatureModel), AsynqService: service.NewAsynqService(c), UserModel: model.NewUserModel(db, c.CacheRedis), - UserAuthModel: model.NewUserAuthModel(db, c.CacheRedis), + UserAuthModel: userAuthModel, ProductModel: model.NewProductModel(db, c.CacheRedis), OrderModel: model.NewOrderModel(db, c.CacheRedis), QueryModel: model.NewQueryModel(db, c.CacheRedis), diff --git a/app/user/cmd/api/internal/types/types.go b/app/user/cmd/api/internal/types/types.go index e117771..a9c729e 100644 --- a/app/user/cmd/api/internal/types/types.go +++ b/app/user/cmd/api/internal/types/types.go @@ -63,8 +63,9 @@ type PaymentReq struct { } type PaymentResp struct { - PrepayID string `json:"prepay_id"` - OrderID int64 `json:"order_id"` + PrepayData interface{} `json:"prepay_data"` + PrepayId string `json:"prepay_id"` + OrderID int64 `json:"order_id"` } type Product struct {