Skip to content

[Google Pay] createPaymentRequest results in PaymentError #28

Description

@msn444

I'm basically following the Google Pay example in a Vue app. Calling createPaymentRequest on the GooglePayButton object immediately results in the PaymentError handler being called, with statusCode 10 and statusMessage "10: ". I don't see any other error information being returned. The Google Pay sheet does not appear.
Using "@nativescript/core": "^8.5.6", "@nativescript/google-pay": "^0.1.2"

async onGooglePayTap(args) {
      try {
        if (global.isAndroid) {
          const googlePayBtn = args.object;

          // setup the event listeners
          googlePayBtn.once(GooglePayEvents.PaymentCancelled, (args) => {
            console.log("payment cancelled, not much to do here");
          });

          googlePayBtn.once(GooglePayEvents.PaymentSuccess, async (args) => {
            console.log("PaymentSuccess");
            // this is where you handle the response with the token from google pay to send to payment provider
            const payloadToBackend = {
              amount: 25.2,
              method: "3DS",
              "3DS": {
                signature:
                  args.data.paymentMethodData.tokenizationData.token.signature,
                type: "G", // for Google
                version:
                  args.data.paymentMethodData.tokenizationData.token
                    .protocolVersion,
                data: args.data.paymentMethodData.tokenizationData.token
                  .signedMessage,
              },
            };

            // send your payload to your payment provider here
            // const result = await this.someHttpMethodToYourProviderBackend(payloadToBackend);

            if (result) {
              // now show the user the confirmation screen
            } else {
              // show the user that something went wrong here
            }
          });

          googlePayBtn.once(GooglePayEvents.PaymentError, (args) => {
            console.log("PaymentError");
            console.dir(args, { depth: null });
            // TODO: let user know some error happened
          });

          const options = {
            environment: "development",
            theme: "light",
            merchantInfo: {
              merchantName: "Test Merchant",
            },
            allowedPaymentMethods: {
              type: AllowedPaymentMethodsType.CARD,
              parameters: {
                allowPrepaidCards: true,
                allowCreditCards: true,
                billingAddressRequired: true,
                billingAddressParameters: {
                  format: BillingAddressParametersFormat.MIN,
                  phoneNumberRequired: true,
                },
              },
              tokenizationSpecification: {
                type: TokenizationSpecificationType.PAYMENT_GATEWAY,
                parameters: {
                  gateway: "stripe",
                  "stripe:version": "2018-10-31",
                  "stripe:publishableKey":
                    "redacted",
                },
              },
            },
            transactionInfo: {
              currencyCode: "USD",
              countryCode: "US",
              transactionId: "283999292929929", // A unique ID that identifies a transaction attempt. Merchants can use an existing ID or generate a specific one for Google Pay transaction attempts. This field is required when you send callbacks to the Google Transaction Events API.
              totalPriceStatus: TotalPriceStatusValue.FINAL,
              totalPrice: 25.2,
              totalPriceLabel: "Total",
              checkoutOption: CheckoutOptionValue.DEFAULT,
            },
            emailRequired: true,
            shippingAddressRequired: true,
            shippingAddressParameters: {
              allowedCountryCodes: ["US"],
              phoneNumberRequired: true,
            },
          };

          // this creates the payment request to the Google Pay SDK and will present the user with the payment sheet to complete the transaction

          googlePayBtn.createPaymentRequest(options).catch((err) => {
            console.log("error with create payment request", err);
          });
          console.log("created payment request");
        }
      } catch (error) {
        console.log("Error with google pay", error);
      }
    },

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions