mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 18:16:38 +08:00
load form in the back, redirect ok, auth fails
This commit is contained in:
parent
10613711b9
commit
a1f4ead149
2 changed files with 63 additions and 56 deletions
|
@ -72,7 +72,6 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
loadPaypalScript(PayPalCommerceGateway, () => {
|
loadPaypalScript(PayPalCommerceGateway, () => {
|
||||||
bootstrapped = true;
|
bootstrapped = true;
|
||||||
const applepay = paypal.Applepay();
|
const applepay = paypal.Applepay();
|
||||||
console.log(applepay)
|
|
||||||
applepay.config()
|
applepay.config()
|
||||||
.then(applepayConfig => {
|
.then(applepayConfig => {
|
||||||
const appleContainer = document.getElementById("applepay-container");
|
const appleContainer = document.getElementById("applepay-container");
|
||||||
|
@ -96,7 +95,6 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
let applePaySession = () => {
|
let applePaySession = () => {
|
||||||
const session = new ApplePaySession(4, paymentRequest)
|
const session = new ApplePaySession(4, paymentRequest)
|
||||||
session.begin()
|
session.begin()
|
||||||
console.log(session)
|
|
||||||
if (needShipping) {
|
if (needShipping) {
|
||||||
session.onshippingmethodselected = function (event) {
|
session.onshippingmethodselected = function (event) {
|
||||||
jQuery.ajax({
|
jQuery.ajax({
|
||||||
|
@ -115,9 +113,7 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
},
|
},
|
||||||
success: (applePayShippingMethodUpdate, textStatus, jqXHR) => {
|
success: (applePayShippingMethodUpdate, textStatus, jqXHR) => {
|
||||||
let response = applePayShippingMethodUpdate.data
|
let response = applePayShippingMethodUpdate.data
|
||||||
console.log('onshippingmethod', response)
|
|
||||||
selectedShippingMethod = event.shippingMethod
|
selectedShippingMethod = event.shippingMethod
|
||||||
console.log(selectedShippingMethod)
|
|
||||||
//order the response shipping methods, so that the selected shipping method is the first one
|
//order the response shipping methods, so that the selected shipping method is the first one
|
||||||
let orderedShippingMethods = response.newShippingMethods.sort((a, b) => {
|
let orderedShippingMethods = response.newShippingMethods.sort((a, b) => {
|
||||||
if (a.label === selectedShippingMethod.label) {
|
if (a.label === selectedShippingMethod.label) {
|
||||||
|
@ -156,7 +152,6 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
success: (applePayShippingContactUpdate, textStatus, jqXHR) => {
|
success: (applePayShippingContactUpdate, textStatus, jqXHR) => {
|
||||||
let response = applePayShippingContactUpdate.data
|
let response = applePayShippingContactUpdate.data
|
||||||
updatedContactInfo = event.shippingContact
|
updatedContactInfo = event.shippingContact
|
||||||
console.log('onshippingcontact', response)
|
|
||||||
if (applePayShippingContactUpdate.success === false) {
|
if (applePayShippingContactUpdate.success === false) {
|
||||||
response.errors = createAppleErrors(response.errors)
|
response.errors = createAppleErrors(response.errors)
|
||||||
}
|
}
|
||||||
|
@ -209,6 +204,7 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
let createOrderInPayPal = actionHandler.createOrder()
|
let createOrderInPayPal = actionHandler.createOrder()
|
||||||
const processInWooAndCapture = async (data) => {
|
const processInWooAndCapture = async (data) => {
|
||||||
try {
|
try {
|
||||||
|
console.log('processInWooAndCapture', data)
|
||||||
const billingContact = data.billing_contact
|
const billingContact = data.billing_contact
|
||||||
const shippingContact = data.shipping_contact
|
const shippingContact = data.shipping_contact
|
||||||
jQuery.ajax({
|
jQuery.ajax({
|
||||||
|
@ -222,32 +218,7 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
'billing_contact': billingContact,
|
'billing_contact': billingContact,
|
||||||
'token': event.payment.token,
|
'token': event.payment.token,
|
||||||
'shipping_method': selectedShippingMethod,
|
'shipping_method': selectedShippingMethod,
|
||||||
'mollie-payments-for-woocommerce_issuer_applepay': 'applepay',
|
|
||||||
'woocommerce-process-checkout-nonce': nonce,
|
'woocommerce-process-checkout-nonce': nonce,
|
||||||
'billing_first_name': billingContact.givenName || '',
|
|
||||||
'billing_last_name': billingContact.familyName || '',
|
|
||||||
'billing_company': '',
|
|
||||||
'billing_country': billingContact.countryCode || '',
|
|
||||||
'billing_address_1': billingContact.addressLines[0] || '',
|
|
||||||
'billing_address_2': billingContact.addressLines[1] || '',
|
|
||||||
'billing_postcode': billingContact.postalCode || '',
|
|
||||||
'billing_city': billingContact.locality || '',
|
|
||||||
'billing_state': billingContact.administrativeArea || '',
|
|
||||||
'billing_phone': billingContact.phoneNumber || '000000000000',
|
|
||||||
'billing_email': shippingContact.emailAddress || '',
|
|
||||||
'shipping_first_name': shippingContact.givenName || '',
|
|
||||||
'shipping_last_name': shippingContact.familyName || '',
|
|
||||||
'shipping_company': '',
|
|
||||||
'shipping_country': shippingContact.countryCode || '',
|
|
||||||
'shipping_address_1': shippingContact.addressLines[0] || '',
|
|
||||||
'shipping_address_2': shippingContact.addressLines[1] || '',
|
|
||||||
'shipping_postcode': shippingContact.postalCode || '',
|
|
||||||
'shipping_city': shippingContact.locality || '',
|
|
||||||
'shipping_state': shippingContact.administrativeArea || '',
|
|
||||||
'shipping_phone': shippingContact.phoneNumber || '000000000000',
|
|
||||||
'shipping_email': shippingContact.emailAddress || '',
|
|
||||||
'order_comments': '',
|
|
||||||
'payment_method': 'ppcp-gateway',
|
|
||||||
'funding_source': 'applepay',
|
'funding_source': 'applepay',
|
||||||
'_wp_http_referer': '/?wc-ajax=update_order_review',
|
'_wp_http_referer': '/?wc-ajax=update_order_review',
|
||||||
'paypal_order_id': data.paypal_order_id,
|
'paypal_order_id': data.paypal_order_id,
|
||||||
|
@ -255,18 +226,18 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
complete: (jqXHR, textStatus) => {
|
complete: (jqXHR, textStatus) => {
|
||||||
},
|
},
|
||||||
success: (authorizationResult, textStatus, jqXHR) => {
|
success: (authorizationResult, textStatus, jqXHR) => {
|
||||||
let result = authorizationResult.data
|
console.log('success authorizationResult', authorizationResult)
|
||||||
|
if (authorizationResult.result === "success") {
|
||||||
if (authorizationResult.success === true) {
|
redirectionUrl = authorizationResult.redirect;
|
||||||
redirectionUrl = result['returnUrl'];
|
//session.completePayment(ApplePaySession.STATUS_SUCCESS)
|
||||||
session.completePayment(result['responseToApple'])
|
|
||||||
window.location.href = redirectionUrl
|
window.location.href = redirectionUrl
|
||||||
} else {
|
} else {
|
||||||
result.errors = createAppleErrors(result.errors)
|
//session.completePayment(ApplePaySession.STATUS_FAILURE)
|
||||||
session.completePayment(result)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: (jqXHR, textStatus, errorThrown) => {
|
error: (jqXHR, textStatus, errorThrown) => {
|
||||||
|
console.log('error authorizationResult', errorThrown)
|
||||||
|
session.completePayment(ApplePaySession.STATUS_FAILURE)
|
||||||
console.warn(textStatus, errorThrown)
|
console.warn(textStatus, errorThrown)
|
||||||
session.abort()
|
session.abort()
|
||||||
},
|
},
|
||||||
|
@ -276,6 +247,7 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
createOrderInPayPal([], []).then((orderId) => {
|
createOrderInPayPal([], []).then((orderId) => {
|
||||||
|
console.log('createOrderInPayPal', orderId)
|
||||||
applepay.confirmOrder(
|
applepay.confirmOrder(
|
||||||
{
|
{
|
||||||
orderId: orderId,
|
orderId: orderId,
|
||||||
|
@ -283,27 +255,18 @@ import {loadPaypalScript} from '../../../ppcp-button/resources/js/modules/Helper
|
||||||
billingContact: event.payment.billingContact
|
billingContact: event.payment.billingContact
|
||||||
}
|
}
|
||||||
).then(
|
).then(
|
||||||
confirmResult => {
|
() => {
|
||||||
session.completePayment(ApplePaySession.STATUS_SUCCESS);
|
session.completePayment(ApplePaySession.STATUS_SUCCESS);
|
||||||
let data = {
|
let data = {
|
||||||
billing_contact: event.payment.billingContact,
|
billing_contact: event.payment.billingContact,
|
||||||
shipping_contact: event.payment.shippingContact,
|
shipping_contact: event.payment.shippingContact,
|
||||||
paypal_order_id: orderId
|
paypal_order_id: orderId
|
||||||
}
|
}
|
||||||
processInWooAndCapture(data).then(
|
processInWooAndCapture(data)
|
||||||
() => {
|
|
||||||
console.log('done in woo and capture')
|
|
||||||
let result = confirmResult.data
|
|
||||||
redirectionUrl = result['returnUrl'];
|
|
||||||
session.completePayment(result['responseToApple'])
|
|
||||||
window.location.href = redirectionUrl
|
|
||||||
}
|
}
|
||||||
)
|
).catch(err => {
|
||||||
}
|
|
||||||
)
|
|
||||||
.catch(err => {
|
|
||||||
session.completePayment(ApplePaySession.STATUS_FAILURE);
|
|
||||||
console.error('Error confirming order with applepay token');
|
console.error('Error confirming order with applepay token');
|
||||||
|
session.completePayment(ApplePaySession.STATUS_FAILURE);
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -292,9 +292,10 @@ class ApplepayPaymentMethod {
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function create_wc_order() {
|
public function create_wc_order() {
|
||||||
$this->response_after_successful_result();
|
//$this->response_after_successful_result();
|
||||||
$applepay_request_data_object = $this->applepay_data_object_http();
|
$applepay_request_data_object = $this->applepay_data_object_http();
|
||||||
$applepay_request_data_object->order_data('productDetail');
|
$applepay_request_data_object->order_data('productDetail');
|
||||||
|
$this->update_posted_data($applepay_request_data_object);
|
||||||
$cart_item_key = $this->prepare_cart($applepay_request_data_object);
|
$cart_item_key = $this->prepare_cart($applepay_request_data_object);
|
||||||
$cart = WC()->cart;
|
$cart = WC()->cart;
|
||||||
$this->which_calculate_totals($cart, $applepay_request_data_object );
|
$this->which_calculate_totals($cart, $applepay_request_data_object );
|
||||||
|
@ -311,9 +312,12 @@ class ApplepayPaymentMethod {
|
||||||
}
|
}
|
||||||
$this->add_addresses_to_order($applepay_request_data_object);
|
$this->add_addresses_to_order($applepay_request_data_object);
|
||||||
//add_action('woocommerce_checkout_order_processed', array($this, 'process_order_as_paid'), 10, 3);
|
//add_action('woocommerce_checkout_order_processed', array($this, 'process_order_as_paid'), 10, 3);
|
||||||
WC()->checkout()->process_checkout();
|
add_filter('woocommerce_payment_successful_result', function (array $result) use ($cart, $cart_item_key) : array {
|
||||||
$this->clear_current_cart($cart, $cart_item_key);
|
$this->clear_current_cart($cart, $cart_item_key);
|
||||||
$this->reload_cart( $cart );
|
$this->reload_cart( $cart );
|
||||||
|
return $result;
|
||||||
|
});
|
||||||
|
WC()->checkout()->process_checkout();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -746,4 +750,44 @@ class ApplepayPaymentMethod {
|
||||||
wc_reduce_stock_levels($order_id);
|
wc_reduce_stock_levels($order_id);
|
||||||
$order->save();
|
$order->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function update_posted_data( $applepay_request_data_object )
|
||||||
|
{
|
||||||
|
add_filter(
|
||||||
|
'woocommerce_checkout_posted_data',
|
||||||
|
function ($data) use ($applepay_request_data_object) {
|
||||||
|
|
||||||
|
$data['payment_method'] = "ppcp-gateway";
|
||||||
|
$data['shipping_method'] = $applepay_request_data_object->shipping_method();
|
||||||
|
$data['billing_first_name'] = $applepay_request_data_object->billing_address()['first_name'] ?? '';
|
||||||
|
$data['billing_last_name'] = $applepay_request_data_object->billing_address()['last_name'] ?? '';
|
||||||
|
$data['billing_company'] = $applepay_request_data_object->billing_address()['company'] ?? '';
|
||||||
|
$data['billing_country'] = $applepay_request_data_object->billing_address()['country'] ?? '';
|
||||||
|
$data['billing_address_1'] = $applepay_request_data_object->billing_address()['address_1'] ?? '';
|
||||||
|
$data['billing_address_2'] = $applepay_request_data_object->billing_address()['address_2'] ?? '';
|
||||||
|
$data['billing_city'] = $applepay_request_data_object->billing_address()['city'] ?? '';
|
||||||
|
$data['billing_state'] = $applepay_request_data_object->billing_address()['state'] ?? '';
|
||||||
|
$data['billing_postcode'] = $applepay_request_data_object->billing_address()['postcode'] ?? '';
|
||||||
|
|
||||||
|
|
||||||
|
if ( $applepay_request_data_object->shipping_method() !== null ) {
|
||||||
|
$data['billing_email'] = $applepay_request_data_object->shipping_address()['email'] ?? '';
|
||||||
|
$data['billing_phone'] = $applepay_request_data_object->shipping_address()['phone'] ?? '';
|
||||||
|
$data['shipping_first_name'] = $applepay_request_data_object->shipping_address()['first_name'] ?? '';
|
||||||
|
$data['shipping_last_name'] = $applepay_request_data_object->shipping_address()['last_name'] ?? '';
|
||||||
|
$data['shipping_company'] = $applepay_request_data_object->shipping_address()['company'] ?? '';
|
||||||
|
$data['shipping_country'] = $applepay_request_data_object->shipping_address()['country'] ?? '';
|
||||||
|
$data['shipping_address_1'] = $applepay_request_data_object->shipping_address()['address_1'] ?? '';
|
||||||
|
$data['shipping_address_2'] = $applepay_request_data_object->shipping_address()['address_2'] ?? '';
|
||||||
|
$data['shipping_city'] = $applepay_request_data_object->shipping_address()['city'] ?? '';
|
||||||
|
$data['shipping_state'] = $applepay_request_data_object->shipping_address()['state'] ?? '';
|
||||||
|
$data['shipping_postcode'] = $applepay_request_data_object->shipping_address()['postcode'] ?? '';
|
||||||
|
$data['shipping_email'] = $applepay_request_data_object->shipping_address()['email'] ?? '';
|
||||||
|
$data['shipping_phone'] = $applepay_request_data_object->shipping_address()['phone'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue