결제 위젯 요청시 웹뷰 빈화면
최근 해외결제가 가능한 신규 MID를 발급받아 clientkey를 교체하여 결제 위젯을 호출하면 첨부한 이미지와 같이 결제 화면이 빈화면으로 표기됩니다. 물론 기존 Mid clientkey로 진행시 정상 표기됩니다. 혹시 신규 mid의 경우 결제 위젯창을 정상적으로 확인하려면 따른 설정을 진행해야하는게 있을까요?
- 구 MID clientkey : test_ck_N5OWRapdA8.....
- 신규 MID clientkey : test_ck_Z61JOxRQVE9b.....

31 Replies
위 진행 결과로 아래 실패 메세지가 확인되었습니다.
[INFO:CONSOLE:38] "Unknown Error Error: 존재하지 않는 멀티 결제위젯입니다.", source: https://js.tosspayments.com/v1/payment-widget (38)
결제위젯이라면
ck가 아니라 gck를 쓰셔야하구요
이건 사업자번호 단위라 모든 상점아이디가 동일한 키를 가집니다
개발자센터에서 결제위젯 연동키를 사용해보셔요
기존 구 mid 사용시에 ck를 사용했습니다만... 이 사용 자체가 잘못된 형태일까요? ^^; r기존에 ck로 적용된 형태로 아직도 잘 사용하고 있습니다만...
네, 초기에 연동하신 가맹점의 경우(gck 출시 전) 예외적으로
ck로 사용이 가능하도록 되어있습니다.
사실 지금 시점에서는 잘못된 형태로 연동이 되었다고 보는게 맞습니다.
아, 네 그렇군요 ㅠ 추가로 신규키의 경우 해외 결제가 포함된 결제 UI 설정은 gck로 variantKey가 설정되어야하겠군요?
맞아요
새로 발급된 MID이므로, 해당 화이트리스트 처리가 제외된 것입니다.
이 경우 권장드리는 것은, gck로 통일해서 관리하시는겁니다
신규로 만든 상점에 대해 gck로 추가했지만 실제 연동시에 위와 같은 신규 설정한 결제 UI로 보이지 않고 구 결제 UI로 보이고 있습니다. 혹시 이런 경우에는 어떤 문제가 있을가요? 아니면 결제 위젯 반영시 시간이 조금 필요한지 궁금합니다.


1. varientKey에 클라이언트 키를 입력하는 것이 아니라, 귀사에서 인지할 수 있는 키 (DEFAULT(기본설정값)이나, DOMESTIC, INTERNATIONAL...)로 설정하셔야 합니다.
2. 이후 그 varientKey를 연동 시에 설정해서 보내주셔요.
gck키는 기존처럼 처음 initialise할 때 보내주시면 되세요.
네 가이드대로 진행했습니다만..
현재 사용중인 구 등록한 DEFAULT의 경우 정상적으로 설정한 UI로 나오고 배리언트키를 수정 못하도록 확정되어 설정되어 있습니다. 하지만 신규로 등록한 DEFAULT-NEW의 경우 배리언트키가 수정할수 있으며 설정한 결제 UI가 아닌 계속해서 구 결제 UI로 표기되는 문제가 있습니다. 혹시 추가로 설정해야하는 작업이 있을까요?



그리고 아래 코드와 같이 언어 설정은 영어로 한후 "useInternationalCardOnly"를 true로 설정하였지만 기존대로 한글로만 표기됩니다.
if (it.orderId != null && it.orderName != null) {
viewModel.resultLoading(true)
Timber.d("renderPayment PaymentInfo}")
val paymentInfo = PaymentMethod.PaymentInfo(it.orderId, it.orderName).apply {
customerName = it.userName
customerEmail = viewModel.email
// 다국어 결제창(해외 카드 전용) 설정
useInternationalCardOnly = true
}
paymentWidget.requestPayment(
paymentInfo,
object : PaymentCallback {
override fun onPaymentFailed(fail: TossPaymentResult.Fail) {
Timber.d("renderPayment onPaymentFailed() : ${fail.errorCode} ${fail.errorMessage}")
showToast(fail.errorMessage)
viewModel.resultLoading(false)
binding.buttonPayment.isEnabled = true
}
override fun onPaymentSuccess(success: TossPaymentResult.Success) {
Timber.d("renderPayment onPaymentSuccess()")
viewModel.requestApproval(success.paymentKey, success.orderId)
binding.buttonPayment.isEnabled = true
}
}
)
}
혹시 첨부한 이미지와 같이 상점 어드민에서 API 버전을 1.0으로 변경해야할까요? 현재는 2022-11-16입니다. 변경시 운영중인 결제에 문제가 발생하진 않는지 염려되네요 ㅠ

아니라면... 혹시 해외 결제 카드 심사가 진행중인데 이것과 연관이 있는지 궁금합니다.
일단 하나씩 확인해보시죠
mid알려주세요
넵
신규 mid : rn1apps21j 입니다.
지금기대와 다르게 렌더링되는 varinatKey와
렌더링된 캡처화면 보내ㅜㅈ세요
넵
variantKey: DEFAULT-NEW
입니다.

default-new로 한건 확실한거죠?
음.. 코드상에서 varientkey를 사용하지 않았습니다만...
아뇨 어딘가 있을거에요
아예 안보냈으면
DEFAULT가 될수도있고요
연동하기 | 토스페이먼츠 개발자센터
토스페이먼츠의 간편한 결제 연동 과정을 한눈에 볼 수 있습니다. 각 단계별 설명과 함께 달라지는 UI와 코드를 확인해보세요.
여기 확인햊수에ㅛ
아 기존에 DEFAULT로 설정하고 안보내서 그럴수 있겠네요 ㅠ 다시 확인해보겠습니ㅏㄷ.
감사합니다. 위 설명대로 varientkey 전달하여 이제 의도한 신규 결제 UI 확인되었습니다.
하지만 useInternationalCardOnly를 true로 전달하였지만 영문으로 표기되지 않습니다. 물론 디바이스 및 앱 언어 설정을 영어로 지정된 상태입니다.
아래 관련 적용된 코드입니다.
원래 표기 안되요
useInternationalCardOnly는 해외카드일때만 동작합니다.
해외카드일때만 동작한다는게... 해외 카드용 위젯 설정일때를 말하는걸까요?
현재는 국내+해외카드 형태라 안되는게 맞구요?
바쁘시겠지만 조금만 자세히 설명해주시면 감사드리겠습니다

지금 한글로 뜬다고 하시는 부분이 이부분이시죠?
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
네 맞습니다 해당 화면은 영문 표기는 원래 없는 기능일까요?
네
국내결제수단은 어차피 원천사 화면에서 영어를 지원안합니다.