diff --git a/internal/logic/notify/ePayNotifyLogic.go b/internal/logic/notify/ePayNotifyLogic.go index 8def591..efdd127 100644 --- a/internal/logic/notify/ePayNotifyLogic.go +++ b/internal/logic/notify/ePayNotifyLogic.go @@ -57,7 +57,7 @@ func (l *EPayNotifyLogic) EPayNotify(req *types.EPayNotifyRequest) error { return err } // Verify sign - client := epay.NewClient(config.Pid, config.Url, config.Key) + client := epay.NewClient(config.Pid, config.Url, config.Key, config.Type) if !client.VerifySign(urlParamsToMap(l.ctx.Request.URL.RawQuery)) && !l.svcCtx.Config.Debug { l.Logger.Error("[EPayNotify] Verify sign failed") return nil diff --git a/internal/logic/public/portal/purchaseCheckoutLogic.go b/internal/logic/public/portal/purchaseCheckoutLogic.go index 0a002f7..f016a49 100644 --- a/internal/logic/public/portal/purchaseCheckoutLogic.go +++ b/internal/logic/public/portal/purchaseCheckoutLogic.go @@ -267,7 +267,7 @@ func (l *PurchaseCheckoutLogic) epayPayment(config *payment.Payment, info *order return "", errors.Wrapf(xerr.NewErrCode(xerr.ERROR), "Unmarshal error: %s", err.Error()) } // Initialize EPay client with merchant credentials - client := epay.NewClient(epayConfig.Pid, epayConfig.Url, epayConfig.Key) + client := epay.NewClient(epayConfig.Pid, epayConfig.Url, epayConfig.Key, epayConfig.Type) // Convert order amount to CNY using current exchange rate amount, err := l.queryExchangeRate("CNY", info.Amount) @@ -309,7 +309,7 @@ func (l *PurchaseCheckoutLogic) CryptoSaaSPayment(config *payment.Payment, info return "", errors.Wrapf(xerr.NewErrCode(xerr.ERROR), "Unmarshal error: %s", err.Error()) } // Initialize EPay client with merchant credentials - client := epay.NewClient(epayConfig.AccountID, epayConfig.Endpoint, epayConfig.SecretKey) + client := epay.NewClient(epayConfig.AccountID, epayConfig.Endpoint, epayConfig.SecretKey, epayConfig.Type) // Convert order amount to CNY using current exchange rate amount, err := l.queryExchangeRate("CNY", info.Amount) diff --git a/internal/model/payment/payment.go b/internal/model/payment/payment.go index 46ee0a0..ad2f046 100644 --- a/internal/model/payment/payment.go +++ b/internal/model/payment/payment.go @@ -85,9 +85,10 @@ func (l *AlipayF2FConfig) Unmarshal(data []byte) error { } type EPayConfig struct { - Pid string `json:"pid"` - Url string `json:"url"` - Key string `json:"key"` + Pid string `json:"pid"` + Url string `json:"url"` + Key string `json:"key"` + Type string `json:"type"` } func (l *EPayConfig) Marshal() ([]byte, error) { @@ -109,6 +110,7 @@ type CryptoSaaSConfig struct { Endpoint string `json:"endpoint"` AccountID string `json:"account_id"` SecretKey string `json:"secret_key"` + Type string `json:"type"` } func (l *CryptoSaaSConfig) Marshal() ([]byte, error) { diff --git a/pkg/payment/epay/epay.go b/pkg/payment/epay/epay.go index ae1315e..8933d9f 100644 --- a/pkg/payment/epay/epay.go +++ b/pkg/payment/epay/epay.go @@ -14,9 +14,10 @@ import ( ) type Client struct { - Pid string - Url string - Key string + Pid string + Url string + Key string + Type string } type Order struct { @@ -37,11 +38,12 @@ type queryOrderStatusResponse struct { Status int `json:"status"` } -func NewClient(pid, url, key string) *Client { +func NewClient(pid, url, key string, Type string) *Client { return &Client{ - Pid: pid, - Url: url, - Key: key, + Pid: pid, + Url: url, + Key: key, + Type: Type, } } @@ -53,6 +55,7 @@ func (c *Client) CreatePayUrl(order Order) string { params.Set("notify_url", order.NotifyUrl) params.Set("out_trade_no", order.OrderNo) params.Set("pid", c.Pid) + params.Set("type", c.Type) params.Set("return_url", order.ReturnUrl) // Generate the sign using the CreateSign function @@ -117,6 +120,7 @@ func (c *Client) structToMap(order Order) map[string]string { result["notify_url"] = order.NotifyUrl result["out_trade_no"] = order.OrderNo result["pid"] = c.Pid + result["type"] = c.Type result["return_url"] = order.ReturnUrl return result } diff --git a/pkg/payment/epay/epay_test.go b/pkg/payment/epay/epay_test.go index a3c6884..87265e6 100644 --- a/pkg/payment/epay/epay_test.go +++ b/pkg/payment/epay/epay_test.go @@ -3,7 +3,7 @@ package epay import "testing" func TestEpay(t *testing.T) { - client := NewClient("", "http://127.0.0.1", "") + client := NewClient("", "http://127.0.0.1", "", "") order := Order{ Name: "测试", OrderNo: "123456789", @@ -19,7 +19,7 @@ func TestEpay(t *testing.T) { func TestQueryOrderStatus(t *testing.T) { t.Skipf("Skip TestQueryOrderStatus test") - client := NewClient("Pid", "Url", "Key") + client := NewClient("Pid", "Url", "Key", "Type") orderNo := "123456789" status := client.QueryOrderStatus(orderNo) t.Logf("OrderNo: %s, Status: %v\n", orderNo, status) @@ -40,7 +40,7 @@ func TestVerifySign(t *testing.T) { } key := "LbTabbB580zWyhXhyyww7wwvy5u8k0wl" - c := NewClient("Pid", "Url", key) + c := NewClient("Pid", "Url", key, "Type") if c.VerifySign(params) { t.Logf("Sign verification success!") } else { diff --git a/pkg/payment/platform.go b/pkg/payment/platform.go index 42b8815..7ad12ea 100644 --- a/pkg/payment/platform.go +++ b/pkg/payment/platform.go @@ -65,9 +65,10 @@ func GetSupportedPlatforms() []types.PlatformInfo { Platform: EPay.String(), PlatformUrl: "", PlatformFieldDescription: map[string]string{ - "pid": "PID", - "url": "URL", - "key": "Key", + "pid": "PID", + "url": "URL", + "key": "Key", + "type": "Type", }, }, {