微信支付V3版增加接口

master
李光春 3 years ago
parent f08cd6f899
commit ca2738d9d7

@ -1,3 +1,7 @@
## v1.0.24 / 2021-08-19
- 微信支付V3版增加接口
## v1.0.23 / 2021-08-18
- 优化微信支付V3版

@ -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
```

@ -1,5 +1,5 @@
package go_library
func Version() string {
return "v1.0.23"
return "v1.0.24"
}

@ -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
}

@ -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"`
}

Loading…
Cancel
Save