diff --git a/service/waffo_pancake.go b/service/waffo_pancake.go
index 766a686d..5387eab8 100644
--- a/service/waffo_pancake.go
+++ b/service/waffo_pancake.go
@@ -103,6 +103,9 @@ func CreateWaffoPancakeCheckoutSession(ctx context.Context, params *WaffoPancake
if strings.TrimSpace(params.BuyerIdentity) == "" {
return nil, fmt.Errorf("missing buyer identity")
}
+ if strings.TrimSpace(params.OrderMerchantExternalID) == "" {
+ return nil, fmt.Errorf("missing order merchant external id")
+ }
client, err := newWaffoPancakeClient()
if err != nil {
return nil, fmt.Errorf("build Waffo Pancake client: %w", err)
diff --git a/service/waffo_pancake_test.go b/service/waffo_pancake_test.go
index 6f89f045..41c91a15 100644
--- a/service/waffo_pancake_test.go
+++ b/service/waffo_pancake_test.go
@@ -1,6 +1,7 @@
package service
import (
+ "context"
"fmt"
"strings"
"testing"
@@ -40,18 +41,29 @@ func setupWaffoPancakeTestDB(t *testing.T) *gorm.DB {
return db
}
+func TestCreateWaffoPancakeCheckoutSession_RequiresOrderMerchantExternalID(t *testing.T) {
+ session, err := CreateWaffoPancakeCheckoutSession(context.Background(), &WaffoPancakeCreateSessionParams{
+ ProductID: "PROD_checkout_guard",
+ BuyerIdentity: WaffoPancakeBuyerIdentityFromUserID(1),
+ })
+
+ require.Error(t, err)
+ require.Nil(t, session)
+ require.Contains(t, err.Error(), "missing order merchant external id")
+}
+
func TestResolveWaffoPancakeTradeNo_UsesWebhookOrderIDWhenLocalOrderExists(t *testing.T) {
db := setupWaffoPancakeTestDB(t)
topUp := &model.TopUp{
- UserId: 1,
- Amount: 10,
- Money: 29,
- TradeNo: "ORD_5dXBtmF2HLlHfbPNm0Wcnz",
+ UserId: 1,
+ Amount: 10,
+ Money: 29,
+ TradeNo: "ORD_5dXBtmF2HLlHfbPNm0Wcnz",
PaymentMethod: model.PaymentMethodWaffoPancake,
PaymentProvider: model.PaymentProviderWaffoPancake,
- CreateTime: time.Now().Unix(),
- Status: common.TopUpStatusPending,
+ CreateTime: time.Now().Unix(),
+ Status: common.TopUpStatusPending,
}
require.NoError(t, db.Create(topUp).Error)
@@ -70,14 +82,14 @@ func TestResolveWaffoPancakeTradeNo_RejectsBuyerIdentityMismatch(t *testing.T) {
db := setupWaffoPancakeTestDB(t)
topUp := &model.TopUp{
- UserId: 42,
- Amount: 10,
- Money: 29,
- TradeNo: "ORD_identity_mismatch_case",
+ UserId: 42,
+ Amount: 10,
+ Money: 29,
+ TradeNo: "ORD_identity_mismatch_case",
PaymentMethod: model.PaymentMethodWaffoPancake,
PaymentProvider: model.PaymentProviderWaffoPancake,
- CreateTime: time.Now().Unix(),
- Status: common.TopUpStatusPending,
+ CreateTime: time.Now().Unix(),
+ Status: common.TopUpStatusPending,
}
require.NoError(t, db.Create(topUp).Error)
@@ -99,14 +111,14 @@ func TestResolveWaffoPancakeTradeNo_RejectsMissingBuyerIdentity(t *testing.T) {
db := setupWaffoPancakeTestDB(t)
topUp := &model.TopUp{
- UserId: 7,
- Amount: 10,
- Money: 29,
- TradeNo: "ORD_missing_identity",
+ UserId: 7,
+ Amount: 10,
+ Money: 29,
+ TradeNo: "ORD_missing_identity",
PaymentMethod: model.PaymentMethodWaffoPancake,
PaymentProvider: model.PaymentProviderWaffoPancake,
- CreateTime: time.Now().Unix(),
- Status: common.TopUpStatusPending,
+ CreateTime: time.Now().Unix(),
+ Status: common.TopUpStatusPending,
}
require.NoError(t, db.Create(topUp).Error)
@@ -136,14 +148,14 @@ func TestResolveWaffoPancakeTradeNo_FailsWhenWebhookOrderIDIsUnknown(t *testing.
require.NoError(t, db.Create(user).Error)
topUp := &model.TopUp{
- UserId: user.Id,
- Amount: 10,
- Money: 29,
- TradeNo: "WAFFO_PANCAKE-42-123456-abc123",
+ UserId: user.Id,
+ Amount: 10,
+ Money: 29,
+ TradeNo: "WAFFO_PANCAKE-42-123456-abc123",
PaymentMethod: model.PaymentMethodWaffoPancake,
PaymentProvider: model.PaymentProviderWaffoPancake,
- CreateTime: time.Now().Unix(),
- Status: common.TopUpStatusPending,
+ CreateTime: time.Now().Unix(),
+ Status: common.TopUpStatusPending,
}
require.NoError(t, db.Create(topUp).Error)
diff --git a/web/classic/src/components/settings/PaymentSetting.jsx b/web/classic/src/components/settings/PaymentSetting.jsx
index d2d35558..88000112 100644
--- a/web/classic/src/components/settings/PaymentSetting.jsx
+++ b/web/classic/src/components/settings/PaymentSetting.jsx
@@ -52,9 +52,6 @@ const PaymentSetting = () => {
StripeMinTopUp: 1,
StripePromotionCodesEnabled: false,
- WaffoPancakeMerchantID: '',
- WaffoPancakePrivateKey: '',
- WaffoPancakeReturnURL: '',
'payment_setting.compliance_confirmed': false,
'payment_setting.compliance_terms_version': '',
'payment_setting.compliance_confirmed_at': 0,
@@ -165,11 +162,6 @@ const PaymentSetting = () => {
case 'StripeMinTopUp':
newInputs[item.key] = parseFloat(item.value);
break;
- case 'WaffoPancakeMerchantID':
- case 'WaffoPancakePrivateKey':
- case 'WaffoPancakeReturnURL':
- newInputs[item.key] = item.value;
- break;
default:
if (item.key.endsWith('Enabled')) {
newInputs[item.key] = toBoolean(item.value);
@@ -304,13 +296,6 @@ const PaymentSetting = () => {
hideSectionTitle
/>
-
-
-