박상우
박상우2w ago

RN android 에서만 겪는 초기화 이슈 문의드립니다. 비슷한 사례가 있었다면 어떻게 안내해주셨는지 궁금합니다.

https://github.com/tosspayments/tosspayments-sample-v1/blob/main/payment-widget/react-native/App.tsx 위 코드 App.tsx 참고해서 현재 ios 는 문제 없이 잘 작동합니다. android에서만 {paymentWidgetControl && ( <PaymentMethodWidget {paymentWidgetControl && ( <PaymentMethodWidget selector="payment-methods" onLoadEnd={async () => { console.debug('📦 [PaymentMethodWidget] onLoadEnd 시작'); try { // 여기서 코드가 멈춥니다~! const control = await paymentWidgetControl.renderPaymentMethods( 'payment-methods', { value: TRAINER_MATCHING_PRICE, currency: 'KRW', country: 'KR' }, { variantKey: 'DEFAULT' } ); // 여기까지 안 오는 문제가 발생합니다. // async await 는 시점 디버깅을 위해 추가했습니다. then 사용해도 동일하게 android 에서만 위 renderPaymentMethods 메소드가 동작하지 않습니다. 리소스 경쟁이 발생하는 건지, 교착상태에 빠진 걸로 보입니다. console.debug('✅ renderPaymentMethods 완료:', control); setPaymentMethodWidgetControl(control); } catch (error: any) { console.error('❌ renderPaymentMethods 오류:', JSON.stringify(error)); Alert.alert('결제 위젯 초기화 오류', error.message || JSON.stringify(error)); } }} /> )} 코드 일 부분인데 주석으로 상세하게 이슈를 남겼습니다. 감사합니다.
GitHub
tosspayments-sample-v1/payment-widget/react-native/App.tsx at main ...
토스페이먼츠 SDK v1 샘플 프로젝트입니다. . Contribute to tosspayments/tosspayments-sample-v1 development by creating an account on GitHub.
62 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
박상우
박상우OP2w ago
No description
Ayaan이안
Ayaan이안2w ago
renderPaymentMethods가 지연되는 것 같은데 네트워크가 혹시 와이파이라면 데이터로 해보셔요
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
박상우
박상우OP4d ago
데이터로 했지만 여전히 안 되네용... 혹시 다른 방법있을까요
Ayaan이안
Ayaan이안4d ago
네트워크 디버깅을 통해서 어떤 요청에서 딜레이가 생기는지를 확인해보아야 할것 같네요.
박상우
박상우OP4d ago
확인 후 바로 공유드리겠습니다 모든 요청은 문제 없이 잘 작동합니다 다만! 승인 후 돌아온 응답 객체에 해당 메소드가 없어서 발생한 문제입니다~! 추가 질문드립니다. 혹시 이런 경우도 있나요? RN expo AOS 환경입니다. 응답 객체 크기가 너무 커서 다 못받는 경우도 있을까요?
이실장
이실장4d ago
일반적인 상황은 아닙니다. 결제승인은 됬는데 응답을 정상적으로 못받고 계신건가요?
박상우
박상우OP4d ago
2번까지 도달을 안 합니다. 1번은 로그에 나오구요! agreementWidgetControl , paymentMethodWidgetControl 객체가 비어있습니다. 즉 초기화가 안 됩니다. 화면은 랜더링이 되는데 말이죠
No description
Ayaan이안
Ayaan이안4d ago
즉 renderPaymentMethods가 실행이 안되고 멈춰있어서 control이 비어있다는 말씀이시죠?
박상우
박상우OP2d ago
네 맞습니다~! 랜더링은 돼서 결제방식, 약관은 보이고 체크도 됩니다. 다만 결제하기 누르면 객체가 비어있어서 그다음 동작을 하지 않습니다.
Kimoon Lee
Kimoon Lee2d ago
렌더링은 되는데 결제하기때 객체가 비어있으면 렌더링된 객체가 결제하기코드 쪽으로 전달이 되지 않는것 처럼 보이는데요. 이부분 확인부탁드립니다.
박상우
박상우OP2d ago
위 사진 onLoadEnd 는 호출되며 paymentWigetControl => null 입니다. 그래서 renderPaymentMethods 가 실패합니다. 제가 말씀드린 랜더는 실제 화면에 UI 가 보이는걸 의미합니다~! renderPaymentMethods 메소드는 없습니다. paymentWigetControl .renderPaymentMethods 호출 시 문제가 발생합니다
Kimoon Lee
Kimoon Lee2d ago
랜더링은 돼서 결제방식, 약관은 보이고 체크도 됩니다
라고 하신 UI 를 캡쳐해 주실수 있을까요?
박상우
박상우OP2d ago
No description
No description
No description
Kimoon Lee
Kimoon Lee20h ago
paymentWigetControl => null 입니다. 그래서 renderPaymentMethods 가 실패합니다. 라고 하셨는데 이미 이 UI 는 renderPaymentMethods가 된 상태에요. 캡쳐하신 에러가 발생하는 부분은 agreementwidgetcontrol 이라고 되어 있는데요. 공유해주신 코드에 해당 내용은 없습니다.
박상우
박상우OP20h ago
코드 동일합니다
No description
박상우
박상우OP19h ago
No description
박상우
박상우OP19h ago
임시 가림처리 -> 부분은 마스킹 처리했다고 봐주세요~! 원래는 실제 사용하는 데이터 들어갑니다~!
박상우
박상우OP19h ago
PaymentWidgetProvider 태그는 상위 레이아웃에 있으므로 해당 부분은 인지해주시면 감사드리겠습니다~! (ios에서는 아주 잘 동작합니다. android 에서만 발생하는 이슈입니다)
Kimoon Lee
Kimoon Lee19h ago
agreement widget 세팅하는 코드를 저희 샘플에 있는대로 <AgreementWidget selector="agreement" onLoadEnd={() => { paymentWidgetControl .renderAgreement('agreement', { variantKey: 'DEFAULT', }) .then(control => { setAgreementWidgetControl(control); }); }} 이렇게 넣어 보실수 있을까요?
박상우
박상우OP19h ago
이미 여러차례 했었습니다 ...ㅎ
Kimoon Lee
Kimoon Lee19h ago
그럼 저희 RN 샘플에서도 동일하게 에러나시는 거죠?
박상우
박상우OP19h ago
더 상세하게 디버깅하기 위해 await 걸었던건데, 이미 수차례... 5번? 정도 위처럼 then 처리 (샘플과 완전히 동일하게) 했었습니다 네! 완전히 동일하더군요
Kimoon Lee
Kimoon Lee19h ago
혹시 사용하시는 RN 버전하고 widget-sdk-react-native 버전 확인 가능하실까요?
박상우
박상우OP19h ago
"@nx/react-native": "20.4.6", "react-native": "0.74.5", "@tosspayments/payment-sdk": "^1.9.1", "@tosspayments/tosspayments-sdk": "^2.2.4", "@tosspayments/widget-sdk-react-native": "^1.4.0", "tosspayments-react-native-webview": "^1.0.0", (하도 안 돼서, 커스텀 웹뷰로 시도해서 있는 것입니다. 무시해 주세요~) 요렇게 사용중입니다~! 더 필요하신 정보 있으시면 말씀해 주세요
이실장
이실장18h ago
@박상우 약관위젯은 필수사용이 아닌데요. 혹시 약관위젯은 아예 랜더링 안하면 어떤가요
박상우
박상우OP18h ago
그 부분 테스트를 안 해봤네요. 한 번 해보고 공유드리겠습니다
박상우
박상우OP17h ago
시도해봤습니다~! 결제 완료까지 안오구요. catch 부분에서 에러 메세지도 안 옵니다..! 네트워크에서 paymentWidgetControl.requestPayment 요청이 안 나오는 현상입니다
No description
No description
박상우
박상우OP17h ago
No description
이실장
이실장17h ago
클릭 이벤트는 읽히는데 그게 reuqestPayments에 전달이 안되나요?
박상우
박상우OP17h ago
네 맞습니다
이실장
이실장17h ago
저희도 처음 겪는 현상이라 원인을 모르겠네요
박상우
박상우OP17h ago
답변 감사드립니다
이실장
이실장17h ago
일단 로그상 요청은 저희까지 들어온 것 같아요
박상우
박상우OP17h ago
리턴도 잘 마무리 되었는지 문의드립니다
Kimoon Lee
Kimoon Lee16h ago
내부 로그를 확인했을때 renderPaymentMethods 의 resolve 가 정상적으로 되지 않은것으로 보입니다. 증상만 보면 웹뷰와 Native SDK 사이에 통신이 안되는게 아닌가 싶은데요. 위젯 바로 아래에 text 나 다른 UI 를 위치 시키신후에 결제수단위젯에서 결제수단 바꿨을 때(특히, 높이 변화가 있는 카드<->기타결제수단) 위젯 높이 조절 잘 되는지 확인을 해보실수 있을까요?
박상우
박상우OP16h ago
넵 바로 확인해보겠습니다
박상우
박상우OP16h ago
No description
No description
No description
No description
박상우
박상우OP16h ago
위젯 높이 조절이 잘 되는 것이 확인됩니다~
이실장
이실장16h ago
안되네요
이실장
이실장16h ago
No description
이실장
이실장16h ago
3줄입니다 카드 선택쪽은
박상우
박상우OP16h ago
아 그럼 한 줄이 잘리는 거네요!?
이실장
이실장16h ago
네 원래 웹뷰 영역 높이가 가변으로 바뀌어야하는데요 그부분이 안되에요 웹뷰 <>네이티브간 통신이 안되고있어요 ㅈㅓ희 샘플그대로 실행했을때도 안된다는 말씀이시죠?
박상우
박상우OP16h ago
네 맞습니다~!
Kimoon Lee
Kimoon Lee16h ago
혹시 window.ReactNativeWebView 를 재정의 하거나 custom 하는 부분이 있으신가요? 특히 window.ReactNativeWebView.postMessage 이부분이요
박상우
박상우OP15h ago
해당 코드 지워보고 테스트해봤으나 동일한 증상이 나타납니다
Kimoon Lee
Kimoon Lee15h ago
어떤 코드가 있으셨던 건가요? window.ReactNativeWebView 쪽 커스텀 하신 코드 모두 삭제해 보실수 있을까요?
박상우
박상우OP15h ago
다음 주소 부분 처리할 때 사용했었습니다 한 번 다 지워보고 해보겠습니다
No description
이실장
이실장15h ago
그럼 기존에 샘플 예제 파일을 그대로 실행하셨던게 아니네요?
박상우
박상우OP15h ago
RN에 해당하는 부분만 가져와서 그대로 복붙하고 실행했었습니다~! 클론해서 실행하지는 않았습니다
Kimoon Lee
Kimoon Lee15h ago
저희는 클론해서 실행하신건지를 확인드린것이었는데 전달에 착오가 있었네요. 아니면 저희샘플 그대로 클론해서 확인해 보시기 바랍니다.
박상우
박상우OP15h ago
전달 제대로 안 된점 사과의 말씀 드립니다ㅠ 확인해보겠습니다
이실장
이실장15h ago
아닙니다 현재 다음쪽이랑 충돌이 있어서요! 저희 웹뷰 라이브러리말고 rn쪽 웹뷰 라이브러리도 사용하시죠
박상우
박상우OP15h ago
네 맞습니다
이실장
이실장15h ago
RN에서 토스연동을 하고 있는중 웹뷰 관련 문의드...
현재 상황은 V1 결제 위젯을 연동해놓은 상태입니다. 안드로이드에서 다른 웹뷰에 들어가야할 이벤트가 토스 웹뷰쪽으로 들어가고 있는데 관련해서 해결책이 있을까요?
이실장
이실장15h ago
여기 참고해주세요 우선 현재 이방법이 최선입니다
박상우
박상우OP15h ago
확인해보겠습니다 감사드립니다
Ayaan이안
Ayaan이안11h ago
No description
박상우
박상우OP11h ago
공유감사드립니다. 확인 후에 저도 해당 내용 공유하도록 하겠습니다

Did you find this page helpful?