woocommerce-paypal-payments/modules/ppcp-blocks/resources/js/Components/card-fields.js

76 lines
2.4 KiB
JavaScript
Raw Normal View History

2024-05-20 16:37:11 +02:00
import {useEffect, useState} from '@wordpress/element';
2024-05-15 17:37:02 +02:00
import {
PayPalScriptProvider,
PayPalCardFieldsProvider,
PayPalCardFieldsForm,
} from "@paypal/react-paypal-js";
import {CheckoutHandler} from "./checkout-handler";
2024-05-20 18:46:44 +02:00
import {createOrder, onApprove} from "../card-fields-config";
2024-04-17 16:20:42 +02:00
2024-06-04 17:33:28 +02:00
export function CardFields({config, eventRegistration, emitResponse, components}) {
2024-05-20 16:37:11 +02:00
const {onPaymentSetup} = eventRegistration;
2024-04-17 17:35:30 +02:00
const {responseTypes} = emitResponse;
2024-06-04 17:33:28 +02:00
const { PaymentMethodIcons } = components;
2024-04-17 17:35:30 +02:00
2024-05-20 16:37:11 +02:00
const [cardFieldsForm, setCardFieldsForm] = useState();
const getCardFieldsForm = (cardFieldsForm) => {
setCardFieldsForm(cardFieldsForm)
}
const getSavePayment = (savePayment) => {
localStorage.setItem('ppcp-save-card-payment', savePayment);
}
2024-05-20 16:37:11 +02:00
useEffect(
() =>
onPaymentSetup(() => {
async function handlePaymentProcessing() {
await cardFieldsForm.submit()
.catch((error) => {
return {
type: responseTypes.ERROR,
}
});
2024-05-20 16:37:11 +02:00
return {
type: responseTypes.SUCCESS,
}
2024-05-20 16:37:11 +02:00
}
return handlePaymentProcessing();
}),
[onPaymentSetup, cardFieldsForm]
);
2024-04-17 16:20:42 +02:00
return (
<>
2024-05-15 17:37:02 +02:00
<PayPalScriptProvider
options={{
2024-05-16 12:29:05 +02:00
clientId: config.scriptData.client_id,
2024-05-15 17:37:02 +02:00
components: "card-fields",
2024-05-16 12:29:05 +02:00
dataNamespace: 'ppcp-block-card-fields',
2024-05-15 17:37:02 +02:00
}}
>
<PayPalCardFieldsProvider
createOrder={createOrder}
onApprove={onApprove}
onError={(err) => {
2024-05-16 12:29:05 +02:00
console.error(err);
2024-05-15 17:37:02 +02:00
}}
>
<PayPalCardFieldsForm/>
2024-06-04 17:33:28 +02:00
<PaymentMethodIcons icons={config.card_icons} align="left" />
<CheckoutHandler
getCardFieldsForm={getCardFieldsForm}
getSavePayment={getSavePayment}
saveCardText={config.save_card_text}
is_vaulting_enabled={config.is_vaulting_enabled}
/>
2024-05-15 17:37:02 +02:00
</PayPalCardFieldsProvider>
</PayPalScriptProvider>
2024-04-17 16:20:42 +02:00
</>
)
}