Browse Source

update

add_mode
DengBiao 1 year ago
parent
commit
0516eb2a3b
6 changed files with 141 additions and 13 deletions
  1. +23
    -0
      app/customer/hdl/hdl_demo.go
  2. +9
    -0
      app/enum/enum_sys_cfg.go
  3. +1
    -0
      app/router/customer_router.go
  4. +38
    -0
      app/svc/svc_wx_pay.go
  5. +42
    -13
      go.mod
  6. +28
    -0
      static/wx/merchant/apiclient_key.pem

+ 23
- 0
app/customer/hdl/hdl_demo.go View File

@@ -6,10 +6,12 @@ import (
"applet/app/customer/md"
"applet/app/customer/svc"
"applet/app/e"
svc3 "applet/app/svc"
"context"
"github.com/chromedp/chromedp"
"github.com/chromedp/chromedp/device"
"github.com/gin-gonic/gin"
"github.com/wechatpay-apiv3/wechatpay-go/services/certificates"
"io/ioutil"
)

@@ -31,6 +33,27 @@ func CurlAlipayPlanetEcocampusApiRosterSignUpInfo(c *gin.Context) {
return
}

func DownloadCertificates(c *gin.Context) {
client, err := svc3.NewWxPayClient(c)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
// 发送请求,以下载微信支付平台证书为例
apiSvc := certificates.CertificatesApiService{Client: client}
resp, result, err := apiSvc.DownloadCertificates(c)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}

println("status=%d resp=%s", result.Response.StatusCode, resp)
e.OutSuc(c, map[string]interface{}{
"resp": resp,
}, nil)
return
}

func Demo(c *gin.Context) {
ordNo := c.DefaultQuery("ord_no", "")
svc2.JudgePackageOrdOrdState(ordNo)


+ 9
- 0
app/enum/enum_sys_cfg.go View File

@@ -33,6 +33,9 @@ const (
JsapiPayNotifyUrl = "jsapi_pay_notify_url"
WxAppletAppId = "wx_applet_app_id"
WxAppletAppSecret = "wx_applet_app_secret"
WxMchId = "wx_mch_id"
WxMchApiV3Key = "wx_mch_api_v3_key"
WxMchCertificateSerialNumber = "wx_mch_certificate_serial_number"
)

func (gt SysCfg) String() string {
@@ -93,6 +96,12 @@ func (gt SysCfg) String() string {
return "微信-小程序-appid"
case WxAppletAppSecret:
return "微信-小程序-appSecret"
case WxMchId:
return "微信商户id"
case WxMchApiV3Key:
return "微信商户apiV3密钥"
case WxMchCertificateSerialNumber:
return "微信商户证书序列号"
default:
return "未知"
}


+ 1
- 0
app/router/customer_router.go View File

@@ -17,6 +17,7 @@ func CustomerInit(r *gin.RouterGroup) {

r.GET("/sanHu", hdl.SanHu)
r.POST("/test", hdl.Demo)
r.POST("/downloadCertificates", hdl.DownloadCertificates) //下载微信支付平台证书
r.POST("/curlAlipayPlanetEcocampusApiRosterSignUpInfoTest", hdl.CurlAlipayPlanetEcocampusApiRosterSignUpInfo)
r.POST("/alipayJsApiCallBack", hdl.AlipayJsApiCallBack)



+ 38
- 0
app/svc/svc_wx_pay.go View File

@@ -0,0 +1,38 @@
package svc

import (
"applet/app/db"
"applet/app/enum"
"github.com/gin-gonic/gin"
"github.com/wechatpay-apiv3/wechatpay-go/core"
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
"github.com/wechatpay-apiv3/wechatpay-go/utils"
)

func NewWxPayClient(ctx *gin.Context) (client *core.Client, err error) {
sysCfgDb := db.SysCfgDb{}
sysCfgDb.Set()
sysCfg := sysCfgDb.SysCfgFindWithDb(enum.WxMchId, enum.WxMchApiV3Key, enum.WxMchCertificateSerialNumber)

var (
mchID string = sysCfg[enum.WxMchId] // 商户号
mchCertificateSerialNumber string = sysCfg[enum.WxMchCertificateSerialNumber] // 商户证书序列号
mchAPIv3Key string = sysCfg[enum.WxMchApiV3Key] // 商户APIv3密钥
)

// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
mchPrivateKey, err := utils.LoadPrivateKeyWithPath("./static/wx/merchant/apiclient_key.pem")
if err != nil {
return
}

// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
opts := []core.ClientOption{
option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
}
client, err = core.NewClient(ctx, opts...)
if err != nil {
return
}
return
}

+ 42
- 13
go.mod View File

@@ -1,6 +1,6 @@
module applet

go 1.15
go 1.18

require (
github.com/360EntSecGroup-Skylar/excelize v1.4.1
@@ -14,27 +14,56 @@ require (
github.com/go-playground/validator/v10 v10.4.2
github.com/go-redis/redis v6.15.9+incompatible
github.com/go-sql-driver/mysql v1.7.1
github.com/golang/protobuf v1.5.2 // indirect
github.com/gomodule/redigo v2.0.0+incompatible
github.com/kr/text v0.2.0 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/makiuchi-d/gozxing v0.0.0-20210324052758-57132e828831
github.com/mcuadros/go-defaults v1.2.0
github.com/medivhzhan/weapp/v2 v2.5.0 // indirect
github.com/onsi/ginkgo v1.15.0 // indirect
github.com/onsi/gomega v1.10.5 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/medivhzhan/weapp/v2 v2.5.0
github.com/qiniu/api.v7/v7 v7.8.2
github.com/robfig/cron/v3 v3.0.1
github.com/sony/sonyflake v1.0.0
github.com/syyongx/php2go v0.9.4
github.com/ugorji/go v1.2.5 // indirect
go.uber.org/multierr v1.6.0 // indirect
github.com/wechatpay-apiv3/wechatpay-go v0.2.16
go.uber.org/zap v1.16.0
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
golang.org/x/net v0.7.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0
gopkg.in/yaml.v2 v2.4.0
honnef.co/go/tools v0.0.1-2020.1.4 // indirect
xorm.io/xorm v1.3.2
)

require (
github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89 // indirect
github.com/chromedp/sysutil v1.0.0 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/gobwas/httphead v0.1.0 // indirect
github.com/gobwas/pool v0.2.1 // indirect
github.com/gobwas/ws v1.2.1 // indirect
github.com/goccy/go-json v0.8.1 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/gookit/color v1.3.6 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-isatty v0.0.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/onsi/ginkgo v1.15.0 // indirect
github.com/onsi/gomega v1.10.5 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/syndtr/goleveldb v1.0.0 // indirect
github.com/ugorji/go/codec v1.2.5 // indirect
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
golang.org/x/net v0.7.0 // indirect
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a // indirect
golang.org/x/sys v0.6.0 // indirect
golang.org/x/text v0.7.0 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
google.golang.org/protobuf v1.26.0 // indirect
honnef.co/go/tools v0.0.1-2020.1.4 // indirect
xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 // indirect
)

+ 28
- 0
static/wx/merchant/apiclient_key.pem View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDGgwnKlRY+VV+O
JPsHjOMqwD5xUmX5aEZyI/LwL4xG7eRntSRh+iEGZFHAhS14oaSUokPeeJBB3UIP
UTvGzANQysLF7n52K9MCst2rzEdqP2eCIZZxzdr78AbnSqP41CbDaEOG8tBtAYg1
AWUA8vej8BpyPS66UeoL8cZ6ymHW3eT9lUno6jmQ6U+aZDKDKVoXNMdlVr9E3TWy
fa9FI63nzvXu3XKftrfXkupAE+KDdHS0cyYHWHJrRSSfqR3ibSeXJILs0fZbUWtz
JdbZJhMqZ7oGlxFb06kvAEkHUmfbBKBvqMUjWoBDYfdT2EfAYQukXBXk4qjn1HP6
OSsMMpMXAgMBAAECggEAFscyeGxjAQQK0uSraVJhPqaQg7BQwy2T58T4O1c5YWoq
qzu90QBCidk5CD4/2XeyyttTrlNnOieJTPilQ0pllv+tGckj+atNqyGbDfuCtk5Q
Mj5oZOaaGg6QvDl0VzkAuatdFD8Ia3mhh3OBg3pdsBH89t7OXdLIaFZ1z+EpGN5p
hS9j/pL63/ND/zbUsTinXlvnki5T55TPJQgSTG9Kaa9bFg4ovcPTjceKlgx5CbXO
0qp+2AAM5JKSFry1uLnaata8lgHAb2trki8xWp8nLV3SvIHY67owVacy44SnXcqw
/lU0RrQDWAjhCDsnbYUcIeV+2VzAcrPZEZXJ82ETAQKBgQDo2UewxxcbfUNUcJnn
OW7hHliRpjUY//N2/G7uiBskVrRxdJxSihVPcnvWqQbu6BXopfs6jpBXAic9N9i9
ONlMfNIFHsiSeRUw+sMJCXFj8LKf7qwp/O4i4s82FInZjhESLiBytry5SJB26SHn
ntmXYIKwV5virUtrJF9DJvml9QKBgQDaP8dLT+KXcNoi1yy/k1nFiItlMvKZilXo
UQvHqnXI/SmbK4FwSpTV0jF7KVRV+9EvLBvRPf5omREmRYo7+9a+nqPw1+XEQJss
Y93IB8ppFH+4Pm8TkokQG3Vpu4OON6OHaaC+aRDoVv99p9izt28o3E3u2a55cn29
fASK/NAhWwKBgCXIK9PJWjyBpM0swCw+q3knvWNUvsThsxWZfD6EIzNQRlMqgrr5
4N9VSjbYkmFtkzB+zjcALvePR+KtDyQU911r24AtMIpjz0Z1SfRLbfSzd6hvx8vA
WLucZdb2mi+M18RFa8pxUEoYNii1R2UX52KirFIExSyQxe4KptJ0nomJAoGADpHJ
ZR6tGrz+4uqIYzWb/ZLS82uGRHe2qm6WobqgaE12NJSf7HYeH3QLt5QXvDG2UjbY
mIxR6nulaG+l/cEfIdSHTzGqdgJ2GW2FRbA3c/JZYFxSn/TdT4T1vpw0+Q5/zS9g
+rUa2tfL8IB+9+hb9FdYoIRJoHPjLv4Tc4/S+RcCgYEAwaALk8h2dzwdkQ9SqPVZ
UMYuwjJwKWraw8DgttpDvZW7mM1QUe8xM5RTR/pEw9GNveNVPgJR9ZMn7DHDcJow
orFFMk8JU6TjYX57cOpPF11SVyLDZ8L9O8B2x0ganNWF6Dqt2VS7m9LBdk9ZJM/c
GbUdBkFO0THQ91leDwRLxMg=
-----END PRIVATE KEY-----

Loading…
Cancel
Save