customerCardTokenCreate method

Future<Map?> customerCardTokenCreate({
  1. required Card? dataCard,
  2. required dynamic email,
})

Implementation

Future<Map?> customerCardTokenCreate({
  required Card? dataCard,
  required email,
}) {
  const String path = "/card_tokens";
  Map<String, dynamic> body = {};
  if (dataCard?.id != null) {
    body = {"cardId": dataCard?.id, "securityCode": dataCard?.cvv};
  } else {
    body = {
      "cardNumber": dataCard?.cardNumber,
      // "email": email,
      "cardholder": dataCard?.cardholder?.toJson(),
      // "cardholder": {"name": "APRO"},
      // "issuer": {"name": "APRO"},
      "expirationYear": dataCard?.expirationYear,
      "expirationMonth": dataCard?.expirationMonth,
      "securityCode": dataCard?.cvv
    };
  }

  Future<Map?> futureCustomerModel = httpService
      .postWithCredentials(path: path, body: body)
      .then((http.Response response) async {
    final decodeData = json.decode(response.body);
    if (response.statusCode == 200 || response.statusCode == 201) {
      if (decodeData != null && decodeData['id'] != null) {
        if (dataCard?.id != null) {
          Card newCard = dataCard!.copyWith(token: decodeData['id']);
          return {
            'success': true,
            'data': newCard,
          };
        } else {
          Card? card = await customerCardCreate(
            dataCard: dataCard,
            token: decodeData['id'],
          );
          if (card != null && card.id != null) {
            Card newCard = card.copyWith(token: decodeData['id']);
            return {'success': true, 'data': newCard};
          } else if (card != null && card.error != null) {
            return {
              'success': false,
              'msg': card.error,
              'data': dataCard,
            };
          }
          return null;
        }
      }
    }
    final msg = _readErrorCode(decodeData, 'leyendo la tarjeta');
    return {
      'success': false,
      'msg': msg,
      'data': dataCard,
    };
  });
  return futureCustomerModel;
}