private void CheckoutWithTokenizedPayment(TokenizedPaymentInput tokenizedPaymentInput, Checkout checkout, ApplePayEventHandlerCompletion callback) { CartState.CheckoutWithTokenizedPayment(tokenizedPaymentInput, (ShopifyError error) => { if (error == null) { callback(null); } else { ApplePayEventResponse response = new ApplePayEventResponse(ApplePayAuthorizationStatus.Failure); // Check to see if this is a recoverable user error if (error.Type == ShopifyError.ErrorType.UserError) { var userErrors = CartState.UserErrors; var status = GetUpdateRequestStatusFromCheckoutUserErrors(userErrors); if (status.AuthorizationStatus != ApplePayAuthorizationStatus.Failure) { var summaryItems = GetSummaryItemsFromCheckout(CartState.CurrentCheckout); response = new ApplePayEventResponse(status.AuthorizationStatus, summaryItems, GetShippingMethods(), status.Errors); } } callback(response); } }); }
/// <summary> /// Updates the cart state by sending the checkout token. /// </summary> /// <param name="tokenizedPaymentInput"> /// A <see cref="TokenizedPaymentInput"> containing all information /// needed to complete the checkout. /// </param> /// <param name="message"> /// A <see cref="NativeMessage"> object to call back to the Android plugin /// when the checkout is successful or failed. /// </param> private void PerformCheckout(TokenizedPaymentInput tokenizedPaymentInput, NativeMessage message) { CartState.CheckoutWithTokenizedPayment(tokenizedPaymentInput, (ShopifyError error) => { if (error == null) { AndroidPayCheckoutResponse.Status status = AndroidPayCheckoutResponse.Status.Success; message.Respond(new AndroidPayCheckoutResponse(status).ToJsonString()); OnSuccess(); } else { AndroidPayCheckoutResponse.Status status = AndroidPayCheckoutResponse.Status.Failure; message.Respond(new AndroidPayCheckoutResponse(status).ToJsonString()); OnFailure(error); } }); }