iamport / iamport_flutter

Flutter App에서 아임포트 결제서비스 연동을 위한 모듈입니다.
MIT License
68 stars 37 forks source link

html5_inicis 에서 Synchronous XMLHttpRequest 에러 #45

Closed ghost closed 2 years ago

ghost commented 2 years ago

안녕하세요.

0.10.0-dev.4 버전 테스트 도중 에러가 발생하여 문의드립니다.

다날, kcp 는 이상없이 동작하지만 html5_inicis 결제에서만 Synchronous XMLHttpRequest 에러가 발생하고, initialChild 이후, 흰 화면만 발생합니다.

IamportPayment 코드 (실사용 변수들은 String 처리하였습니다)

IamportPayment( appBar: new AppBar( title: new Text('$_serviceName 결제'), ), / 웹뷰 로딩 컴포넌트 / initialChild: Container( child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ // Image.asset('assets/images/iamport-logo.png'), Container( padding: EdgeInsets.fromLTRB(0.0, 30.0, 0.0, 0.0), child: Text('잠시만 기다려주세요...', style: TextStyle(fontSize: 20.0)), ) ] ) )), / [필수입력] 가맹점 식별코드 / userCode: '식별 코드', / [필수입력] 결제 데이터 / data: PaymentData( pg: 'html5_inicis', // pg: 'danal_tpay', merchantUid: 'samplemerchantUid', name: _serviceName, amount: _price, payMethod: 'card', buyerName: 'name', buyerEmail: 'email', buyerTel: 'phonNumber', popup: true, appScheme: 'payments', customerUid: 'imp_uid', digital: true, // digital content period: { 'from': '${now.year}${now.month}${now.day}', // 제공기간 시작 날짜 'to': '${exp.year}${exp.month}${exp.day}', // 제공기간 종료 날짜 }, // 결제가 성공하였을때, // 아래 url 로 imp_uid, merchant_uid, imp_success를 넘겨준다 mRedirectUrl: 'payDoneUrl', ), callback: (Map<String, String> result) async { }, );

디버스 콘솔 에러 메시지:

I/SurfaceControl(30957): assignNativeObject: nativeObject = 0 Surface(name=null)/@0x5352d51 / android.view.SurfaceControl.readFromParcel:1117 android.view.IWindowSession$Stub$Proxy.relayout:1820 android.view.ViewRootImpl.relayoutWindow:9005 android.view.ViewRootImpl.performTraversals:3360 android.view.ViewRootImpl.doTraversal:2618 android.view.ViewRootImpl$TraversalRunnable.run:9971 android.view.Choreographer$CallbackRecord.run:1010 android.view.Choreographer.doCallbacks:809 android.view.Choreographer.doFrame:744 android.view.Choreographer$FrameDisplayEventReceiver.run:995 I/ViewRootImpl@e69631dMainActivity: Relayout returned: old=(0,0,1440,2660) new=(0,0,1440,2660) req=(1440,2660)0 dur=6 res=0x7 s={true 487319856080} ch=true fn=-1 I/ViewRootImpl@e69631dMainActivity: [DP] dp(1) 1 android.view.ViewRootImpl.reportNextDraw:10957 android.view.ViewRootImpl.performTraversals:3845 android.view.ViewRootImpl.doTraversal:2618 I/ViewRootImpl@e69631dMainActivity: [DP] pd() Asnyc report I/ViewRootImpl@e69631dMainActivity: [DP] pdf(0) 1 android.view.ViewRootImpl.lambda$performDraw$1$ViewRootImpl:4668 android.view.-$$Lambda$ViewRootImpl$DJd0VUYJgsebcnSohO6h8zc_ONI.run:6 android.os.Handler.handleCallback:938 I/ViewRootImpl@e69631dMainActivity: [DP] rdf() I/chromium(30957): [INFO:CONSOLE(6)] "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.", source: https://d3ulhu45f99mlj.cloudfront.net/js/jquery-1.10.2.min.js (6)

아임포트 버전:

iamport_flutter: ^0.10.0-dev.4

플러터 버전 flutter doctor -v

[✓] Flutter (Channel stable, 2.5.0, on Ubuntu 18.04.6 LTS 5.4.0-87-generic, locale en_US.UTF-8) • Flutter version 2.5.0 at /home/nejong/snap/flutter/common/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 4cc385b4b8 (4 weeks ago), 2021-09-07 23:01:49 -0700 • Engine revision f0826da7ef • Dart version 2.14.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2) • Android SDK at /home/nejong/Android/Sdk • Platform android-30, build-tools 30.0.2 • Java binary at: /home/nejong/android-studio/jre/bin/java • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189) • All Android licenses accepted.

[✓] Chrome - develop for the web • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop • clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final) • cmake version 3.10.2 • ninja version 1.8.2 • pkg-config version 0.29.1

[✓] Android Studio (version 2020.3) • Android Studio at /snap/android-studio/114/android-studio • Flutter plugin version 59.0.2 • Dart plugin version 203.8292 • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[✓] Android Studio (version 2021.1) • Android Studio at /home/nejong/android-studio • Flutter plugin version 48.1.3 • Dart plugin version 211.6222.2 • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[✓] VS Code (version 1.61.0) • VS Code at /usr/share/code • Flutter extension version 3.27.0

[✓] Connected device (3 available) • SM N976N (mobile) • R3CM903M8QE • android-arm64 • Android 11 (API 30) • Linux (desktop) • linux • linux-x64 • Ubuntu 18.04.6 LTS 5.4.0-87-generic • Chrome (web) • chrome • web-javascript • Google Chrome 94.0.4606.81

• No issues found!

디버그 환경: 우분투 18.04 + 안드로이드 실기기(노트10)

회사 계정으로 올려 아래 이슈는 삭제 부탁드립니다. 번거롭게 해드려 죄송합니다.

감사합니다.

anymate98 commented 2 years ago

안녕하세요, 아임포트 기술지원팀입니다.

혹시 해당 테스트의 문제가 레포의 예제에서도 동일하게 발생하나요? 또 digital과 period, customer_uid 파라미터를 모두 사용하셨는데 실 걀제에 필요한 것인지 궁금합니다.

XMLHttpRequest 에러의 경우 어디까지나 크롬의 warning 수준의 문제로 현재 말씀해주신 상황의 원인은 아닙니다.

ghost commented 2 years ago

혹시 해당 테스트의 문제가 레포의 예제에서도 동일하게 발생하나요? 또 digital과 period, customer_uid 파라미터를 모두 사용하셨는데 실 걀제에 필요한 것인지 궁금합니다.

빠른 회신 감사합니다. 유효기간이 있는 디지털 콘텐츠여서 digital과 period를 사용하였습니다. 언급하신 변수들을 하나씩 제거하면서 테스트한 결과, 일반결제에서 customer_uid를 제거한 후 사용하니 정상 동작하였습니다.

일반결제:

 data: PaymentData(
    pg: 'html5_inicis.INIpayTest',    // pg: 'html5_inicis' 단일 pg일때 customerUid를 주석처리하였을때 동작확인
     // customerUid: 'imp_uid', // 미사용
    digital: true, // digital content
    period: {
      'from': '${now.year}${now.month}${now.day}',
      'to': '${exp.year}${exp.month}${exp.day}',
    },

정기결제:

 data: PaymentData(
    pg: 'html5_inicis.INIBillTst',
    customerUid: 'imp_uid',
    digital: true, // digital content
    period: {
      'from': '${now.year}${now.month}${now.day}',
      'to': '${exp.year}${exp.month}${exp.day}',
    },

위와 같이 하였을때 두가지 결제창 모두 문제없이 동작하였습니다. 감사합니다.