createPaymentRequest static method

Future<Map> createPaymentRequest({
  1. AriyanpayCredentials? ariyanpayCredentials,
  2. required CustomerDetails customer,
  3. required String amount,
  4. dynamic valueA,
  5. dynamic valueB,
  6. dynamic valueC,
  7. dynamic valueD,
  8. dynamic valueE,
  9. dynamic valueF,
  10. dynamic valueG,
  11. Map? metadata,
  12. String? webhookUrl,
  13. required BuildContext context,
})

Implementation

static Future<Map<dynamic, dynamic>> createPaymentRequest({
  AriyanpayCredentials? ariyanpayCredentials,
  required CustomerDetails customer,
  required String amount,
  dynamic valueA,
  dynamic valueB,
  dynamic valueC,
  dynamic valueD,
  dynamic valueE,
  dynamic valueF,
  dynamic valueG,
  Map? metadata,
  String? webhookUrl,
  required BuildContext context,
}) async {
  final Map<dynamic, dynamic> requestData = {
    'cus_name': customer.fullName,
    'cus_phone': customer.cusPhone,
    'invoice_id': 'PAY${DateTime.now().millisecondsSinceEpoch}',
    'amount': amount,
    'value_a': valueA,
    'value_b': valueB,
    'value_c': valueC,
    'value_d': valueD,
    'value_e': valueE,
    'value_f': valueF,
    'value_g': valueG,
    'success_url': AppConfig.redirectURL,
    'cancel_url': AppConfig.cancelURL,
    'type': 'GET',
  };

  final controller = Get.put(PaymentController());

  if (ariyanpayCredentials == null) {
    controller.panelURL.value = AppConfig.sandboxURL;
    controller.apiKey.value = AppConfig.sandboxAPIKey;
  } else {
    controller.panelURL.value = ariyanpayCredentials.panelURL;
    controller.apiKey.value = ariyanpayCredentials.apiKey;
  }

  try {
    final http.Response response = await http.post(
      Uri.parse(
        ariyanpayCredentials == null
            ? AppConfig.sandboxURL + Endpoints.createPayment
            : '${ariyanpayCredentials.panelURL}${Endpoints.createPayment}',
      ),
      headers: <String, String>{
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
      body: jsonEncode(requestData),
    );

    if (response.statusCode == 200) {
      final dynamic responseData = jsonDecode(response.body);
      return {
        'status': responseData['status'],
        'message': responseData['message'],
        'payment_url': responseData['payment_url'],
      };
    } else {
      final error = jsonDecode(response.body)['message'];
      snackBar(error, context);
      debugPrint(error);
      throw Exception(error);
    }
  } catch (error) {
    snackBar('Something is wrong', context);
    throw Exception('Something is wrong');
  }
}