Skip to content

Commit

Permalink
fix: once init
Browse files Browse the repository at this point in the history
  • Loading branch information
pyihe committed Feb 21, 2020
1 parent 17126f6 commit 3520256
Show file tree
Hide file tree
Showing 18 changed files with 42 additions and 37 deletions.
16 changes: 12 additions & 4 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package wechat_sdk
import (
"errors"
"io"
"sync"
)

type ResultParam interface {
Expand Down Expand Up @@ -74,7 +75,12 @@ type WePayer interface {

type option func(*myPayer)

var (
defaultPayer *myPayer
)

type myPayer struct {
once sync.Once
appId string //appid
mchId string //mchid
secret string //secret用于获取token
Expand All @@ -83,10 +89,12 @@ type myPayer struct {

//不向微信发送接口请求report
func NewPayer(options ...option) WePayer {
defaultPayer := &myPayer{}
for _, option := range options {
option(defaultPayer)
}
defaultPayer = &myPayer{}
defaultPayer.once.Do(func() {
for _, option := range options {
option(defaultPayer)
}
})
return defaultPayer
}

Expand Down
13 changes: 5 additions & 8 deletions param.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,7 @@ func (p Param) SortKey() (keys []string) {
return
}

func (p Param) Sign(apiKey string, signType string) string {
if apiKey == "" {
return ""
}
func (p Param) Sign(signType string) string {
var result string
keys := p.SortKey()
var signStr string
Expand All @@ -90,10 +87,10 @@ func (p Param) Sign(apiKey string, signType string) string {
}
signStr += str
}
signStr += fmt.Sprintf("&key=%v", apiKey)
signStr += fmt.Sprintf("&key=%v", defaultPayer.apiKey)
switch signType {
case e.SignType256:
result = strings.ToUpper(util.SignHMACSHA256(signStr, apiKey))
result = strings.ToUpper(util.SignHMACSHA256(signStr, defaultPayer.apiKey))
case e.SignTypeMD5:
result = strings.ToUpper(util.SignMd5(signStr))
default:
Expand Down Expand Up @@ -131,12 +128,12 @@ func (r resultMap) Data() map[string]string {
return r
}

func (r resultMap) Sign(apiKey string, signType string) string {
func (r resultMap) Sign(signType string) string {
p := NewParam()
for k, v := range r {
p[k] = v
}
return p.Sign(apiKey, signType)
return p.Sign(signType)
}

//XML to Param(遍历生成)
Expand Down
4 changes: 2 additions & 2 deletions payCloseOrder.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func (m *myPayer) CloseOrder(param Param) (ResultParam, error) {
return nil, errors.New("no need param: " + key)
}
}
sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down Expand Up @@ -75,7 +75,7 @@ func (m *myPayer) CloseOrder(param Param) (ResultParam, error) {
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, signType)
sign = result.Sign(signType)
if wxSign, _ := result.GetString("sign"); sign != wxSign {
return nil, e.ErrCheckSign
}
Expand Down
2 changes: 1 addition & 1 deletion payDownloadBill.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func (m *myPayer) DownloadBill(param Param, path string) error {
}

//签名
sign := param.Sign(m.apiKey, e.SignTypeMD5)
sign := param.Sign(e.SignTypeMD5)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down
2 changes: 1 addition & 1 deletion payDownloadComment.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (m *myPayer) DownloadComment(param Param, p12CertPath string, path string)
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down
2 changes: 1 addition & 1 deletion payDownloadFundFlow.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func (m *myPayer) DownloadFundFlow(param Param, p12CertPath string, path string)
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down
2 changes: 1 addition & 1 deletion payGetPublicKey.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func (m *myPayer) GetPublicKey(p12CertPath string, targetPath string) error {
param.Add("mch_id", m.mchId)
param.Add("nonce_str", nonceStr)
param.Add("sign_type", e.SignTypeMD5)
param.Add("sign", param.Sign(m.apiKey, e.SignTypeMD5))
param.Add("sign", param.Sign(e.SignTypeMD5))

reader, err := param.MarshalXML()
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions payRefundApply.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func (m *myPayer) RefundOrder(param Param, p12CertPath string) (ResultParam, err
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down Expand Up @@ -92,7 +92,7 @@ func (m *myPayer) RefundOrder(param Param, p12CertPath string) (ResultParam, err
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, signType)
sign = result.Sign(signType)
if resultSign, _ := result.GetString("sign"); resultSign != sign {
return nil, e.ErrCheckSign
}
Expand Down
4 changes: 2 additions & 2 deletions payRefundQuery.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (m *myPayer) RefundQuery(param Param) (ResultParam, error) {
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down Expand Up @@ -87,7 +87,7 @@ func (m *myPayer) RefundQuery(param Param) (ResultParam, error) {
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, signType)
sign = result.Sign(signType)
if resultSign, _ := result.GetString("sign"); resultSign != sign {
return nil, e.ErrCheckSign
}
Expand Down
2 changes: 1 addition & 1 deletion payReport.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (m *myPayer) Report(param Param) error {
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down
4 changes: 2 additions & 2 deletions payReverseOrder.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func (m *myPayer) ReverseOrder(param Param, certPath string) (ResultParam, error
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down Expand Up @@ -97,7 +97,7 @@ func (m *myPayer) ReverseOrder(param Param, certPath string) (ResultParam, error
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, signType)
sign = result.Sign(signType)
if wxSign, _ := result.GetString("sign"); sign != wxSign {
return nil, e.ErrCheckSign
}
Expand Down
2 changes: 1 addition & 1 deletion payTransfer.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (m *myPayer) Transfers(param Param, p12CertPath string) (ResultParam, error
}
}

sign := param.Sign(m.apiKey, e.SignTypeMD5)
sign := param.Sign(e.SignTypeMD5)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down
4 changes: 2 additions & 2 deletions payTransferBank.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (m *myPayer) TransferBank(param Param, p12CertPath string, publicKeyPath st
param.Add("enc_bank_no", base64.StdEncoding.EncodeToString(encryptBankCard))
param.Add("enc_true_name", base64.StdEncoding.EncodeToString(encryptBankName))

sign := param.Sign(m.apiKey, e.SignTypeMD5)
sign := param.Sign(e.SignTypeMD5)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand All @@ -90,7 +90,7 @@ func (m *myPayer) TransferBank(param Param, p12CertPath string, publicKeyPath st
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, e.SignTypeMD5)
sign = result.Sign(e.SignTypeMD5)
if wxSign, _ := result.GetString("sign"); sign != wxSign {
return nil, e.ErrCheckSign
}
Expand Down
4 changes: 2 additions & 2 deletions payTransferBankQuery.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func (m *myPayer) TransferBankQuery(param Param, p12CertPath string) (ResultPara
}
}

sign := param.Sign(m.apiKey, e.SignTypeMD5)
sign := param.Sign(e.SignTypeMD5)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand All @@ -69,7 +69,7 @@ func (m *myPayer) TransferBankQuery(param Param, p12CertPath string) (ResultPara
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, e.SignTypeMD5)
sign = result.Sign(e.SignTypeMD5)
if wxSign, _ := result.GetString("sign"); sign != wxSign {
return nil, e.ErrCheckSign
}
Expand Down
2 changes: 1 addition & 1 deletion payTransferQuery.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func (m *myPayer) TransfersQuery(param Param, p12CertPath string) (ResultParam,
return nil, errors.New("no need param: " + k)
}
}
sign := param.Sign(m.apiKey, e.SignTypeMD5)
sign := param.Sign(e.SignTypeMD5)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down
4 changes: 2 additions & 2 deletions payUnifiedMicro.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func (m *myPayer) UnifiedMicro(param Param) (ResultParam, error) {
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down Expand Up @@ -72,7 +72,7 @@ func (m *myPayer) UnifiedMicro(param Param) (ResultParam, error) {
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, signType)
sign = result.Sign(signType)
if wxSign, _ := result.GetString("sign"); sign != wxSign {
return nil, e.ErrCheckSign
}
Expand Down
4 changes: 2 additions & 2 deletions payUnifiedOrder.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ func (m *myPayer) UnifiedOrder(param Param) (ResultParam, error) {
}
}

sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
//将签名添加到需要发送的参数里
param.Add("sign", sign)

Expand Down Expand Up @@ -110,7 +110,7 @@ func (m *myPayer) UnifiedOrder(param Param) (ResultParam, error) {
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, signType)
sign = result.Sign(signType)
if wxSign, _ := result.GetString("sign"); sign != wxSign {
return nil, e.ErrCheckSign
}
Expand Down
4 changes: 2 additions & 2 deletions payUnifiedQuery.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func (m *myPayer) UnifiedQuery(param Param) (ResultParam, error) {
return nil, errors.New("no need param: " + k)
}
}
sign := param.Sign(m.apiKey, signType)
sign := param.Sign(signType)
param.Add("sign", sign)

reader, err := param.MarshalXML()
Expand Down Expand Up @@ -91,7 +91,7 @@ func (m *myPayer) UnifiedQuery(param Param) (ResultParam, error) {
errDes, _ := result.GetString("err_code_des")
return nil, errors.New(errDes)
}
sign = result.Sign(m.apiKey, signType)
sign = result.Sign(signType)
if wxSign, _ := result.GetString("sign"); sign != wxSign {
return nil, e.ErrCheckSign
}
Expand Down

0 comments on commit 3520256

Please sign in to comment.