mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-01 07:02:48 +08:00
230 lines
5.8 KiB
JavaScript
230 lines
5.8 KiB
JavaScript
import {
|
|
getCurrentPaymentMethod,
|
|
PaymentMethods,
|
|
} from '../../../ppcp-button/resources/js/modules/Helper/CheckoutMethodState';
|
|
|
|
export function buttonConfiguration( ppcp_add_payment_method, errorHandler ) {
|
|
return {
|
|
createVaultSetupToken: async () => {
|
|
const response = await fetch(
|
|
ppcp_add_payment_method.ajax.create_setup_token.endpoint,
|
|
{
|
|
method: 'POST',
|
|
credentials: 'same-origin',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify( {
|
|
nonce: ppcp_add_payment_method.ajax.create_setup_token
|
|
.nonce,
|
|
} ),
|
|
}
|
|
);
|
|
|
|
const result = await response.json();
|
|
if ( result.data.id ) {
|
|
return result.data.id;
|
|
}
|
|
|
|
errorHandler.message( ppcp_add_payment_method.error_message );
|
|
},
|
|
onApprove: async ( { vaultSetupToken } ) => {
|
|
const response = await fetch(
|
|
ppcp_add_payment_method.ajax.create_payment_token.endpoint,
|
|
{
|
|
method: 'POST',
|
|
credentials: 'same-origin',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify( {
|
|
nonce: ppcp_add_payment_method.ajax.create_payment_token
|
|
.nonce,
|
|
vault_setup_token: vaultSetupToken,
|
|
} ),
|
|
}
|
|
);
|
|
|
|
const result = await response.json();
|
|
if ( result.success === true ) {
|
|
window.location.href =
|
|
ppcp_add_payment_method.payment_methods_page;
|
|
return;
|
|
}
|
|
|
|
errorHandler.message( ppcp_add_payment_method.error_message );
|
|
},
|
|
onError: ( error ) => {
|
|
console.error( error );
|
|
errorHandler.message( ppcp_add_payment_method.error_message );
|
|
},
|
|
};
|
|
}
|
|
|
|
export function cardFieldsConfiguration(
|
|
ppcp_add_payment_method,
|
|
errorHandler
|
|
) {
|
|
return {
|
|
createVaultSetupToken: async () => {
|
|
const response = await fetch(
|
|
ppcp_add_payment_method.ajax.create_setup_token.endpoint,
|
|
{
|
|
method: 'POST',
|
|
credentials: 'same-origin',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify( {
|
|
nonce: ppcp_add_payment_method.ajax.create_setup_token
|
|
.nonce,
|
|
payment_method: PaymentMethods.CARDS,
|
|
verification_method:
|
|
ppcp_add_payment_method.verification_method,
|
|
} ),
|
|
}
|
|
);
|
|
|
|
const result = await response.json();
|
|
if ( result.data.id ) {
|
|
return result.data.id;
|
|
}
|
|
|
|
errorHandler.message( ppcp_add_payment_method.error_message );
|
|
},
|
|
onApprove: async ( { vaultSetupToken } ) => {
|
|
const isFreeTrialCart =
|
|
ppcp_add_payment_method?.is_free_trial_cart ?? false;
|
|
const response = await fetch(
|
|
ppcp_add_payment_method.ajax.create_payment_token.endpoint,
|
|
{
|
|
method: 'POST',
|
|
credentials: 'same-origin',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify( {
|
|
nonce: ppcp_add_payment_method.ajax.create_payment_token
|
|
.nonce,
|
|
vault_setup_token: vaultSetupToken,
|
|
payment_method: PaymentMethods.CARDS,
|
|
is_free_trial_cart: isFreeTrialCart,
|
|
} ),
|
|
}
|
|
);
|
|
|
|
const result = await response.json();
|
|
if ( result.success === true ) {
|
|
const context = ppcp_add_payment_method?.context ?? '';
|
|
if ( context === 'checkout' ) {
|
|
document.querySelector( '#place_order' ).click();
|
|
return;
|
|
}
|
|
|
|
if (
|
|
ppcp_add_payment_method.is_subscription_change_payment_page
|
|
) {
|
|
const subscriptionId =
|
|
ppcp_add_payment_method.subscription_id_to_change_payment;
|
|
if ( subscriptionId && result.data ) {
|
|
const req = await fetch(
|
|
ppcp_add_payment_method.ajax
|
|
.subscription_change_payment_method.endpoint,
|
|
{
|
|
method: 'POST',
|
|
credentials: 'same-origin',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify( {
|
|
nonce: ppcp_add_payment_method.ajax
|
|
.subscription_change_payment_method
|
|
.nonce,
|
|
subscription_id: subscriptionId,
|
|
payment_method: getCurrentPaymentMethod(),
|
|
wc_payment_token_id: result.data,
|
|
} ),
|
|
}
|
|
);
|
|
|
|
const res = await req.json();
|
|
if ( res.success === true ) {
|
|
window.location.href = `${ ppcp_add_payment_method.view_subscriptions_page }/${ subscriptionId }`;
|
|
return;
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
window.location.href =
|
|
ppcp_add_payment_method.payment_methods_page;
|
|
return;
|
|
}
|
|
|
|
this.errorHandler.message( ppcp_add_payment_method.error_message );
|
|
},
|
|
onError: ( error ) => {
|
|
console.error( error );
|
|
errorHandler.message( ppcp_add_payment_method.error_message );
|
|
},
|
|
};
|
|
}
|
|
|
|
export function addPaymentMethodConfiguration( ppcp_add_payment_method ) {
|
|
return {
|
|
createVaultSetupToken: async () => {
|
|
const response = await fetch(
|
|
ppcp_add_payment_method.ajax.create_setup_token.endpoint,
|
|
{
|
|
method: 'POST',
|
|
credentials: 'same-origin',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify( {
|
|
nonce: ppcp_add_payment_method.ajax.create_setup_token
|
|
.nonce,
|
|
payment_method: getCurrentPaymentMethod(),
|
|
} ),
|
|
}
|
|
);
|
|
|
|
const result = await response.json();
|
|
if ( result.data.id ) {
|
|
return result.data.id;
|
|
}
|
|
|
|
console.error( result );
|
|
},
|
|
onApprove: async ( { vaultSetupToken } ) => {
|
|
const response = await fetch(
|
|
ppcp_add_payment_method.ajax.create_payment_token_for_guest
|
|
.endpoint,
|
|
{
|
|
method: 'POST',
|
|
credentials: 'same-origin',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify( {
|
|
nonce: ppcp_add_payment_method.ajax
|
|
.create_payment_token_for_guest.nonce,
|
|
vault_setup_token: vaultSetupToken,
|
|
} ),
|
|
}
|
|
);
|
|
|
|
const result = await response.json();
|
|
if ( result.success === true ) {
|
|
document.querySelector( '#place_order' ).click();
|
|
return;
|
|
}
|
|
|
|
console.error( result );
|
|
},
|
|
onError: ( error ) => {
|
|
console.error( error );
|
|
},
|
|
};
|
|
}
|