addCard method

void addCard(
  1. BuildContext context
)

Implementation

void addCard(BuildContext context) async {
  FocusScope.of(context).requestFocus(FocusNode());
  if (formKey.currentState!.validate()) {
    FocusScope.of(context).unfocus();
    // Get hold of the current form state
    final FormState form = formKey.currentState!;
    //save form values
    form.save();
      isLoading.value = true;
      var request = {
        'token': Storage.getValue(Constants.token),
        'api_key': Constants.apiKey,
        'sub_client_api_key': Storage.getValue(Constants.subClientApiKey),
        'card_name': userFirstName.value,
        'card_number': paymentCard.number,
        'cvv': paymentCard.cvv,
        'expiry_month': paymentCard.month,
        'expiry_year': paymentCard.year,
        'zip': zipController.text.toString()
      };

      var response = await DioClient().request(context: context,
          api: '/tokenize-card', method: Method.POST, params: request);

      TokenizeCardResponse tokenizeCardResponse =
          TokenizeCardResponse.fromJson(response);
      if (tokenizeCardResponse.status == Strings.success) {
        // var json = jsonEncode(paymentCard.toJson());
        // Storage.saveValue(Constants.savedCard, json);
        // print('card number is ${paymentCard.number.toString().substring(paymentCard.number.toString().length - 4)}');
        // print('card id is ${tokenizeCardResponse.data!.id.toString()}');
        Storage.saveValue(Constants.cardNumber,
            tokenizeCardResponse.data!.metaDataJson!.maskedCardNumber);
        Storage.saveValue(
            Constants.cardId, tokenizeCardResponse.data!.id.toString());
        Storage.saveValue(Constants.isCardAdded, true);
        payWithCard(context);
      } else {
        isLoading(false);
        return Utils.showSnackbar(
            context, Strings.error, response['message'].toString().toTitleCase(), AppColors.red);
      }
}
}