diff --git a/CHANGELOG.md b/CHANGELOG.md index b951b484..7bf41486 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## v1.0.24 / 2021-08-19 + +- 微信支付V3版增加接口 + ## v1.0.23 / 2021-08-18 - 优化微信支付V3版 diff --git a/README.md b/README.md index 83009cd5..d0290107 100644 --- a/README.md +++ b/README.md @@ -11,5 +11,5 @@ ## Install 安装 ```Importing -go get -v -u gitee.com/dtapps/go-library@v1.0.23 +go get -v -u gitee.com/dtapps/go-library@v1.0.24 ``` diff --git a/library.go b/library.go index 68de15be..9edaedc4 100644 --- a/library.go +++ b/library.go @@ -1,5 +1,5 @@ package go_library func Version() string { - return "v1.0.23" + return "v1.0.24" } diff --git a/service/wechatpayapiv3/pay_jsapi.go b/service/wechatpayapiv3/pay_jsapi.go new file mode 100644 index 00000000..bea598c8 --- /dev/null +++ b/service/wechatpayapiv3/pay_jsapi.go @@ -0,0 +1,58 @@ +package wechatpayapiv3 + +import ( + "fmt" + "gitee.com/dtapps/go-library/utils/random" + "io/ioutil" + "os" + "time" +) + +// GetJsApi 入参 +type GetJsApi struct { + Package string `json:"package"` +} + +// GetJsApiResult 返回参数 +type GetJsApiResult struct { + AppId string // 应用ID + TimeStamp string // 时间戳 + NonceStr string // 随机字符串 + Package string // 订单详情扩展字符串 + SignType string // 签名方式 + PaySign string // 签名 +} + +// GetJsApi JSAPI调起支付API https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml +func (app *App) GetJsApi(param GetJsApi) (params GetJsApiResult, err error) { + + // sign params + timeStamp := time.Now().Unix() + nonce := random.Alphanumeric(32) + + params.AppId = app.AppId + params.TimeStamp = fmt.Sprintf("%v", timeStamp) + params.NonceStr = nonce + params.Package = param.Package + + // 签名 + message := fmt.Sprintf("%s\n%s\n%s\n%s\n", app.AppId, fmt.Sprintf("%v", timeStamp), nonce, param.Package) + open, err := os.Open(app.MchPrivateKey) + if err != nil { + return params, err + } + defer open.Close() + privateKey, err := ioutil.ReadAll(open) + if err != nil { + return params, err + } + signBytes, err := app.signPKCS1v15(message, privateKey) + if err != nil { + return params, err + } + + sign := app.base64EncodeStr(signBytes) + params.PaySign = sign + params.SignType = "RSA" + return params, nil +} diff --git a/service/wechatpayapiv3/pay_transactions_jsapi.go b/service/wechatpayapiv3/pay_transactions_jsapi.go index b6079611..49b24708 100644 --- a/service/wechatpayapiv3/pay_transactions_jsapi.go +++ b/service/wechatpayapiv3/pay_transactions_jsapi.go @@ -5,6 +5,7 @@ import ( "time" ) +// PayTransactionsJsapi 入参 type PayTransactionsJsapi struct { Description string `json:"description"` //【是】商品描述 OutTradeNo string `json:"out_trade_no"` //【是】商户订单号 @@ -66,6 +67,7 @@ type PayTransactionsJsapiSettleInfo struct { ProfitSharing bool `json:"profit_sharing,omitempty"` //【否】是否指定分账 } +// PayTransactionsJsapiResult 返回参数 type PayTransactionsJsapiResult struct { PrepayId string `json:"prepay_id"` }