智慧食堂
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

39 строки
1.3 KiB

  1. package svc
  2. import (
  3. "applet/app/db"
  4. "applet/app/enum"
  5. "github.com/gin-gonic/gin"
  6. "github.com/wechatpay-apiv3/wechatpay-go/core"
  7. "github.com/wechatpay-apiv3/wechatpay-go/core/option"
  8. "github.com/wechatpay-apiv3/wechatpay-go/utils"
  9. )
  10. func NewWxPayClient(ctx *gin.Context) (client *core.Client, err error) {
  11. sysCfgDb := db.SysCfgDb{}
  12. sysCfgDb.Set()
  13. sysCfg := sysCfgDb.SysCfgFindWithDb(enum.WxMchId, enum.WxMchApiV3Key, enum.WxMchCertificateSerialNumber)
  14. var (
  15. mchID string = sysCfg[enum.WxMchId] // 商户号
  16. mchCertificateSerialNumber string = sysCfg[enum.WxMchCertificateSerialNumber] // 商户证书序列号
  17. mchAPIv3Key string = sysCfg[enum.WxMchApiV3Key] // 商户APIv3密钥
  18. )
  19. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  20. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("./static/wx/merchant/apiclient_key.pem")
  21. if err != nil {
  22. return
  23. }
  24. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  25. opts := []core.ClientOption{
  26. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  27. }
  28. client, err = core.NewClient(ctx, opts...)
  29. if err != nil {
  30. return
  31. }
  32. return
  33. }