@rnw-community/react-native-payments
Version:
Accept Payments with Apple Pay and Android Pay using the Payment Request API.
83 lines • 4.13 kB
JavaScript
;
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