Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 24x 24x 24x 24x 4x 4x 4x 4x 4x 4x 4x 4x 24x | import { CheckoutSelectors, CustomerInitializeOptions, PaymentInitializeOptions } from '@bigcommerce/checkout-sdk';
import React, { useCallback, useContext, FunctionComponent } from 'react';
import { Omit } from 'utility-types';
import PaymentContext from '../PaymentContext';
import HostedWidgetPaymentMethod, { HostedWidgetPaymentMethodProps } from './HostedWidgetPaymentMethod';
export interface AmazonPaymentMethodProps extends Omit<HostedWidgetPaymentMethodProps, 'containerId' | 'hideContentWhenSignedOut' | 'isSignInRequired' | 'signInCustomer'> {
initializeCustomer(options: CustomerInitializeOptions): Promise<CheckoutSelectors>;
}
function signInAmazon() {
const button: HTMLElement | null = document.querySelector('#paymentWidget img');
if (button) {
button.click();
}
}
const AmazonPaymentMethod: FunctionComponent<AmazonPaymentMethodProps> = ({
initializeCustomer,
initializePayment,
onUnhandledError,
...rest
}) => {
const paymentContext = useContext(PaymentContext);
const initializeAmazonCustomer = useCallback((options: CustomerInitializeOptions) => initializeCustomer({
...options,
amazon: {
container: 'paymentWidget',
onError: onUnhandledError,
},
}), [initializeCustomer, onUnhandledError]);
const initializeAmazonPayment = useCallback((options: PaymentInitializeOptions) => initializePayment({
...options,
amazon: {
container: 'paymentWidget',
onError: (error: Error) => {
if (onUnhandledError) {
onUnhandledError(error);
}
if (paymentContext) {
paymentContext.disableSubmit(rest.method, true);
}
},
onPaymentSelect: () => {
if (paymentContext) {
paymentContext.disableSubmit(rest.method, false);
}
},
},
}), [initializePayment, onUnhandledError, paymentContext, rest.method]);
return <HostedWidgetPaymentMethod
{ ...rest }
containerId="paymentWidget"
hideContentWhenSignedOut
initializeCustomer={ initializeAmazonCustomer }
initializePayment={ initializeAmazonPayment }
isSignInRequired={ true }
signInCustomer={ signInAmazon }
/>;
};
export default AmazonPaymentMethod;
|