결제위젯 SDK v2 - 알리페이 결제 시 INVALID_PAYMENT_METHOD 에러
variantKey: foreign-1
SDK: @tosspayments/tosspayments-sdk (결제위젯 v2)
배경:
기존에는 해외결제를 KRW 승인 / KRW 정산으로 운영하고 있었습니다.
최근 USD 승인 / USD 정산으로 변경했으며, 변경 후 알리페이 결제에서 에러가 발생하고 있습니다.
증상:
결제위젯에서 알리페이(Alipay Payment Service) 선택 후 widgets.requestPayment() 호출 시 즉시 아래 에러가 발생합니다. 토스 결제 페이지가 열리지
않고 SDK 단에서 바로 reject됩니다.
code: "INVALID_PAYMENTMETHOD"
message: "Payment has already been requested."
동일 환경에서 페이팔(PayPal)은 정상 결제됩니다.
연동 방식:
// 1. 위젯 초기화
const tossPayments = await loadTossPayments(clientKey);
const widgets = tossPayments.widgets({ customerKey: 'customer{userId}' });
// 2. 금액 설정 (USD)
await widgets.setAmount({ currency: 'USD', value: 105.22 });
// 3. 결제수단 렌더링 (정상적으로 렌더링됨, 알리페이 표시됨)
await widgets.renderPaymentMethods({
selector: '#toss-payment-methods',
variantKey: 'foreign-1',
});
// 4. 결제 요청 → 알리페이 선택 시 여기서 즉시 에러 발생
await widgets.requestPayment({
orderId: 'toss_xxx',
orderName: '상품명',
successUrl: 'https://...',
failUrl: 'https://...',
customerEmail: 'user@example.com',
customerName: 'UserName',
});
확인 사항:
- 상점관리자에서 MID에 Alipay Payment Service 활성화 상태 확인됨
- JCB / Mastercard / VISA / UnionPay 심사승인 상태
- 같은 variantKey, 같은 코드로 PayPal 결제는 정상 동작
- 알리페이를 선택했을 때만 requestPayment 시점에서 즉시 에러 발생
질문:
1. USD결제 USD정산에서 알리페이가 실제 결제 가능한 상태인지 확인 부탁드립니다.
2. KRW→USD 정산 변경 시 알리페이 쪽에서 추가 설정이나 심사가 필요한 건 아닌지 확인 부탁드립니다.
3. 에러 메시지가 "Payment has already been requested."인데, 첫 결제 시도에서도 이 메시지가 나옵니다.