부트페이
설명 그대로 했는데
왜
안되지?
안녕하세요. 앱개발지식나눔입니다.
서비스 결제를 위해서는 부트페이가 거의 필수인데요. 오늘은 플러터 부트페이 패키지를 연동하다가 막힐 때 쉽게 해결할 수 있는 방법에 대해서 알아보겠습니다. (연동법은 개발자 사용법 및 다른 구글 자료를 참고하면 쉽게 찾을 수 있습니다^^)
관련 URL
부트페이 플러터 개발자 사용법: https://docs.bootpay.co.kr/intergration/flutter
부트페이 플러터 패키지(신버전): https://pub.dev/packages/bootpay
부트페이 플러터 패키지(구버전): https://pub.dev/packages/bootpay_api/versions/1.0.2
나의 플러터 doctor -v
플러터 SDK: 2.10.2
안드로이드 SDK: 31.0.0
Java Version: 11.0.11*0-b60-7590822
Xcode: 13.2.1
CocoaPods: 1.11.2
VS Code: 1.60.0
테스트 기기: 아이폰 13, LG G8, 갤럭시 S 10+, 아이폰 XS
부트페이 관련 문의사항이 있을시 연락 방법
일단 제가 부트페이를 진행하다가 막힐 때 위 사진 오른쪽 아래에 실시간 채팅을 사용했습니다. 부트페이 개발 담당자 분이 직접 응대해주시며 오전 9시부터 가능합니다. 사람이 응대해주시는 만큼 매우 구체적으로 질문하면 구체적으로 대답해주십니다.
저의 대화 내용 일부를 발췌했습니다.
나의 질문
안녕하세요. 플러터 개발자 ___입니다. 다름 아니라 앱에서 결제시 카드 회사 앱카드 앱으로 넘어가서 모든 결제 프로세스를 마치고 다시 제작중인 어플로 넘어갈 때 흰 화면만 보이는 문제가 생깁니다. 디버그가 아니라 릴리즈 모드로 진행시에는 아예 결제가 진행되지 않습니다. 혹시 이와 비슷한 문제가 생긴 경우가 있었는지 궁금하여 문의드립니다.
에러 메세지: [default] Failed to open URL about:blank: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=225, _LSFunction=-[_LSDOpenClient openURL:options:completionHandler:]}
문제 부분: 결제 버튼 => 카드사 선택 => 앱카드 어플 실행 => 비밀번호 입력 => 결제 완료 => 앱 이동시 흰 화면(실제 결제도 이루어지지 않았습니다. 안드로이드, ios 모두 해당)
info.plist 부분:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>kr.aaa.bbbb</string>
<key>CFBundleURLSchemes</key>
<array>
<string>bootpaySample</string>
</array>
</dict>
</array>
부트페이측 답신
info.plist의 CFBundleURLSchemes 는 지우시거나 과일궁합 앱에 맞는걸 적어주시고
flutter doctor -v 공유해주시면 감사하겠습니다
유사 이슈가 있는데, android 에서 proguard 설정을 링크처럼 셋팅 후 다시 확인부탁드립니다.
이 질문과 답신을 보여주는 이유는 꼭 질문을 할 때 에러 메시지, 문제 부분 규정, info_plist(ios 기준)을 구체적으로 알려주셔야 합니다. 추상적으로 질문하면 원하시는 답변을 얻을 수 없습니다.
패키지 버전
부트페이 플러터 패키지는 두 가지가 있습니다. 이 중에서 저는 bootpay_api가 아니라 bootpay(클릭) 패키지를 추천합니다. 그 이유는 두 가지가 있습니다. 첫째로, 이제 부트페이 측에서 bootpay_api 업데이트를 지원하지 않습니다. 둘째로, bootpay_api를 사용하면 안드로이드 쪽에서 아마 엄청난 에러가 뜰 겁니다. 대부분 java lang deprecated 에러이고 이거는 bootpay 패키지 바꾸고 최신 버전 유지하면 해결됩니다.
bootpay_api와 bootpay 차이점
본질적인 차이점은 Dart 코드 입장에서 거의 없었습니다. 있었다면 클래스 매소드가 달라진 정도입니다. 팁은 아마 패키지를 바꾸면 에러 메시지가 나올 것입니다. 그 부분에 해당하는 부분을 패키지 URL에서 example 부분을 잘 보면 답이 있습니다. 클래스 이름, 메서드 이름만 달라지고 별다른 차이점은 없습니다.
결론
플러터로 앱 개발 시에 부트페이 측에서 충분히 지원해줍니다. 조금 아쉬운 점은 git read me에 세세한 설명이 없어서 에러가 생길 때(특히 안드로이드) 정말 삽질 많이 했습니다. 따라서 이러한 수고를 덜려면 첫째, 문제를 구체적으로 규정하여 부트페이 홈페이지 문의하기에 채팅을 하기. 둘째, bootpay_api에서 bootpay 패키지 변경하기. 마지막으로, IOS는 target_deployment를 13.0 이상으로 안드로이드는 SDK 30 이상으로 바꾸기입니다.
모두 즐거운 코딩 하세요.
'Flutter' 카테고리의 다른 글
플러터 빌드 에러 시 해결법 (0) | 2022.12.17 |
---|---|
[플러터] PASS 인증 InAppWebView로 실행하기 (2) | 2022.03.06 |
[플러터] InAppWebView에서 새 창 여는 법 (0) | 2022.03.06 |
[플러터] 대표 웹뷰 패키지 소개 및 장단점 (2) | 2022.03.03 |