Skip to content

Commit 1e2ee68

Browse files
author
fideism
committed
退款 二进制内容
1 parent b1e44ca commit 1e2ee68

File tree

5 files changed

+27
-19
lines changed

5 files changed

+27
-19
lines changed

go.mod

-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ module github.com/fideism/golang-wechat
33
go 1.14
44

55
require (
6-
github.com/fatih/structs v1.1.0
76
github.com/gomodule/redigo v1.8.2
87
github.com/sirupsen/logrus v1.6.0
9-
github.com/spf13/cast v1.3.1
108
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37
119
)

pay/base/cert.go

+18-11
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,50 @@ package base
33
import (
44
"crypto/tls"
55
"encoding/pem"
6+
"io/ioutil"
7+
68
logger "github.com/fideism/golang-wechat/log"
9+
"github.com/fideism/golang-wechat/pay/config"
710
"golang.org/x/crypto/pkcs12"
8-
"io/ioutil"
911
)
1012

1113
// CertTLSConfig 证书 tls
12-
func CertTLSConfig(mchID, path string) (*tls.Config, error) {
13-
certData, err := ioutil.ReadFile(path)
14+
func CertTLSConfig(mchID string, certCfg config.Cert) (*tls.Config, error) {
15+
certData, err := getCertByte(certCfg)
1416
if err != nil {
1517
return nil, err
1618
}
1719

1820
blocks, err := pkcs12.ToPEM(certData, mchID)
21+
if err != nil {
22+
return nil, err
23+
}
1924

2025
defer func() {
2126
if x := recover(); x != nil {
2227
logger.Entry().WithField("recover err", x).Error("recover")
2328
}
2429
}()
2530

26-
if err != nil {
27-
return nil, err
28-
}
29-
3031
var pemData []byte
3132
for _, b := range blocks {
3233
pemData = append(pemData, pem.EncodeToMemory(b)...)
3334
}
3435

35-
pem, err := tls.X509KeyPair(pemData, pemData)
36+
keyPair, err := tls.X509KeyPair(pemData, pemData)
3637
if err != nil {
3738
return nil, err
3839
}
3940

40-
config := &tls.Config{
41-
Certificates: []tls.Certificate{pem},
41+
return &tls.Config{
42+
Certificates: []tls.Certificate{keyPair},
43+
}, nil
44+
}
45+
46+
func getCertByte(certCfg config.Cert) ([]byte, error) {
47+
if len(certCfg.Content) > 0 {
48+
return certCfg.Content, nil
4249
}
4350

44-
return config, nil
51+
return ioutil.ReadFile(certCfg.Path)
4552
}

pay/config/config.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ type Config struct {
88
Key string `json:"key"`
99
}
1010

11+
// Cert 证书配置优先使用 content 如没有内容则读取path路径文件
1112
type Cert struct {
12-
Path string `json:"path"`
13+
Path string `json:"path"`
14+
Content []byte `json:"content"`
1315
}

pay/refund/refund.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ func NewRefund(cfg *config.Config) *Refund {
1717
}
1818

1919
// Refund 退款
20-
func (refund *Refund) Refund(params util.Params, cert config.Cert) (*base.Response, error) {
20+
func (refund *Refund) Refund(params util.Params, certCfg config.Cert) (*base.Response, error) {
2121
params = base.Sign(params, refund.Config)
2222

23-
tsl, err := base.CertTLSConfig(refund.Config.MchID, cert.Path)
23+
tsl, err := base.CertTLSConfig(refund.Config.MchID, certCfg)
2424
if err != nil {
2525
return nil, err
2626
}

pay/server/server.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package server
22

33
import (
4+
"strings"
5+
46
"github.com/fideism/golang-wechat/pay/base"
57
"github.com/fideism/golang-wechat/pay/config"
68
"github.com/fideism/golang-wechat/util"
7-
"strings"
89
)
910

1011
// Server server
@@ -38,10 +39,10 @@ func (server *Server) DownloadBill(params util.Params) (*base.Response, error) {
3839
}
3940

4041
// DownloadFundFlow 下载资金账单
41-
func (server *Server) DownloadFundFlow(params util.Params, cert config.Cert) (*base.Response, error) {
42+
func (server *Server) DownloadFundFlow(params util.Params, certCfg config.Cert) (*base.Response, error) {
4243
params = base.Sign(params, server.Config)
4344

44-
tsl, err := base.CertTLSConfig(server.Config.MchID, cert.Path)
45+
tsl, err := base.CertTLSConfig(server.Config.MchID, certCfg)
4546
if err != nil {
4647
return nil, err
4748
}

0 commit comments

Comments
 (0)