payOrder method

Future<PaymentResponseModel?> payOrder({
  1. required Card dataCard,
  2. required UserModel userModel,
  3. required String orderNumber,
  4. required double amount,
})

Implementation

Future<PaymentResponseModel?> payOrder({
  required Card dataCard,
  required UserModel userModel,
  required String orderNumber,
  required double amount,
}) {
  const String path = "/payments";
  Map<String, dynamic> body = {
    "transaction_amount": amount,
    "token": dataCard.id,
    "notification_url": "https://website.com/retorno",
    "installments": dataCard.installments ?? 1,
    "payment_method_id": dataCard.paymentMethod?.id,
    "description": "Compra en https://website.com Flutter",
    "payer": {
      "id": dataCard.customerId,
      "identification": {
        "number": userModel.document,
        "type": userModel.idCountriesDocumentsTypes ?? 'DNI',
      }
    },
    "external_reference": orderNumber,
    "additional_info": {
      "payer": {
        "first_name": userModel.firstName,
        "last_name": userModel.lastName,
        "registration_date": "",
        "phone": {
          "area_code": userModel.idCountriesCodes,
          "number": userModel.phoneNumber
        }
      },
    }
  };

  Future<PaymentResponseModel?> futurePaymentResponseModel = httpService
      .postWithCredentials(path: path, body: body)
      .then((http.Response response) {
    final decodeData = json.decode(response.body);
    if (decodeData != null &&
        (decodeData['id'] != null || decodeData['message'] != null)) {
      final PaymentResponseModel paymentResponseModel =
          PaymentResponseModel.fromJson(decodeData);
      return paymentResponseModel;
    }
    // }
    return null;
  });
  return futurePaymentResponseModel;
}