UNPKG

@rnw-community/react-native-payments

Version:

Accept Payments with Apple Pay and Android Pay using the Payment Request API.

83 lines 4.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AndroidPaymentResponse = void 0; const shared_1 = require("@rnw-community/shared"); const android_card_info_js_1 = require("../../@standard/android/response/android-card-info.js"); const android_intermediate_signing_key_js_1 = require("../../@standard/android/response/android-intermediate-signing-key.js"); const android_payment_method_token_js_1 = require("../../@standard/android/response/android-payment-method-token.js"); const ios_pk_token_js_1 = require("../../@standard/ios/response/ios-pk-token.js"); const payments_error_js_1 = require("../../error/payments.error.js"); const payment_response_js_1 = require("./payment-response.js"); class AndroidPaymentResponse extends payment_response_js_1.PaymentResponse { constructor(requestId, methodName, jsonData, shippingOption = null) { super(requestId, methodName, AndroidPaymentResponse.parseDetails(jsonData), shippingOption); } static parseDetails(jsonData) { try { const data = JSON.parse(jsonData); return { billingAddress: AndroidPaymentResponse.parseFullAddress(data.paymentMethodData.info.billingAddress), androidPayToken: { ...AndroidPaymentResponse.parseToken(data.paymentMethodData.tokenizationData.token), cardInfo: AndroidPaymentResponse.parseCardInfo(data.paymentMethodData.info), }, applePayToken: ios_pk_token_js_1.emptyIosPKToken, payerEmail: data.email, ...((0, shared_1.isDefined)(data.shippingAddress) && { payerName: data.shippingAddress.name, payerPhone: data.shippingAddress.phoneNumber ?? '', }), ...((0, shared_1.isDefined)(data.paymentMethodData.info.billingAddress) && { payerName: data.paymentMethodData.info.billingAddress.name, payerPhone: data.paymentMethodData.info.billingAddress.phoneNumber ?? '', }), shippingAddress: AndroidPaymentResponse.parseFullAddress(data.shippingAddress), }; } catch { throw new payments_error_js_1.PaymentsError(`Failed parsing PaymentRequest details`); } } static parseToken(input = '{}') { if (input === 'examplePaymentMethodToken') { return android_payment_method_token_js_1.emptyAndroidPaymentMethodToken; } const parsedToken = JSON.parse(input); return { ...android_payment_method_token_js_1.emptyAndroidPaymentMethodToken, ...parsedToken, rawToken: input, intermediateSigningKey: { ...((0, shared_1.isDefined)(parsedToken.intermediateSigningKey) ? { ...parsedToken.intermediateSigningKey, signedKey: JSON.parse(parsedToken.intermediateSigningKey.signedKey), } : android_intermediate_signing_key_js_1.emptyAndroidIntermediateSigningKey), }, signedMessage: JSON.parse(parsedToken.signedMessage), }; } static parseFullAddress(input) { return { countryCode: input?.countryCode ?? '', postalCode: input?.postalCode ?? '', address1: input?.address1 ?? '', address2: input?.address2 ?? '', address3: input?.address3 ?? '', administrativeArea: input?.administrativeArea ?? '', locality: input?.locality ?? '', sortingCode: input?.sortingCode ?? '', }; } static parseCardInfo(androidCardInfo) { return { ...android_card_info_js_1.emptyAndroidCardInfo, cardNetwork: androidCardInfo.cardNetwork, cardDetails: androidCardInfo.cardDetails, assuranceDetails: androidCardInfo.assuranceDetails, }; } } exports.AndroidPaymentResponse = AndroidPaymentResponse; //# sourceMappingURL=android-payment-response.js.map