mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 09:08:09 +08:00
Fix merge conflicts with trunk
This commit is contained in:
commit
34b624905d
31 changed files with 1008 additions and 165 deletions
|
@ -19,9 +19,6 @@ class CheckoutActionHandler {
|
|||
const errorHandler = this.errorHandler;
|
||||
|
||||
const formSelector = this.config.context === 'checkout' ? 'form.checkout' : 'form#order_review';
|
||||
spinner.setTarget(formSelector);
|
||||
spinner.block();
|
||||
|
||||
const formValues = jQuery(formSelector).serialize();
|
||||
|
||||
return fetch(this.config.ajax.create_order.endpoint, {
|
||||
|
@ -39,7 +36,18 @@ class CheckoutActionHandler {
|
|||
}).then(function (data) {
|
||||
if (!data.success) {
|
||||
spinner.unblock();
|
||||
errorHandler.message(data.data.message, true);
|
||||
//handle both messages sent from Woocommerce (data.messages) and this plugin (data.data.message)
|
||||
if (typeof(data.messages) !== 'undefined' )
|
||||
{
|
||||
const domParser = new DOMParser();
|
||||
errorHandler.appendPreparedErrorMessageElement(
|
||||
domParser.parseFromString(data.messages, 'text/html')
|
||||
.querySelector('ul')
|
||||
);
|
||||
} else {
|
||||
errorHandler.message(data.data.message, true);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
const input = document.createElement('input');
|
||||
|
@ -53,8 +61,12 @@ class CheckoutActionHandler {
|
|||
return {
|
||||
createOrder,
|
||||
onApprove:onApprove(this, this.errorHandler, this.spinner),
|
||||
onError: (error) => {
|
||||
onCancel: () => {
|
||||
spinner.unblock();
|
||||
},
|
||||
onError: () => {
|
||||
this.errorHandler.genericError();
|
||||
spinner.unblock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ class ErrorHandler {
|
|||
{
|
||||
this.genericErrorText = genericErrorText;
|
||||
this.wrapper = document.querySelector('.woocommerce-notices-wrapper');
|
||||
this.messagesList = document.querySelector('ul.woocommerce-error');
|
||||
}
|
||||
|
||||
genericError() {
|
||||
|
@ -14,18 +15,55 @@ class ErrorHandler {
|
|||
this.message(this.genericErrorText)
|
||||
}
|
||||
|
||||
appendPreparedErrorMessageElement(errorMessageElement)
|
||||
{
|
||||
if(this.messagesList === null) {
|
||||
this.prepareMessagesList();
|
||||
}
|
||||
|
||||
this.messagesList.replaceWith(errorMessageElement);
|
||||
}
|
||||
|
||||
message(text, persist = false)
|
||||
{
|
||||
this.wrapper.classList.add('woocommerce-error');
|
||||
if(! typeof String || text.length === 0){
|
||||
throw new Error('A new message text must be a non-empty string.');
|
||||
}
|
||||
|
||||
if(this.messagesList === null){
|
||||
this.prepareMessagesList();
|
||||
}
|
||||
|
||||
if (persist) {
|
||||
this.wrapper.classList.add('ppcp-persist');
|
||||
} else {
|
||||
this.wrapper.classList.remove('ppcp-persist');
|
||||
}
|
||||
this.wrapper.innerHTML = this.sanitize(text);
|
||||
|
||||
let messageNode = this.prepareMessagesListItem(text);
|
||||
this.messagesList.appendChild(messageNode);
|
||||
|
||||
jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))
|
||||
}
|
||||
|
||||
prepareMessagesList()
|
||||
{
|
||||
if(this.messagesList === null){
|
||||
this.messagesList = document.createElement('ul');
|
||||
this.messagesList.setAttribute('class', 'woocommerce-error');
|
||||
this.messagesList.setAttribute('role', 'alert');
|
||||
this.wrapper.appendChild(this.messagesList);
|
||||
}
|
||||
}
|
||||
|
||||
prepareMessagesListItem(message)
|
||||
{
|
||||
const li = document.createElement('li');
|
||||
li.innerHTML = message;
|
||||
|
||||
return li;
|
||||
}
|
||||
|
||||
sanitize(text)
|
||||
{
|
||||
const textarea = document.createElement('textarea');
|
||||
|
|
|
@ -113,6 +113,9 @@ class CreditCardRenderer {
|
|||
payload.orderID = payload.orderId;
|
||||
this.spinner.unblock();
|
||||
return contextConfig.onApprove(payload);
|
||||
}).catch(() => {
|
||||
this.errorHandler.genericError();
|
||||
this.spinner.unblock();
|
||||
});
|
||||
} else {
|
||||
this.spinner.unblock();
|
||||
|
|
|
@ -60,7 +60,6 @@ return array(
|
|||
return new DisabledSmartButton();
|
||||
}
|
||||
$payee_repository = $container->get( 'api.repository.payee' );
|
||||
$identity_token = $container->get( 'api.endpoint.identity-token' );
|
||||
$payer_factory = $container->get( 'api.factory.payer' );
|
||||
$request_data = $container->get( 'button.request-data' );
|
||||
|
||||
|
@ -75,7 +74,6 @@ return array(
|
|||
$container->get( 'session.handler' ),
|
||||
$settings,
|
||||
$payee_repository,
|
||||
$identity_token,
|
||||
$payer_factory,
|
||||
$client_id,
|
||||
$request_data,
|
||||
|
|
|
@ -60,13 +60,6 @@ class SmartButton implements SmartButtonInterface {
|
|||
*/
|
||||
private $payee_repository;
|
||||
|
||||
/**
|
||||
* The Identity Token.
|
||||
*
|
||||
* @var IdentityToken
|
||||
*/
|
||||
private $identity_token;
|
||||
|
||||
/**
|
||||
* The Payer Factory.
|
||||
*
|
||||
|
@ -145,7 +138,6 @@ class SmartButton implements SmartButtonInterface {
|
|||
SessionHandler $session_handler,
|
||||
Settings $settings,
|
||||
PayeeRepository $payee_repository,
|
||||
IdentityToken $identity_token,
|
||||
PayerFactory $payer_factory,
|
||||
string $client_id,
|
||||
RequestData $request_data,
|
||||
|
@ -160,7 +152,6 @@ class SmartButton implements SmartButtonInterface {
|
|||
$this->session_handler = $session_handler;
|
||||
$this->settings = $settings;
|
||||
$this->payee_repository = $payee_repository;
|
||||
$this->identity_token = $identity_token;
|
||||
$this->payer_factory = $payer_factory;
|
||||
$this->client_id = $client_id;
|
||||
$this->request_data = $request_data;
|
||||
|
@ -373,7 +364,7 @@ class SmartButton implements SmartButtonInterface {
|
|||
);
|
||||
}
|
||||
|
||||
add_action( 'woocommerce_review_order_after_submit', array( $this, 'button_renderer' ), 10 );
|
||||
add_action( 'woocommerce_review_order_after_payment', array( $this, 'button_renderer' ), 10 );
|
||||
add_action( 'woocommerce_pay_order_after_submit', array( $this, 'button_renderer' ), 10 );
|
||||
|
||||
return true;
|
||||
|
@ -613,7 +604,6 @@ class SmartButton implements SmartButtonInterface {
|
|||
return is_user_logged_in();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Whether we need to initialize the script to enable tokenization for subscriptions or not.
|
||||
*
|
||||
|
@ -775,22 +765,15 @@ class SmartButton implements SmartButtonInterface {
|
|||
if ( $payee->merchant_id() ) {
|
||||
$params['merchant-id'] = $payee->merchant_id();
|
||||
}
|
||||
$disable_funding = $this->settings->has( 'disable_funding' ) ?
|
||||
$disable_funding = $this->settings->has( 'disable_funding' ) ?
|
||||
$this->settings->get( 'disable_funding' ) : array();
|
||||
$disable_funding[] = 'venmo';
|
||||
if ( ! is_checkout() ) {
|
||||
$disable_funding[] = 'card';
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable card for UK.
|
||||
*/
|
||||
$region = wc_get_base_location();
|
||||
$country = $region['country'];
|
||||
if ( 'GB' === $country ) {
|
||||
$disable_funding[] = 'credit';
|
||||
if ( count( $disable_funding ) > 0 ) {
|
||||
$params['disable-funding'] = implode( ',', array_unique( $disable_funding ) );
|
||||
}
|
||||
$params['disable-funding'] = implode( ',', array_unique( $disable_funding ) );
|
||||
|
||||
$smart_button_url = add_query_arg( $params, 'https://www.paypal.com/sdk/js' );
|
||||
return $smart_button_url;
|
||||
|
|
|
@ -163,7 +163,7 @@ class CreateOrderEndpoint implements EndpointInterface {
|
|||
|
||||
$this->set_bn_code( $data );
|
||||
$needs_shipping = WC()->cart && WC()->cart->needs_shipping();
|
||||
$shipping_address_is_fix = $needs_shipping && 'checkout' === $data['context'] ? true : false;
|
||||
$shipping_address_is_fix = $needs_shipping && 'checkout' === $data['context'];
|
||||
$order = $this->api_endpoint->create(
|
||||
$purchase_units,
|
||||
$this->payer( $data, $wc_order ),
|
||||
|
@ -173,7 +173,7 @@ class CreateOrderEndpoint implements EndpointInterface {
|
|||
$shipping_address_is_fix
|
||||
);
|
||||
if ( 'checkout' === $data['context'] ) {
|
||||
$this->validate_checkout_form( $data['form'], $order );
|
||||
$this->process_checkout_form( $data['form'], $order );
|
||||
}
|
||||
if ( 'pay-now' === $data['context'] && get_option( 'woocommerce_terms_page_id', '' ) !== '' ) {
|
||||
$this->validate_paynow_form( $data['form'] );
|
||||
|
@ -263,7 +263,7 @@ class CreateOrderEndpoint implements EndpointInterface {
|
|||
*
|
||||
* @throws \Exception On Error.
|
||||
*/
|
||||
private function validate_checkout_form( string $form_values, Order $order ) {
|
||||
private function process_checkout_form( string $form_values, Order $order ) {
|
||||
$this->order = $order;
|
||||
$form_values = explode( '&', $form_values );
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ class MessagesApply {
|
|||
'US',
|
||||
'DE',
|
||||
'GB',
|
||||
'FR',
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue