feat: update prepay id
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
|
|
||||||
"quyun/providers/app"
|
"quyun/providers/app"
|
||||||
"quyun/providers/postgres"
|
"quyun/providers/postgres"
|
||||||
|
"quyun/providers/wechat"
|
||||||
|
|
||||||
"go.ipao.vip/atom"
|
"go.ipao.vip/atom"
|
||||||
"go.ipao.vip/atom/container"
|
"go.ipao.vip/atom/container"
|
||||||
@@ -18,6 +19,7 @@ func Default(providers ...container.ProviderContainer) container.Providers {
|
|||||||
return append(container.Providers{
|
return append(container.Providers{
|
||||||
app.DefaultProvider(),
|
app.DefaultProvider(),
|
||||||
postgres.DefaultProvider(),
|
postgres.DefaultProvider(),
|
||||||
|
wechat.DefaultProvider(),
|
||||||
}, providers...)
|
}, providers...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,10 +37,10 @@ AppID = "wx47649361b6eba174"
|
|||||||
AppSecret = "e9cdf19b006cd294a9dae7ad8ae08b72"
|
AppSecret = "e9cdf19b006cd294a9dae7ad8ae08b72"
|
||||||
Token = "W8Xhw5TivYBgY"
|
Token = "W8Xhw5TivYBgY"
|
||||||
EncodingAesKey = "OlgPgMvsl92zy5oErtEzRcziRT2txoN3jgEHV6RQZMY"
|
EncodingAesKey = "OlgPgMvsl92zy5oErtEzRcziRT2txoN3jgEHV6RQZMY"
|
||||||
DevMode = false
|
DevMode = true
|
||||||
|
|
||||||
[WeChat.Pay]
|
[WeChat.Pay]
|
||||||
NotifyURL=""
|
NotifyURL="https://www.baidu.com/go.php"
|
||||||
MechID = "1702644947"
|
MechID = "1702644947"
|
||||||
SerialNo = "4563EC584A35BC84FB27AA4100C934C9A91D59CA"
|
SerialNo = "4563EC584A35BC84FB27AA4100C934C9A91D59CA"
|
||||||
MechName = "佳芃(北京)企业管理咨询有限公司"
|
MechName = "佳芃(北京)企业管理咨询有限公司"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[App]
|
[App]
|
||||||
Mode = "development"
|
Mode = "development"
|
||||||
BaseURI = "baseURI"
|
BaseURI = "baseURI"
|
||||||
Storage = "/Users/rogee/Projects/self/quyun/fixtures"
|
StoragePath = "/Users/rogee/Projects/self/quyun/fixtures"
|
||||||
|
|
||||||
[Http]
|
[Http]
|
||||||
Port = 8088
|
Port = 8088
|
||||||
@@ -28,5 +28,52 @@ DB = 0
|
|||||||
AccessKeyId = "LTAI5t86SjiP9zRd3q2w7jQN"
|
AccessKeyId = "LTAI5t86SjiP9zRd3q2w7jQN"
|
||||||
AccessKeySecret = "hV7spvJuWh8w0EEIXj8NFi2uBlF4aS"
|
AccessKeySecret = "hV7spvJuWh8w0EEIXj8NFi2uBlF4aS"
|
||||||
Bucket ="rogee-test"
|
Bucket ="rogee-test"
|
||||||
|
#Host ="abc"
|
||||||
Region ="cn-beijing"
|
Region ="cn-beijing"
|
||||||
CallbackURL = "https://localhost"
|
CallbackURL = "https://www.baidu.com"
|
||||||
|
|
||||||
|
[WeChat]
|
||||||
|
AppID = "wx47649361b6eba174"
|
||||||
|
AppSecret = "e9cdf19b006cd294a9dae7ad8ae08b72"
|
||||||
|
Token = "W8Xhw5TivYBgY"
|
||||||
|
EncodingAesKey = "OlgPgMvsl92zy5oErtEzRcziRT2txoN3jgEHV6RQZMY"
|
||||||
|
DevMode = false
|
||||||
|
|
||||||
|
[WeChat.Pay]
|
||||||
|
NotifyURL="https://www.baidu.com/go.php"
|
||||||
|
MchID = "1702644947"
|
||||||
|
SerialNo = "4563EC584A35BC84FB27AA4100C934C9A91D59CA"
|
||||||
|
MechName = "佳芃(北京)企业管理咨询有限公司"
|
||||||
|
ApiV3Key="5UBDkxVDY44AKafkqN6YgYxgtkXP6Mw6"
|
||||||
|
PrivateKey="""-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC+GjWdwRorgQXw
|
||||||
|
Z8ouZeW8UsUgjiSUPKLJHGOZQESa09xmzm+DVZWNCPEHJvz1bDmSNXVsQUWRE/+y
|
||||||
|
MwSfe+faq0d4BZiw1ueFbRyj4Vw/x7B2vY0i8yo0VyTnWdC6QZRc+V+dbuPJM1Ok
|
||||||
|
+Qf2yg+NZhz3XuTWvQOscAc9+f3aj8fhXJQlRmNby736w0iDu9EQFvPnkVs10/lW
|
||||||
|
RwICvzEbEMq7D2SSXS/lc/qS84eHYYCnH8b3NGNCt7ifSXPJesGT/+pwBKmPef6T
|
||||||
|
lK0pjgqqiKltP04nYeP7Ujz5r8v/CPebUG6Iuht3EjH84i4UCpcBdI/mD2rJInJ/
|
||||||
|
jiiCjP7tAgMBAAECggEAVYVe94BGsKmTrWpT13m513X4/sNTi2iX5xehavExq+GB
|
||||||
|
trJKEnBvHgqWvBv7EsHESJVKJRBcJn8zucwf2UuZq5MATOtfnLahYzIJ/2PD52GD
|
||||||
|
bnepxb5VD0Tg8j9CmngkMYtyS1X2na48g+wQfCK8ymTUxSholH5l565iY6xSWn8r
|
||||||
|
SD/u/EBLv69i40uocG1hUUicrJZ1wc5T0ct3GpfiA1BfH462/dp6mROONdpwM8IT
|
||||||
|
ltRH4wjIc2nPgE7eNbXlHg+KkqyNNLA+BeN3yn001QwvP6Q0panuCTsVVlvEuGAY
|
||||||
|
RwXbu/0fHFbppIpgfr7AFGRWKTF66Peq3ozsG9jNgQKBgQDviSJxN2Mpdln4i5F3
|
||||||
|
74s8FMtZ5bY63RHHcvJ5/D9G1iDNHFgLJsgdrbAhLqBbqg73EsIT8TsPlAqKPKS8
|
||||||
|
EGKBg75MsMSYu7EmzIURV3Gy+Pou9jOkTUfQfblkiV+uJjWQPlBlfksL1bQnfSvZ
|
||||||
|
Pk1DCwGMb5DMDazAQLP9/wtLYQKBgQDLKz9YHF+wFsnfUjBQngDLCTkxrfxp8y84
|
||||||
|
s/z5IRZIEdfxmnaEeWJXYa0oeQumNLSVHrryvHm3vkBgKexN49TWUGIM3q54gi/R
|
||||||
|
FPXXJKarDEI7C86Th3g+3FPEez5v+CEncmlB9X3kBT0ZFROWD3HHaz2DUKPVmJe1
|
||||||
|
eUOtAN0LDQKBgCoulx8i5taFXgCz61EYoQdajhjtp/KjvZ7G8kZjEm2SBcK5DBQi
|
||||||
|
pzj6vjqJsHmT8AC4j+7dG055/oUresMXi5FNNvTgaC6RVvgDKifMo1wmFkCw4JU9
|
||||||
|
erkPetdmja/oUKRvJM9Kt0KFRq1xkIg4PXjh9krZ1sDoY5STkF7ZTA7hAoGAQhPv
|
||||||
|
xzV7Pac7wwFVK3MoKOD4FBtVRBRO4G9RsKk9OPVsuWyWbWGZRXhEPCyaSFVOAk37
|
||||||
|
WaVJJSSghWY9L9wQxh9gtHTcY99bs/HQP0fxWSJkjBW7+ymNR0ybhgTbeslF5zGD
|
||||||
|
4Gr6peW6SGUdeKnPRJ+xYvsgPgEiHmixRRxJyCUCgYEAoguVZdpDaRDZGGrTghwj
|
||||||
|
F4kMIyEczFeBZtK2JEGSLA6j8uj+oBZ26c6K4sh/Btc0l6IkiXijXbTaH87s52xZ
|
||||||
|
im8aIZZ9jDKUFxtjVUL0l9fjRsCLAvaBbWw3z4EdtOGuYlnhNCheeSd+/Lzqrb1q
|
||||||
|
pnTiwBHnQCMFFL/rNcz/Mmk=
|
||||||
|
-----END PRIVATE KEY-----"""
|
||||||
|
PublicKeyID="PUB_KEY_ID_0117026449472025041400331572000400"
|
||||||
|
# JS pay domain
|
||||||
|
# mp.jdwan.com
|
||||||
|
# quyun.mp.jdwan.com
|
||||||
|
|||||||
@@ -53,7 +53,15 @@ func (c *Client) GetClient() *wechat.ClientV3 {
|
|||||||
return c.payClient
|
return c.payClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) V3TransactionJsapi(ctx context.Context, bm *BodyMap) (*wechat.PrepayRsp, error) {
|
type PrepayData struct {
|
||||||
|
AppID string `json:"app_id"`
|
||||||
|
PrepayID string `json:"prepay_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) V3TransactionJsapi(ctx context.Context, f func(*BodyMap)) (*PrepayData, error) {
|
||||||
|
bm := NewBodyMap(c.config)
|
||||||
|
f(bm)
|
||||||
|
|
||||||
resp, err := c.payClient.V3TransactionJsapi(ctx, bm.bm)
|
resp, err := c.payClient.V3TransactionJsapi(ctx, bm.bm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -63,7 +71,10 @@ func (c *Client) V3TransactionJsapi(ctx context.Context, bm *BodyMap) (*wechat.P
|
|||||||
return nil, errors.New(resp.Error)
|
return nil, errors.New(resp.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp, nil
|
return &PrepayData{
|
||||||
|
AppID: c.config.AppID,
|
||||||
|
PrepayID: resp.Response.PrepayId,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) BodyMap() *BodyMap { return NewBodyMap(c.config) }
|
func (c *Client) BodyMap() *BodyMap { return NewBodyMap(c.config) }
|
||||||
@@ -74,10 +85,10 @@ type BodyMap struct {
|
|||||||
|
|
||||||
func NewBodyMap(c *w.Config) *BodyMap {
|
func NewBodyMap(c *w.Config) *BodyMap {
|
||||||
bm := make(gopay.BodyMap)
|
bm := make(gopay.BodyMap)
|
||||||
bm.Set("sp_appid", c.AppID).
|
bm.Set("appid", c.AppID).
|
||||||
Set("sp_mchid", c.Pay.MchID).
|
Set("mchid", c.Pay.MchID).
|
||||||
Set("notify_url", c.Pay.NotifyURL).
|
Set("notify_url", c.Pay.NotifyURL).
|
||||||
Set("amount", func(bm gopay.BodyMap) {
|
SetBodyMap("amount", func(bm gopay.BodyMap) {
|
||||||
bm.Set("total", 1).
|
bm.Set("total", 1).
|
||||||
Set("currency", "CNY")
|
Set("currency", "CNY")
|
||||||
})
|
})
|
||||||
@@ -121,7 +132,7 @@ func (b *BodyMap) Amount(total int, currency string) *BodyMap {
|
|||||||
// Payer
|
// Payer
|
||||||
func (b *BodyMap) Payer(spOpenId string) *BodyMap {
|
func (b *BodyMap) Payer(spOpenId string) *BodyMap {
|
||||||
return b.SetBodyMap("payer", func(bm gopay.BodyMap) {
|
return b.SetBodyMap("payer", func(bm gopay.BodyMap) {
|
||||||
bm.Set("sp_openid", spOpenId)
|
bm.Set("openid", spOpenId)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
52
backend/providers/wepay/pay_test.go
Normal file
52
backend/providers/wepay/pay_test.go
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
package wepay
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"quyun/app/service/testx"
|
||||||
|
|
||||||
|
. "github.com/smartystreets/goconvey/convey"
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
|
"go.ipao.vip/atom/contracts"
|
||||||
|
"go.uber.org/dig"
|
||||||
|
)
|
||||||
|
|
||||||
|
type WePayInjectParams struct {
|
||||||
|
dig.In
|
||||||
|
Initials []contracts.Initial `group:"initials"`
|
||||||
|
|
||||||
|
Client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
type WePayTestSuite struct {
|
||||||
|
suite.Suite
|
||||||
|
|
||||||
|
WePayInjectParams
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_WePay(t *testing.T) {
|
||||||
|
providers := testx.Default().With(Provide)
|
||||||
|
testx.Serve(providers, t, func(params WePayInjectParams) {
|
||||||
|
suite.Run(t, &WePayTestSuite{WePayInjectParams: params})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *WePayTestSuite) Test_PrePay() {
|
||||||
|
Convey("get prepay", s.T(), func() {
|
||||||
|
Convey("prepay", func() {
|
||||||
|
resp, err := s.Client.V3TransactionJsapi(context.Background(), func(bm *BodyMap) {
|
||||||
|
bm.
|
||||||
|
OutTradeNo(fmt.Sprintf("test_trade_no_%d", time.Now().Unix())).
|
||||||
|
Description("Test transaction").
|
||||||
|
Payer("o5Bzk644x3LOMJsKSZRlqWin74IU")
|
||||||
|
})
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
So(resp, ShouldNotBeNil)
|
||||||
|
|
||||||
|
s.T().Logf("prepay response: %+v", resp)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user