kokoko.kojima
kokoko.kojima
TPToss payments 개발자 커뮤니티
Created by kokoko.kojima on 10/3/2024 in #❓┃연동개발-문의
결제 위젯 연동 중 Forbidden Error
결제 위젯 연동 중인데, 당장은 테스트 키를 이용해서 결제하는 것을 테스트 중입니다. 로컬호스트에서는 테스트 결제가 올바르게 처리가 되는데, 프로덕션에서도 똑같이 결제를 해도 forbidden 에러가 뜹니다. 로컬호스트에서 같은 흐름으로 curl 요청을 날려서 테스트 결제가 올바르게 처리가 되었는데, 프로덕션 환경에서 curl 요청을 직접 날릴때는 테스트 결제가 처리되지 않고 forbidden 에러가 뜹니다. 테스트 결제는 로컬호스트 환경에서만 동작하는 것일까요?
16 replies
TPToss payments 개발자 커뮤니티
Created by kokoko.kojima on 3/2/2023 in #❓┃연동개발-문의
Flutter Webview에서 Javascript SDK 연동할 수 있는 방법이 있나요?
모바일 웹뷰 환경에서 javascript SDK를 활용해서 결제를 시도하면, "모바일 화면에서는 Promise 방식을 지원하지 않습니다." 에러가 표시됩니다. 아래는 flutter_webview 패키지를 사용하여 결제를 시도한 코드입니다.
// 카스텀 웹뷰 widget을 포함하는 widget
class TossPayment extends StatelessWidget {
final Widget? initialChild;
final String clientKey;
final PaymentData? data;
final callback;
final Set<Factory<OneSequenceGestureRecognizer>>? gestureRecognizers;

TossPayment({
Key? key,
this.initialChild,
required this.clientKey,
required this.data,
required this.callback,
this.gestureRecognizers,
}) : super(key: key);

@override
Widget build(BuildContext context) {
var redirectUrl = UrlData.redirectUrl;
return TossPaymentsWebView(
type: ActionType.payment,
initialChild: this.initialChild,
gestureRecognizers: this.gestureRecognizers,
executeJS: (WebViewController controller) {
controller.runJavascript('''
var tossPayments = TossPayments("${this.clientKey}");
tossPayments.requestPayment("카드", ${jsonEncode(this.data?.toJson())})
''');
},
customPGAction: (WebViewController controller) {
return null;
},
useQueryData: (Map<String, String> data) {
this.callback(data);
},
isPaymentOver: (String url) {
if (url.startsWith(redirectUrl)) {
return true;
}

return false;
},
);
}
}
// 카스텀 웹뷰 widget을 포함하는 widget
class TossPayment extends StatelessWidget {
final Widget? initialChild;
final String clientKey;
final PaymentData? data;
final callback;
final Set<Factory<OneSequenceGestureRecognizer>>? gestureRecognizers;

TossPayment({
Key? key,
this.initialChild,
required this.clientKey,
required this.data,
required this.callback,
this.gestureRecognizers,
}) : super(key: key);

@override
Widget build(BuildContext context) {
var redirectUrl = UrlData.redirectUrl;
return TossPaymentsWebView(
type: ActionType.payment,
initialChild: this.initialChild,
gestureRecognizers: this.gestureRecognizers,
executeJS: (WebViewController controller) {
controller.runJavascript('''
var tossPayments = TossPayments("${this.clientKey}");
tossPayments.requestPayment("카드", ${jsonEncode(this.data?.toJson())})
''');
},
customPGAction: (WebViewController controller) {
return null;
},
useQueryData: (Map<String, String> data) {
this.callback(data);
},
isPaymentOver: (String url) {
if (url.startsWith(redirectUrl)) {
return true;
}

return false;
},
);
}
}
10 replies
TPToss payments 개발자 커뮤니티
Created by kokoko.kojima on 12/29/2022 in #❓┃연동개발-문의
환불 계좌 검증에 대해....
안녕하세요. 현재 개발중인 프로젝트와 관련해서 TossPayments API 클라이언트를 개발중입니다. 가상계좌로 결제된 항목을 결제 취소할때 환불받을 계좌번호, 예금주, 은행명을 필수로 명시해야 하는데요. 계좌번호, 예금주, 은행명이 유효하단걸 검증할 수 있는 API가 있나요? Iamport에서는 /vbanks/holder?bank_code=${bank_code}&bank_num=${bank_num} 과 같은 경로로 유효한지 검증하면 되는데, TossPayments API 문서에서는 이와 관련해서 확인하기 어렵습니다. 아니면, https://docs.tosspayments.com/reference/error-codes#%EA%B2%B0%EC%A0%9C-%EC%B7%A8%EC%86%8C 여기서 명시한대로 환불 시도 후 에러코드를 반환하는 식으로 구현을 생각하고 있습니다만, 그닥 깔끔한 방법은 아닌 것 같습니다.
8 replies