startPayment method

  1. @override
Future<Payment> startPayment(
  1. PaymentParameters paymentParameters,
  2. PromptParameters promptParameters
)
override

Implementation

@override
Future<Payment> startPayment(PaymentParameters paymentParameters,
    PromptParameters promptParameters) async {
  var amountMoney = {
    "amount": paymentParameters.amountMoney.amount,
    "currencyCode": paymentParameters.amountMoney.currencyCode.name
  };

  var appFeeMoney = paymentParameters.appFeeMoney != null
      ? {
          "amount": paymentParameters.appFeeMoney!.amount,
          "currencyCode": paymentParameters.appFeeMoney!.currencyCode.name
        }
      : null;

  var tipMoney = paymentParameters.tipMoney != null
      ? {
          "amount": paymentParameters.tipMoney!.amount,
          "currencyCode": paymentParameters.tipMoney!.currencyCode.name
        }
      : null;

  var params = <String, dynamic>{
    'paymentParameters': {
      ...paymentParameters.toJson(),
      "amountMoney": amountMoney,
      "appFeeMoney": appFeeMoney,
      "tipMoney": tipMoney
    },
    'promptParameters': promptParameters.toJson(),
  };

  try {
    final response =
        await methodChannel.invokeMethod<Map>('startPayment', params);
    if (response == null) {
      throw getChannelStateError("startPayment()", "returned null");
    }
    final paymentJson = castToMap(response);
    return Payment.fromJson(paymentJson);
  } on PlatformException catch (e) {
    throw PaymentError(e.code, e.message, e.details);
  }
}