代码调整
This commit is contained in:
parent
fc6f3533ab
commit
d9adae9639
|
@ -58,8 +58,8 @@ func TestOrder(t *testing.T) {
|
||||||
Extra: []byte(`{}`),
|
Extra: []byte(`{}`),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
t.Logf("%s\n", request.String())
|
//t.Logf("%s\n", request.String())
|
||||||
return
|
//return
|
||||||
t.Run("TestOrder", func(t *testing.T) {
|
t.Run("TestOrder", func(t *testing.T) {
|
||||||
got, err := srv.Order(context.Background(), request)
|
got, err := srv.Order(context.Background(), request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -33,21 +33,25 @@ func newClient(ctx context.Context, c *Server) (*core.Client, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, proto.ErrorConfigFail(fmt.Sprintf("MchID[%s] get current dir error:%v", c.MchID, err))
|
return nil, proto.ErrorConfigFail(fmt.Sprintf("MchID[%s] get current dir error:%v", c.MchID, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
filePath := fmt.Sprintf("%s/%s/%s/%s", dir, "cert", "wechat", c.MchID)
|
filePath := fmt.Sprintf("%s/%s/%s/%s", dir, "cert", "wechat", c.MchID)
|
||||||
if !putils.FileExists(filePath) {
|
if !putils.FileExists(filePath) {
|
||||||
return nil, proto.ErrorConfigFail(fmt.Sprintf("MchID[%s]微信密钥证书信息不存在,请联系技术人员处理", c.MchID))
|
return nil, proto.ErrorConfigFail(fmt.Sprintf("MchID[%s]微信密钥证书信息不存在,请联系技术人员处理", c.MchID))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 商户相关配置,商户API私钥
|
// 商户相关配置,商户API私钥
|
||||||
mchPrivateKey, err := utils.LoadPrivateKeyWithPath(fmt.Sprintf("%s/%s", filePath, "wechat_private_key.pem"))
|
mchPrivateKey, err := utils.LoadPrivateKeyWithPath(fmt.Sprintf("%s/%s", filePath, "wechat_private_key.pem"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, proto.ErrorConfigFail(fmt.Sprintf("MchID[%s] load merchant private key error:%v", c.MchID, err))
|
return nil, proto.ErrorConfigFail(fmt.Sprintf("MchID[%s] load merchant private key error:%v", c.MchID, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
var client *core.Client
|
var client *core.Client
|
||||||
// 微信支付平台配置
|
// 微信支付平台配置
|
||||||
wechatPayCertificate, 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 {
|
if err != nil {
|
||||||
return nil, proto.ErrorConfigFail(fmt.Sprintf("平台证书有误:%v", err))
|
return nil, proto.ErrorConfigFail(fmt.Sprintf("平台证书有误:%v", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
client, err = core.NewClient(
|
client, err = core.NewClient(
|
||||||
ctx,
|
ctx,
|
||||||
option.WithMerchantCredential(
|
option.WithMerchantCredential(
|
||||||
|
@ -60,5 +64,6 @@ func newClient(ctx context.Context, c *Server) (*core.Client, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, proto.ErrorConfigFail(fmt.Sprintf("创建 Client 失败:%v", err))
|
return nil, proto.ErrorConfigFail(fmt.Sprintf("创建 Client 失败:%v", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,24 +26,30 @@ func init() {
|
||||||
func GetClient(ctx context.Context, c *Server) (*core.Client, error) {
|
func GetClient(ctx context.Context, c *Server) (*core.Client, error) {
|
||||||
instance.mutex.Lock()
|
instance.mutex.Lock()
|
||||||
defer instance.mutex.Unlock()
|
defer instance.mutex.Unlock()
|
||||||
|
|
||||||
if instance.clients[c.MchID] != nil {
|
if instance.clients[c.MchID] != nil {
|
||||||
return instance.clients[c.MchID], nil
|
return instance.clients[c.MchID], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
instance.once.Do(func() {
|
instance.once.Do(func() {
|
||||||
instance.clients[c.MchID], err = newClient(ctx, c)
|
instance.clients[c.MchID], err = newClient(ctx, c)
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return instance.clients[c.MchID], nil
|
return instance.clients[c.MchID], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Verify(ctx context.Context, message, signature string) error {
|
func (s *Server) Verify(ctx context.Context, message, signature string) error {
|
||||||
var verifier auth.Verifier
|
var verifier auth.Verifier
|
||||||
verifier = verifiers.NewSHA256WithRSAVerifier(nil)
|
verifier = verifiers.NewSHA256WithRSAVerifier(nil)
|
||||||
|
|
||||||
if err := verifier.Verify(ctx, s.MchCertificateSerialNumber, message, signature); err != nil {
|
if err := verifier.Verify(ctx, s.MchCertificateSerialNumber, message, signature); err != nil {
|
||||||
return proto.ErrorSignFail(err.Error())
|
return proto.ErrorSignFail(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue