requestPayment method

void requestPayment({
  1. Payload? payload,
  2. BootpayDefaultCallback? onError,
  3. BootpayDefaultCallback? onCancel,
  4. BootpayCloseCallback? onClose,
  5. BootpayDefaultCallback? onIssued,
  6. BootpayConfirmCallback? onConfirm,
  7. BootpayAsyncConfirmCallback? onConfirmAsync,
  8. BootpayDefaultCallback? onDone,
  9. required BuildContext context,
})

결제 요청 (iOS Swift SDK와 동일하게 기존 웹뷰를 전체화면으로 확장)

Implementation

void requestPayment({
  Payload? payload,
  BootpayDefaultCallback? onError,
  BootpayDefaultCallback? onCancel,
  BootpayCloseCallback? onClose,
  BootpayDefaultCallback? onIssued,
  BootpayConfirmCallback? onConfirm,
  BootpayAsyncConfirmCallback? onConfirmAsync,
  BootpayDefaultCallback? onDone,
  required BuildContext context,
}) {
  if (payload == null) {
    debugPrint('[BootpayWidgetController] requestPayment - payload is null');
    return;
  }

  debugPrint('[BootpayWidgetController] requestPayment called');
  debugPrint('[BootpayWidgetController] Platform: ${kIsWeb ? "Web" : Platform.operatingSystem}');

  // 콜백 저장
  _onError = onError;
  _onCancel = onCancel;
  _onClose = onClose;
  _onIssued = onIssued;
  _onConfirm = onConfirm;
  _onConfirmAsync = onConfirmAsync;
  _onDone = onDone;

  // 웹뷰 컨트롤러에 결제 콜백 설정
  _setupPaymentCallbacks();

  // iOS Swift SDK와 동일하게 전체화면으로 확장
  _expandToFullscreen(context);

  // 약간의 딜레이 후 결제 요청 (iOS Swift SDK와 동일하게 0.4초)
  Future.delayed(Duration(milliseconds: 400), () {
    debugPrint('[BootpayWidgetController] Calling requestPayment on webViewController');
    _webViewController?.requestPayment(payload: payload);
  });
}