initPayment static method

dynamic initPayment({
  1. required num amount,
  2. required String orderId,
  3. String? successUrl,
  4. String? failureUrl,
  5. required dynamic onSuccess(
    1. Map<String, dynamic> successData
    ),
  6. required dynamic onFailure(
    1. Map<String, dynamic> failureData
    ),
  7. VoidCallback? onCancel,
})

Implementation

static initPayment({
  required num amount,
  required String orderId,
  String? successUrl,
  String? failureUrl,
  required Function(Map<String, dynamic> successData) onSuccess,
  required Function(Map<String, dynamic> failureData) onFailure,
  VoidCallback? onCancel,
}) async {
  try {
    if (_skyConfig == null) {
      onFailure({"message": "Please initialize the config"});
      return;
    }

    final navigatorState = _skyConfig!.navigatorKey.currentState;

    final paymentLink = Constants.generatePaymentLink(
      apiKey: _skyConfig!.apiKey,
      amount: amount,
      orderId: orderId,
    );

    final result = await navigatorState!.push(MaterialPageRoute(
      builder: (context) {
        return PaymentScreen(
          paymentUrl: paymentLink,
        );
      },
    ));

    if (result == null) {
      if (onCancel != null) onCancel();
    } else if (result["status"]) {
      onSuccess(result["data"]);
    } else {
      onFailure(result["data"]);
    }
  } catch (e) {
    onFailure({"message": e.toString()});
  }
}