From 028a5232cdc2f622ebf589c5c33466bb68d673f1 Mon Sep 17 00:00:00 2001 From: lwl0608 Date: Fri, 3 May 2024 02:26:48 +0800 Subject: [PATCH] wechat --- app/mix/conf/cfg.go | 1 + app/mix/service/service.go | 2 +- etc/mix/mix-prod.yaml | 9 ++++++ etc/mix/wxpaycert_tfz/apiclient_cert.p12 | Bin 0 -> 2774 bytes etc/mix/wxpaycert_tfz/apiclient_cert.pem | 25 +++++++++++++++++ etc/mix/wxpaycert_tfz/apiclient_key.pem | 28 +++++++++++++++++++ library/payclients/wxpaycli/client.go | 31 +++++++++++++++++---- library/payclients/wxpaycli/client_test.go | 2 +- 8 files changed, 91 insertions(+), 7 deletions(-) create mode 100644 etc/mix/wxpaycert_tfz/apiclient_cert.p12 create mode 100644 etc/mix/wxpaycert_tfz/apiclient_cert.pem create mode 100644 etc/mix/wxpaycert_tfz/apiclient_key.pem diff --git a/app/mix/conf/cfg.go b/app/mix/conf/cfg.go index 9a97c729..eb67cccd 100644 --- a/app/mix/conf/cfg.go +++ b/app/mix/conf/cfg.go @@ -8,6 +8,7 @@ type ConfigSt struct { MixMysql *configcenter.MysqlConfig `json:"mix_mysql" yaml:"mix_mysql"` // mix mysql Crypto *configcenter.CryptoConfig `json:"crypto" yaml:"crypto"` // 账号相关加密 Wxpay *configcenter.WxpayClientConfig `json:"wxpay" yaml:"wxpay"` // 微信支付 + WxpayTFZ *configcenter.WxpayClientConfig `json:"wxpay_tfz" yaml:"wxpay_tfz"` // 微信支付 Alipay *configcenter.AlipayClientConfig `json:"alipay" yaml:"alipay"` // 支付宝 心意到了 AlipayMYTS *configcenter.AlipayClientConfig `json:"alipay_myts" yaml:"alipay_myts"` // 支付宝 觅缘天使 Apollo *configcenter.ApolloConfig `json:"apollo" yaml:"apollo"` // Apollo diff --git a/app/mix/service/service.go b/app/mix/service/service.go index 6d974ba4..6be4264e 100644 --- a/app/mix/service/service.go +++ b/app/mix/service/service.go @@ -159,7 +159,7 @@ func (s *Service) Init(c any) (err error) { return } - err = wxpaycli.Init(cfg.Wxpay) + err = wxpaycli.InitMulti(cfg.Wxpay, cfg.WxpayTFZ) if err != nil { logger.Error("wxpaycli.Init fail, cfg: %v, err: %v", util.ToJson(cfg.Wxpay), err) return diff --git a/etc/mix/mix-prod.yaml b/etc/mix/mix-prod.yaml index 5274965b..fd8403be 100644 --- a/etc/mix/mix-prod.yaml +++ b/etc/mix/mix-prod.yaml @@ -63,6 +63,15 @@ wxpay: notify_url: "https://api.tiefen.fun/ext/vas/wxpay_callback" app_secret: "ebc325109b91087e22f046bc8ac5c940" +wxpay_tfz: + mchid: "1665016206" + appid: "" + serial_no: "176903F43E78B0BA5AA1F08A3BE852A5F637DC77" + apiv3_key: "5QwY1XMK1HW3JQwGKbA3mfJ5cdsTQGjR" + private_key_path: "/app/wishpal-ironfan/etc/mix/wxpaycert_tfz/apiclient_key.pem" + notify_url: "https://api.tiefen.fun/ext/vas/wxpay_callback" + app_secret: "mot5410nh69k87e22f046bc8anv5xds8" + apollo: app_id: "wishpal_live_service" cluster: "dev" diff --git a/etc/mix/wxpaycert_tfz/apiclient_cert.p12 b/etc/mix/wxpaycert_tfz/apiclient_cert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..c786c5110dbf958fff272e6c285f220a9c79aa73 GIT binary patch literal 2774 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 P9ZY+a57{^2ca{4WRY5Aq literal 0 HcmV?d00001 diff --git a/etc/mix/wxpaycert_tfz/apiclient_cert.pem b/etc/mix/wxpaycert_tfz/apiclient_cert.pem new file mode 100644 index 00000000..a773b4e6 --- /dev/null +++ b/etc/mix/wxpaycert_tfz/apiclient_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEKDCCAxCgAwIBAgIUF2kD9D54sLpaofCKO+hSpfY33HcwDQYJKoZIhvcNAQEL +BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT +FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg +Q0EwHhcNMjQwNTAyMTc1NzA2WhcNMjkwNTAxMTc1NzA2WjCBgTETMBEGA1UEAwwK +MTY3NTgxMzcyMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL +DCTmiJDpg73lv4PmhI/liLDkuobnp5HmioDmnInpmZDlhazlj7gxCzAJBgNVBAYT +AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAOaDpU37roG4zQOok/00vHtgPQdVEy/SgxqdakEEygVFXTiCh/PSmynV +wtAiULYkDor+KdPMAqmTO/wVxlkxVWhh0tq3Wr49MWqmSGAdS749H0CKv/TxrL+y +Bmw5OuKolGV7xYne9wJC28M0wJOJH4XFwUSJnQqOec956KdwnSWuZ/X8uI0d8Cs1 +It/HRX4tJunEDaPFLCnF4ju6wrr+kAjlZb35laDX7zmDg25/yhpxpmgeAeJgSH7K +EJSCYlUWOpspMb4porEG5NIUxu1TfLXO4kkx3j7Diz8szdzZrTGdLcc4FjKNTdIL +jaJxmH8eyYC2Zu2jyuF5F3vSTtACszsCAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsG +A1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2Eu +aXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRC +MDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdB +OUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQB8Ze+8 +G5dKUUuAaGlwBQNxwf1YPeZ7LU3lh0OKc+09cQ3yNDJXdYKdgrCI0L2dkZMnk0xo +/gf0lxFfXiRfR5jYCYr3MRU7ooayqXEPpvwoRmTboiE9hVrpPifGeETsKJwQkvE3 +W1kpBYckkNtUBucL6c7W66q7kFtz+8wVP7gPgJ7UFjk8x3r4Zao+A3opPRTBVgls +fxmmCu1Ud3Pf/zHKd1FCBDZepJ2ObOIUYW/0Wc+p2VbqansG1DirQ5jkmaf33mEN +51kDz5Hw07XGz04ZVPAWkpLtjAQFF4bSVfYxTYvhOllTidZXtt2IJNGT/MQyKp98 +ufapZz95Zc/bxQ7U +-----END CERTIFICATE----- diff --git a/etc/mix/wxpaycert_tfz/apiclient_key.pem b/etc/mix/wxpaycert_tfz/apiclient_key.pem new file mode 100644 index 00000000..757be54b --- /dev/null +++ b/etc/mix/wxpaycert_tfz/apiclient_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDmg6VN+66BuM0D +qJP9NLx7YD0HVRMv0oManWpBBMoFRV04gofz0psp1cLQIlC2JA6K/inTzAKpkzv8 +FcZZMVVoYdLat1q+PTFqpkhgHUu+PR9Air/08ay/sgZsOTriqJRle8WJ3vcCQtvD +NMCTiR+FxcFEiZ0KjnnPeeincJ0lrmf1/LiNHfArNSLfx0V+LSbpxA2jxSwpxeI7 +usK6/pAI5WW9+ZWg1+85g4Nuf8oacaZoHgHiYEh+yhCUgmJVFjqbKTG+KaKxBuTS +FMbtU3y1zuJJMd4+w4s/LM3c2a0xnS3HOBYyjU3SC42icZh/HsmAtmbto8rheRd7 +0k7QArM7AgMBAAECggEAYQEHQFDod8iH5cE8PbLCmny+UeaYQ2ioKTwTKbdVOHCf +MRelFJMNHsbIy4OVSYDU6eLZQTq56BiAhq23IXOkSF/aNpYwRpxDvmipTmElrbHV +A/kfnHlTQ/wrvcE7qYRdpnM2hrVgZwAxsOzzGWL78/RrR2dNwdKBKjFYGZZHW0JE +HB3H6KZsqPssM9COYy4JrzWOgx/dGxihMSeWbGFgjXXo7LN7bWPzS6/6nBcVrmQU +JNjQ2Y4MIc56pjfoXwWHLUfftNL75uLr+yBVsL3qOLVTpLgIQQZyPSfj0Xg3rG7h +hzab5gLF+TREAFYsHPR1vyDJjzGjimrHjvCWysMxaQKBgQD26GvU2tz5HNMpGeUZ +A0DJmnKxY40sPltZES/l3mTiJzmig6kT+UGxeg3tPkU3Z/zCUFdoXWT1nNA185eD +fFgEka3mxg1g5Iw9PmefqeHbCMs94ICKdxsnJn1PFMhIPqhms9wcjoKJGgKUj3ov +a243HS/yh4gl6EnvMMeBTZMpZQKBgQDvAK7X9ZXb91+F/lBHrhynJjQmsbiDQcqk +synIImWPHJ6M1h2/vJbplmaOQFPOBqQiMWepb3TtKtGcSAYXIsyUFD1OECLb/+Vn +We/P6kVyki7UgDLkQERhNDmsdP1qzzt0UmncUjYUk2eFlfobgwSP3iZ+8aFZ10XF +BSwJTbrwHwKBgD2kpVdNFSI0qht21ZW7FC/BGaVj/1jucIv6GIVBUtqLhH4odMwB +zP7sRBHZHBrLIXW57TinKI+RiQIPQOKY5ritTkdxZuGr7b9UlzZriXHP7j4SkMUB +G4xYtaxKuf4fdpe9i9StV7W3ArHoaE7yeV/VL6VTZRBhwCOxf/2uSnFpAoGAV8S1 +cKNEREIkty08SAZ9iThzYF5VdwY7J56P0monR5Xn96pNxHK6LM/Jm6Wt4PP5ZIEm +I0fF9a6KyUx9yBNEc4C3PqqYUpg3o2uYsI7EsB1Uyz7E8aNUOSoXn+hag9XUbJQz +QfCC4a18D8eS0HWdwEOBeY68hSST/5U1pbkA1FsCgYBQZX6MqUEybdjPnxeJn/RN +c3wG97sGG87A6Xo2i42koX1w87LT/f9qJrR/sU6kHw/39E/vx2xkMIs6u7I9lO+d +WsBYbtcp4ZDAI1+NwcDtkd6Q1Kbpti2MxkuC6r+1kteE80DEB4lryJ6r4HAry3k8 +uCJCasc77UvJcfVnZX5QkA== +-----END PRIVATE KEY----- diff --git a/library/payclients/wxpaycli/client.go b/library/payclients/wxpaycli/client.go index 5608b49e..a6d353a2 100644 --- a/library/payclients/wxpaycli/client.go +++ b/library/payclients/wxpaycli/client.go @@ -30,7 +30,16 @@ const ( DefaultOrderTimeoutSeconds = 900 // 默认订单超时时间,单位: s ) -var defaultWxpayClient *WxpayClient +const ( + AppIdXinYiDaoLe = "wxc28fd8aaf31984b6" + AppIdTieFenZone = "" +) + +var allWxpayClients = map[string]*WxpayClient{} + +func GetDefaultWxpayClient() *WxpayClient { + return allWxpayClients[AppIdXinYiDaoLe] +} type WxpayClient struct { clientV3 *wxpayv3.ClientV3 @@ -40,11 +49,23 @@ type WxpayClient struct { PrivateKeyPath string `json:"private_key_path"` } -func GetDefaultWxpayClient() *WxpayClient { - return defaultWxpayClient +func InitMulti(cfgList ...*configcenter.WxpayClientConfig) (err error) { + for _, cfg := range cfgList { + var cli *WxpayClient + cli, err = NewWxpayClient(cfg) + if err != nil { + return + } + if cli == nil { + err = errors.New("NewAlipayClient fail") + return + } + allWxpayClients[cli.AppId] = cli + } + return } -func Init(cfg *configcenter.WxpayClientConfig) (err error) { +func NewWxpayClient(cfg *configcenter.WxpayClientConfig) (ret *WxpayClient, err error) { // private key bs, err := os.ReadFile(cfg.PrivateKeyPath) if err != nil { @@ -59,7 +80,7 @@ func Init(cfg *configcenter.WxpayClientConfig) (err error) { return } - defaultWxpayClient = &WxpayClient{ + ret = &WxpayClient{ clientV3: wxpayCliV3, AppSecret: cfg.AppSecret, AppId: cfg.AppId, diff --git a/library/payclients/wxpaycli/client_test.go b/library/payclients/wxpaycli/client_test.go index cb750834..f0a9ef99 100644 --- a/library/payclients/wxpaycli/client_test.go +++ b/library/payclients/wxpaycli/client_test.go @@ -20,7 +20,7 @@ func TestMain(m *testing.M) { fmt.Printf("%v\n", err) } - err = Init(cfg.Wxpay) + err = InitMulti(cfg.Wxpay) if err != nil { fmt.Println(err) os.Exit(1)