|
@@ -10,44 +10,79 @@ import (
|
|
|
"hongze/hz_crm_api/models/cygx"
|
|
|
"hongze/hz_crm_api/services/alarm_msg"
|
|
|
"hongze/hz_crm_api/utils"
|
|
|
- "log"
|
|
|
+ "os"
|
|
|
)
|
|
|
|
|
|
const (
|
|
|
//MchPKFileName = "./utils/cert/apiclient_key.pem"
|
|
|
- //MchPKFileName = "../cert/cygx/apiclient_key.pem"
|
|
|
- MchPKFileName = "../hongze_mfyx/utils/cert/apiclient_key.pem"
|
|
|
+ //MchPKFileName = "../hongze_mfyx/utils/cert/apiclient_key.pem"
|
|
|
+ MchPKFileName = "/home/code/wechat_cert/cygx/apiclient_key.pem"
|
|
|
Mchid = "1624495680"
|
|
|
MchCertificateSerialNumber = "5ED2719CFAE5205763034AD80BF4B8A33533C418"
|
|
|
MchAPIv3Key = "W1tbnzQrzQ7yRRNuQCIHjis8dgdasKVX"
|
|
|
)
|
|
|
|
|
|
// 微信商户建立连接
|
|
|
-func getWechatClient() (context.Context, *core.Client, error) {
|
|
|
- var err error
|
|
|
- defer func() {
|
|
|
+//func getWechatClient() (context.Context, *core.Client, error) {
|
|
|
+// var err error
|
|
|
+// defer func() {
|
|
|
+// if err != nil {
|
|
|
+// fmt.Println(err)
|
|
|
+// go alarm_msg.SendAlarmMsg(fmt.Sprint("微信商户建立连接失败 getWechatClient, err:", err.Error()), 2)
|
|
|
+// }
|
|
|
+// }()
|
|
|
+// // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
|
|
|
+// mchPrivateKey, err := payUtils.LoadPrivateKeyWithPath(MchPKFileName)
|
|
|
+// if err != nil {
|
|
|
+// log.Print("load merchant private key error")
|
|
|
+// return nil, nil, err
|
|
|
+// }
|
|
|
+// ctx := context.Background()
|
|
|
+// // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
|
|
|
+// opts := []core.ClientOption{
|
|
|
+// option.WithWechatPayAutoAuthCipher(Mchid, MchCertificateSerialNumber, mchPrivateKey, MchAPIv3Key),
|
|
|
+// }
|
|
|
+// client, err := core.NewClient(ctx, opts...)
|
|
|
+// if err != nil {
|
|
|
+// log.Printf("new wechat pay client err:%s", err)
|
|
|
+// return nil, nil, err
|
|
|
+// }
|
|
|
+// return ctx, client, nil
|
|
|
+//}
|
|
|
+
|
|
|
+var WechatCertClient *core.Client
|
|
|
+
|
|
|
+// 微信商户建立连接(全局)
|
|
|
+func init() {
|
|
|
+ if utils.RunMode != "release" {
|
|
|
+ _, err := os.Stat(MchPKFileName) // 判断证书路径是否存在,非生产环境不做判断。
|
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
- go alarm_msg.SendAlarmMsg(fmt.Sprint("微信商户建立连接失败 getWechatClient, err:", err.Error()), 2)
|
|
|
+ go alarm_msg.SendAlarmMsg("微信商户链接失败证书路径不存在 os.Stat"+err.Error(), 2)
|
|
|
+ utils.FileLogCygx.Info("WechatCertClient err:" + err.Error())
|
|
|
+ err = nil
|
|
|
+ return
|
|
|
}
|
|
|
- }()
|
|
|
+ }
|
|
|
+
|
|
|
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
|
|
|
mchPrivateKey, err := payUtils.LoadPrivateKeyWithPath(MchPKFileName)
|
|
|
if err != nil {
|
|
|
- log.Print("load merchant private key error")
|
|
|
- return nil, nil, err
|
|
|
+ fmt.Println(err)
|
|
|
+ go alarm_msg.SendAlarmMsg("微信商户链接失败 LoadPrivateKeyWithPath"+err.Error(), 2)
|
|
|
}
|
|
|
ctx := context.Background()
|
|
|
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
|
|
|
opts := []core.ClientOption{
|
|
|
option.WithWechatPayAutoAuthCipher(Mchid, MchCertificateSerialNumber, mchPrivateKey, MchAPIv3Key),
|
|
|
}
|
|
|
+
|
|
|
client, err := core.NewClient(ctx, opts...)
|
|
|
if err != nil {
|
|
|
- log.Printf("new wechat pay client err:%s", err)
|
|
|
- return nil, nil, err
|
|
|
+ fmt.Println(err)
|
|
|
+ go alarm_msg.SendAlarmMsg("微信商户链接失败 NewClient"+err.Error(), 2)
|
|
|
}
|
|
|
- return ctx, client, nil
|
|
|
+ WechatCertClient = client
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
// 微信商户退款
|
|
@@ -58,13 +93,13 @@ func RefundsApiService(orderDetail *cygx.CygxOrderResp) (statusCode int, err err
|
|
|
go alarm_msg.SendAlarmMsg(fmt.Sprint("微信商户退款失败 RefundsApiService, err:", err.Error()), 2)
|
|
|
}
|
|
|
}()
|
|
|
- ctx, client, err := getWechatClient()
|
|
|
- if err != nil {
|
|
|
- //log.Printf("getWechatClientt err:%s", err)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- svc := refunddomestic.RefundsApiService{Client: client}
|
|
|
+ //ctx, client, err := getWechatClient()
|
|
|
+ //if err != nil {
|
|
|
+ // //log.Printf("getWechatClientt err:%s", err)
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ ctx := context.Background()
|
|
|
+ svc := refunddomestic.RefundsApiService{Client: WechatCertClient}
|
|
|
resp, result, err := svc.Create(ctx,
|
|
|
refunddomestic.CreateRequest{
|
|
|
//SubMchid: core.String(Mchid),
|
|
@@ -86,12 +121,9 @@ func RefundsApiService(orderDetail *cygx.CygxOrderResp) (statusCode int, err err
|
|
|
},
|
|
|
)
|
|
|
if err != nil {
|
|
|
- // 处理错误
|
|
|
- //log.Printf("call Create err:%s", err)
|
|
|
return
|
|
|
} else {
|
|
|
- // 处理返回结果
|
|
|
- log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
|
|
|
+ utils.FileLogCygx.Info("status=%d resp=%s", result.Response.StatusCode, resp)
|
|
|
}
|
|
|
statusCode = result.Response.StatusCode
|
|
|
|