feat: update prepay id

This commit is contained in:
yanghao05
2025-04-14 20:48:50 +08:00
parent e3cee91758
commit 69e3dd1070
5 changed files with 122 additions and 10 deletions

View File

@@ -6,6 +6,7 @@ import (
"quyun/providers/app"
"quyun/providers/postgres"
"quyun/providers/wechat"
"go.ipao.vip/atom"
"go.ipao.vip/atom/container"
@@ -18,6 +19,7 @@ func Default(providers ...container.ProviderContainer) container.Providers {
return append(container.Providers{
app.DefaultProvider(),
postgres.DefaultProvider(),
wechat.DefaultProvider(),
}, providers...)
}

View File

@@ -37,10 +37,10 @@ AppID = "wx47649361b6eba174"
AppSecret = "e9cdf19b006cd294a9dae7ad8ae08b72"
Token = "W8Xhw5TivYBgY"
EncodingAesKey = "OlgPgMvsl92zy5oErtEzRcziRT2txoN3jgEHV6RQZMY"
DevMode = false
DevMode = true
[WeChat.Pay]
NotifyURL=""
NotifyURL="https://www.baidu.com/go.php"
MechID = "1702644947"
SerialNo = "4563EC584A35BC84FB27AA4100C934C9A91D59CA"
MechName = "佳芃(北京)企业管理咨询有限公司"

View File

@@ -1,7 +1,7 @@
[App]
Mode = "development"
BaseURI = "baseURI"
Storage = "/Users/rogee/Projects/self/quyun/fixtures"
StoragePath = "/Users/rogee/Projects/self/quyun/fixtures"
[Http]
Port = 8088
@@ -28,5 +28,52 @@ DB = 0
AccessKeyId = "LTAI5t86SjiP9zRd3q2w7jQN"
AccessKeySecret = "hV7spvJuWh8w0EEIXj8NFi2uBlF4aS"
Bucket ="rogee-test"
#Host ="abc"
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

View File

@@ -53,7 +53,15 @@ func (c *Client) GetClient() *wechat.ClientV3 {
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)
if err != nil {
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 resp, nil
return &PrepayData{
AppID: c.config.AppID,
PrepayID: resp.Response.PrepayId,
}, nil
}
func (c *Client) BodyMap() *BodyMap { return NewBodyMap(c.config) }
@@ -74,10 +85,10 @@ type BodyMap struct {
func NewBodyMap(c *w.Config) *BodyMap {
bm := make(gopay.BodyMap)
bm.Set("sp_appid", c.AppID).
Set("sp_mchid", c.Pay.MchID).
bm.Set("appid", c.AppID).
Set("mchid", c.Pay.MchID).
Set("notify_url", c.Pay.NotifyURL).
Set("amount", func(bm gopay.BodyMap) {
SetBodyMap("amount", func(bm gopay.BodyMap) {
bm.Set("total", 1).
Set("currency", "CNY")
})
@@ -121,7 +132,7 @@ func (b *BodyMap) Amount(total int, currency string) *BodyMap {
// Payer
func (b *BodyMap) Payer(spOpenId string) *BodyMap {
return b.SetBodyMap("payer", func(bm gopay.BodyMap) {
bm.Set("sp_openid", spOpenId)
bm.Set("openid", spOpenId)
})
}

View 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)
})
})
}