public async Task <string> TokenizeCard(string panNumber = "4111111111111111", string expirationMonth = "12", string expirationYear = "2018", string cvv = null) { payTcs = new TaskCompletionSource <string>(); if (CanPay) { var cardClient = new BTCardClient(apiClient: braintreeClient); var card = new BTCard(panNumber, expirationMonth, expirationYear, cvv); cardClient.TokenizeCard(card, (BTCardNonce tokenizedCard, Foundation.NSError error) => { if (error == null) { OnTokenizationSuccessful?.Invoke(this, tokenizedCard.Nonce); payTcs.TrySetResult(tokenizedCard.Nonce); } else { OnTokenizationError?.Invoke(this, error.Description); payTcs.TrySetException(new Exception(error.Description)); } }); } else { OnTokenizationError?.Invoke(this, "Platform is not ready to accept payments"); payTcs.TrySetException(new Exception("Platform is not ready to accept payments")); } return(await payTcs.Task); }
public override void DidAuthorizePayment(PKPaymentAuthorizationViewController controller, PKPayment payment, Action <PKPaymentAuthorizationStatus> completion) { var applePayClient = new BTApplePayClient(braintreeClient); applePayClient.TokenizeApplePayPayment(payment, (tokenizedApplePayPayment, error) => { if (error == null) { if (string.IsNullOrEmpty(tokenizedApplePayPayment.Nonce)) { payTcs?.SetCanceled(); } else { OnTokenizationSuccessful?.Invoke(this, tokenizedApplePayPayment.Nonce); payTcs?.TrySetResult(tokenizedApplePayPayment.Nonce); } completion(PKPaymentAuthorizationStatus.Success); } else { OnTokenizationError?.Invoke(this, "Error - Payment tokenization failed"); payTcs?.TrySetException(new Exception("Error - Payment tokenization failed")); completion(PKPaymentAuthorizationStatus.Failure); } }); }
public void OnPaymentMethodNonceCreated(PaymentMethodNonce paymentMethodNonce) { // Send this nonce to your server string nonce = paymentMethodNonce.Nonce; mBraintreeFragment.RemoveListener(this); OnTokenizationSuccessful?.Invoke(this, nonce); payTcs?.TrySetResult(nonce); }
public async Task <string> TokenizePayPal() { payTcs = new TaskCompletionSource <string>(); if (CanPay) { var payPalDriver = new BTPayPalDriver(braintreeClient); payPalDriver.ViewControllerPresentingDelegate = new BTViewControllerPresenter(); payPalDriver.AppSwitchDelegate = new BTSwitchDelegate(); payPalDriver.AuthorizeAccountWithCompletion((BTPayPalAccountNonce payPalAccountNonce, NSError error) => { if (error == null) { if (payPalAccountNonce == null || string.IsNullOrEmpty(payPalAccountNonce.Nonce)) { payTcs.SetCanceled(); } else { OnTokenizationSuccessful?.Invoke(this, payPalAccountNonce.Nonce); payTcs.TrySetResult(payPalAccountNonce.Nonce); } } else { OnTokenizationError?.Invoke(this, error.Description); payTcs.TrySetException(new Exception(error.Description)); } }); } else { OnTokenizationError?.Invoke(this, "Platform is not ready to accept payments"); payTcs.TrySetException(new Exception("Platform is not ready to accept payments")); } return(await payTcs.Task); }