startPayment static method

void startPayment(
  1. Map paymentObject,
  2. PayHereOnCompletedHandler onCompleted,
  3. PayHereOnErrorHandler onError,
  4. PayHereOnDismissedHandler onDismissed,
)

Starts the PayHere Payment.

Pass the payment details through the paymentObject. Payment completion is notified to the onCompleted handler. Errors are notified to the onError handler. When the user dismisses the bottom sheet it is notified to the onDismissed handler.

Implementation

static void startPayment(
    Map paymentObject,
    PayHereOnCompletedHandler onCompleted,
    PayHereOnErrorHandler onError,
    PayHereOnDismissedHandler onDismissed) {
  const _resultKeySuccess = 'success';
  const _resultKeyData = 'fldata';
  const _resultKeyCallback = 'flcallback';

  const _resultCallbackTypeError = 'error';
  const _resultCallbackTypeDismiss = 'dismiss';

  _channel.invokeMethod("startPayment", paymentObject).then((value) {
    // print(value);

    // On return, value is a List<dynamic>

    dynamic resultDictionary = value[0];
    Map<dynamic, dynamic> result = resultDictionary as Map<dynamic, dynamic>;
    bool resultSuccess = result[_resultKeySuccess] as bool;

    if (resultSuccess) {
      String resultPaymentId = result[_resultKeyData] as String;
      onCompleted(resultPaymentId);
    } else {
      String resultCallbackType = result[_resultKeyCallback] as String;
      if (resultCallbackType == _resultCallbackTypeError) {
        String error = result[_resultKeyData] as String;
        onError(error);
      } else if (resultCallbackType == _resultCallbackTypeDismiss) {
        onDismissed();
      } else {
        onError('Unknown callback');
      }
    }
  });
}