Stripe Payments For WooCommerce by Checkout Plugins - Version 1.4.1

Version Description

  • TUESDAY, 15 MARCH 2022 =
  • New: Express checkout class layout support.
  • Improvement: Added localization for Stripe error messages.
  • Improvement: Added compatibility with popular themes.
  • Fix: Express checkout console error.
  • Fix: Express checkout's broken admin preview.
Download this release

Release Info

Developer brainstormworg
Plugin Icon 128x128 Stripe Payments For WooCommerce by Checkout Plugins
Version 1.4.1
Comparing to
See all releases

Code changes from version 1.4.0 to 1.4.1

admin/admin-controller.php CHANGED
@@ -1057,6 +1057,7 @@ class Admin_Controller {
1057
  }
1058
 
1059
  $this->settings['cpsw_auto_connect'] = 'yes';
 
1060
  $this->update_options( $this->settings );
1061
  do_action( 'cpsw_after_connect_with_stripe', $this->settings['cpsw_con_status'] );
1062
  }
@@ -1201,6 +1202,7 @@ class Admin_Controller {
1201
  if ( isset( $_POST['error'] ) ) {
1202
  $error = $_POST['error'];
1203
  $error_message = $error['message'] . ' (' . $error['type'] . ')';
 
1204
  Logger::error( $error_message, true );
1205
  return wp_send_json_success( [ 'message' => $error_message ] );
1206
  }
@@ -1697,6 +1699,19 @@ class Admin_Controller {
1697
  'id' => 'cpsw_express_checkout_checkout_page',
1698
  'class' => 'cpsw_checkout_options',
1699
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
1700
  'checkout_button_position' => [
1701
  'title' => __( 'Button position', 'checkout-plugins-stripe-woo' ),
1702
  'type' => 'select',
1057
  }
1058
 
1059
  $this->settings['cpsw_auto_connect'] = 'yes';
1060
+ $this->settings['cpsw_debug_log'] = 'yes';
1061
  $this->update_options( $this->settings );
1062
  do_action( 'cpsw_after_connect_with_stripe', $this->settings['cpsw_con_status'] );
1063
  }
1202
  if ( isset( $_POST['error'] ) ) {
1203
  $error = $_POST['error'];
1204
  $error_message = $error['message'] . ' (' . $error['type'] . ')';
1205
+ $error_message = Helper::get_localized_messages( $error['code'], $error_message );
1206
  Logger::error( $error_message, true );
1207
  return wp_send_json_success( [ 'message' => $error_message ] );
1208
  }
1699
  'id' => 'cpsw_express_checkout_checkout_page',
1700
  'class' => 'cpsw_checkout_options',
1701
  ],
1702
+ 'checkout_button_layout' => [
1703
+ 'title' => __( 'Layout', 'checkout-plugins-stripe-woo' ),
1704
+ 'type' => 'select',
1705
+ 'class' => 'cpsw_checkout_options',
1706
+ 'id' => 'cpsw_express_checkout_checkout_page_layout',
1707
+ 'desc' => __( 'Select the layout of Express Checkout button. This option will work only for Checkout page.', 'checkout-plugins-stripe-woo' ),
1708
+ 'value' => $values['express_checkout_checkout_page_layout'],
1709
+ 'options' => [
1710
+ 'custom' => __( 'Custom', 'checkout-plugins-stripe-woo' ),
1711
+ 'classic' => __( 'Classic', 'checkout-plugins-stripe-woo' ),
1712
+ ],
1713
+ 'desc_tip' => true,
1714
+ ],
1715
  'checkout_button_position' => [
1716
  'title' => __( 'Button position', 'checkout-plugins-stripe-woo' ),
1717
  'type' => 'select',
admin/assets/js/express-checkout.js CHANGED
@@ -44,13 +44,24 @@
44
  $( '.cpsw_preview_tagline' ).html( $( '#cpsw_express_checkout_tagline' ).val() );
45
 
46
  const buttonWidth = $( '#cpsw_express_checkout_button_width' ).val() ? $( '#cpsw_express_checkout_button_width' ).val() + 'px' : '100%';
47
- $( '.cpsw-payment-request-custom-button-render' ).css( 'min-width', buttonWidth );
 
 
 
 
 
 
 
 
 
 
 
48
 
49
- $( '.cpsw_express_checkout_preview_wrapper' ).css( { textAlign: $( '#cpsw_express_checkout_button_alignment' ).val() } );
50
- if ( $( '#cpsw_express_checkout_button_alignment' ).val() === 'center' ) {
51
  $( '.cpsw-payment-request-custom-button-admin' ).css( { margin: '0 auto', float: 'none' } );
52
  } else {
53
- $( '.cpsw-payment-request-custom-button-admin' ).css( { marginBottom: '1em', float: $( '#cpsw_express_checkout_button_alignment' ).val() } );
54
  }
55
 
56
  if ( result.applePay ) {
@@ -169,10 +180,23 @@
169
  }
170
  }
171
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  $( document ).ready( function() {
173
  $( '.cpsw_express_checkout_location' ).selectWoo();
174
  generateExpressCheckoutDemo( style );
175
  toggleOptions();
 
176
 
177
  $( '#cpsw_express_checkout_button_text, #cpsw_express_checkout_button_theme' ).change( function() {
178
  style = {
@@ -183,6 +207,10 @@
183
  generateExpressCheckoutDemo( style );
184
  } );
185
 
 
 
 
 
186
  $( '#cpsw_express_checkout_location' ).change( function() {
187
  toggleOptions();
188
  } );
@@ -193,7 +221,7 @@
193
  $( '.submit' ).after( '<div class="cpsw_floating_preview"><span class="cpsw_button_preview_label">Button preview</div>' );
194
  $( '.cpsw_floating_preview' ).append( buttonPreview );
195
 
196
- const maxTop = $( '#cpsw_express_checkout-description' ).offset().top;
197
  const absoluteLeft = 900 - jQuery( '#adminmenuwrap' ).width();
198
  $( '.cpsw_floating_preview' ).css(
199
  {
@@ -238,7 +266,16 @@
238
  if ( '' === buttonWidth ) {
239
  buttonWidth = '100%';
240
  }
241
- $( '.cpsw-payment-request-custom-button-render' ).width( buttonWidth );
 
 
 
 
 
 
 
 
 
242
  } );
243
 
244
  $( '#cpsw_express_checkout_button_alignment' ).change( function() {
44
  $( '.cpsw_preview_tagline' ).html( $( '#cpsw_express_checkout_tagline' ).val() );
45
 
46
  const buttonWidth = $( '#cpsw_express_checkout_button_width' ).val() ? $( '#cpsw_express_checkout_button_width' ).val() + 'px' : '100%';
47
+ const buttonWidthOriginVal = $( '#cpsw_express_checkout_button_width' ).val();
48
+ const expressButtonAlignment = $( '#cpsw_express_checkout_button_alignment' ).val();
49
+
50
+ if ( buttonWidthOriginVal > 380 ) {
51
+ prButton.css( 'max-width', buttonWidth );
52
+ prButton.css( 'width', '100%' );
53
+ } else if ( '' !== buttonWidthOriginVal && buttonWidthOriginVal < 101 ) {
54
+ prButton.css( 'width', '112px' );
55
+ prButton.css( 'min-width', '112px' );
56
+ } else {
57
+ prButton.css( 'min-width', buttonWidth );
58
+ }
59
 
60
+ $( '.cpsw_express_checkout_preview_wrapper' ).css( { textAlign: expressButtonAlignment } );
61
+ if ( expressButtonAlignment === 'center' ) {
62
  $( '.cpsw-payment-request-custom-button-admin' ).css( { margin: '0 auto', float: 'none' } );
63
  } else {
64
+ $( '.cpsw-payment-request-custom-button-admin' ).css( { marginBottom: '1em', float: expressButtonAlignment } );
65
  }
66
 
67
  if ( result.applePay ) {
180
  }
181
  }
182
 
183
+ function cpswExpressCheckoutLayoutEffects() {
184
+ const checkoutPageLayout = $( '#cpsw_express_checkout_checkout_page_layout' ).val();
185
+
186
+ if ( checkoutPageLayout === 'classic' ) {
187
+ $( '#cpsw_express_checkout_button_alignment' ).parents( 'tr' ).hide();
188
+ $( '.cpsw_express_checkout_preview_wrapper' ).addClass( 'cpsw-classic' );
189
+ } else {
190
+ $( '#cpsw_express_checkout_button_alignment' ).parents( 'tr' ).show();
191
+ $( '.cpsw_express_checkout_preview_wrapper' ).removeClass( 'cpsw-classic' );
192
+ }
193
+ }
194
+
195
  $( document ).ready( function() {
196
  $( '.cpsw_express_checkout_location' ).selectWoo();
197
  generateExpressCheckoutDemo( style );
198
  toggleOptions();
199
+ cpswExpressCheckoutLayoutEffects();
200
 
201
  $( '#cpsw_express_checkout_button_text, #cpsw_express_checkout_button_theme' ).change( function() {
202
  style = {
207
  generateExpressCheckoutDemo( style );
208
  } );
209
 
210
+ $( '#cpsw_express_checkout_checkout_page_layout' ).change( function() {
211
+ cpswExpressCheckoutLayoutEffects();
212
+ } );
213
+
214
  $( '#cpsw_express_checkout_location' ).change( function() {
215
  toggleOptions();
216
  } );
221
  $( '.submit' ).after( '<div class="cpsw_floating_preview"><span class="cpsw_button_preview_label">Button preview</div>' );
222
  $( '.cpsw_floating_preview' ).append( buttonPreview );
223
 
224
+ const maxTop = $( '#cpsw_express_checkout-description' ).offset().top - 60;
225
  const absoluteLeft = 900 - jQuery( '#adminmenuwrap' ).width();
226
  $( '.cpsw_floating_preview' ).css(
227
  {
266
  if ( '' === buttonWidth ) {
267
  buttonWidth = '100%';
268
  }
269
+
270
+ if ( buttonWidth > 380 ) {
271
+ $( '.cpsw-payment-request-custom-button-render' ).css( 'max-width', buttonWidth );
272
+ $( '.cpsw-payment-request-custom-button-render' ).css( 'width', '100%' );
273
+ } else if ( buttonWidth < 100 && '' !== buttonWidth ) {
274
+ $( '.cpsw-payment-request-custom-button-render' ).css( 'width', '112px' );
275
+ $( '.cpsw-payment-request-custom-button-render' ).css( 'min-width', '112px' );
276
+ } else {
277
+ $( '.cpsw-payment-request-custom-button-render' ).width( buttonWidth );
278
+ }
279
  } );
280
 
281
  $( '#cpsw_express_checkout_button_alignment' ).change( function() {
assets/css/express-checkout.css CHANGED
@@ -36,6 +36,83 @@
36
  display: none;
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  /* Custom express checkout button style */
40
  .cpsw-payment-request-custom-button-render {
41
  overflow: hidden !important;
@@ -311,7 +388,9 @@
311
  }
312
 
313
  #cpsw-payment-request-wrapper.cpsw-product.below,
314
- #cpsw-payment-request-wrapper.cpsw-product.above {
 
 
315
  float: left;
316
  overflow: visible;
317
  }
@@ -336,6 +415,24 @@
336
  margin-bottom: 0;
337
  }
338
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
339
  @keyframes cpsw_shine {
340
 
341
  0% {
36
  display: none;
37
  }
38
 
39
+ #cpsw-payment-request-wrapper.checkout.cpsw-classic .cpsw-payment-request-button-wrapper,
40
+ .cpsw_express_checkout_preview_wrapper.cpsw-classic {
41
+ display: flex;
42
+ align-items: flex-start;
43
+ flex-wrap: wrap;
44
+ position: relative;
45
+ border: 1px solid #e6e6e6;
46
+ border-radius: 5px;
47
+ padding: 1em 2em 2em;
48
+ justify-content: center;
49
+ margin-bottom: 1em !important;
50
+ }
51
+
52
+ .cpsw_floating_preview .cpsw_express_checkout_preview_wrapper.cpsw-classic {
53
+ border: 1px solid #c3c4c7;
54
+ text-align: center !important;
55
+ }
56
+
57
+ .cpsw_floating_preview .cpsw_express_checkout_preview_wrapper.cpsw-classic #cpsw-payment-request-custom-button {
58
+ text-align: center !important;
59
+ overflow: hidden;
60
+ max-width: 380px;
61
+ }
62
+
63
+ .cpsw_floating_preview .cpsw_express_checkout_preview_wrapper.cpsw-classic .cpsw-payment-request-custom-button-admin,
64
+ .cpsw_floating_preview .cpsw_express_checkout_preview_wrapper.cpsw-classic .cpsw-payment-request-custom-button-render {
65
+ max-width: 380px !important;
66
+ }
67
+
68
+ #cpsw-payment-request-wrapper.checkout.cpsw-classic #cpsw-payment-request-title,
69
+ .cpsw_express_checkout_preview_wrapper.cpsw-classic .cpsw_preview_title {
70
+ font-size: 14px;
71
+ margin: 0;
72
+ position: absolute;
73
+ top: -12px;
74
+ left: 50%;
75
+ transform: translateX(-50%) translateZ(0);
76
+ background: #fff;
77
+ padding: 0 0.75em;
78
+ font-weight: 400;
79
+ white-space: nowrap;
80
+ border: none;
81
+ }
82
+
83
+ .cpsw_floating_preview .cpsw_express_checkout_preview_wrapper.cpsw-classic .cpsw_preview_title {
84
+ background: #f0f0f1;
85
+ }
86
+
87
+ #cpsw-payment-request-wrapper.checkout.cpsw-classic #cpsw-payment-request-separator::before,
88
+ #cpsw-payment-request-wrapper.checkout.cpsw-classic #cpsw-payment-request-separator::after {
89
+ content: "";
90
+ display: block;
91
+ position: absolute;
92
+ top: 50%;
93
+ left: 0;
94
+ z-index: 2;
95
+ height: 1px;
96
+ background: #e6e6e6;
97
+ width: 48%;
98
+ }
99
+
100
+ #cpsw-payment-request-wrapper.checkout.cpsw-classic #cpsw-payment-request-custom-button {
101
+ width: 100%;
102
+ }
103
+
104
+ #cpsw-payment-request-wrapper.checkout.cpsw-classic #cpsw-payment-request-separator::after {
105
+ right: 0;
106
+ left: auto;
107
+ }
108
+
109
+ #cpsw-payment-request-wrapper.checkout.cpsw-classic #cpsw-payment-request-separator {
110
+ text-transform: none;
111
+ white-space: nowrap;
112
+ padding: 0.5em 1em;
113
+ position: relative;
114
+ }
115
+
116
  /* Custom express checkout button style */
117
  .cpsw-payment-request-custom-button-render {
118
  overflow: hidden !important;
388
  }
389
 
390
  #cpsw-payment-request-wrapper.cpsw-product.below,
391
+ #cpsw-payment-request-wrapper.cpsw-product.above,
392
+ #cpsw-payment-request-wrapper.cpsw-product.below .cpsw-payment-request-button-wrapper,
393
+ #cpsw-payment-request-wrapper.cpsw-product.above .cpsw-payment-request-separator {
394
  float: left;
395
  overflow: visible;
396
  }
415
  margin-bottom: 0;
416
  }
417
 
418
+ .theme-neve .entry-summary > form.cart,
419
+ .theme-blocksy form.cart .ct-cart-actions,
420
+ .theme-neve .woocommerce .wc-proceed-to-checkout,
421
+ .theme-neve.woocommerce.single .woocommerce-variation-add-to-cart {
422
+ display: initial !important;
423
+ }
424
+
425
+ form.cart button.single_add_to_cart_button {
426
+ --item-order: initial !important;
427
+ flex: initial;
428
+ }
429
+
430
+ .theme-blocksy form.cart #cpsw-payment-request-wrapper.cpsw-product.below,
431
+ .theme-blocksy form.cart #cpsw-payment-request-wrapper.cpsw-product.below .cpsw-payment-request-button-wrapper,
432
+ .theme-blocksy form.cart #cpsw-payment-request-wrapper.cpsw-product.below .cpsw-payment-request-custom-button-render {
433
+ width: 100% !important;
434
+ }
435
+
436
  @keyframes cpsw_shine {
437
 
438
  0% {
assets/css/stripe-elements.css CHANGED
@@ -130,7 +130,6 @@
130
  }
131
 
132
  #cpsw-payment-request-wrapper.checkout #cpsw-payment-request-title {
133
- font-weight: 600;
134
  margin-bottom: 0.5em;
135
  }
136
 
130
  }
131
 
132
  #cpsw-payment-request-wrapper.checkout #cpsw-payment-request-title {
 
133
  margin-bottom: 0.5em;
134
  }
135
 
assets/js/payment-request.js CHANGED
@@ -10,6 +10,7 @@
10
  const endpoint = cpsw_payment_request.ajax_endpoint;
11
  const isResponsive = cpsw_payment_request.is_responsive;
12
  let addToCartButton = '';
 
13
  let productWrapper = '';
14
  let quantityInput = '';
15
  let addToCartHeight = '';
@@ -542,15 +543,24 @@
542
  let addToCartMinWidth = wcAddToCartButton.outerWidth() + $( 'form.cart .quantity' ).width() + parseInt( $( 'form.cart .quantity' ).css( 'marginRight' ).replace( 'px', '' ) );
543
 
544
  if ( 'inline' === style.button_position ) {
545
- addToCartMinWidth = wcAddToCartButton.innerWidth();
 
546
 
547
  if ( $( 'form.cart' ).width() < 500 ) {
548
  makeButtonInline();
549
  }
 
 
 
550
  }
551
 
552
  cpswExpressCheckoutWrapper.css( makeWidth, addToCartMinWidth + 'px' );
553
  cpswExpressCheckoutButton.css( makeWidth, addToCartMinWidth + 'px' );
 
 
 
 
 
554
  }
555
 
556
  cpswStyleExpressCheckoutButton( cpswExpressCheckoutButton, wcAddToCartButton );
@@ -665,6 +675,7 @@
665
  if ( $( '#cpsw-payment-request-wrapper' ).hasClass( 'inline' ) && ! $( '#cpsw-payment-request-wrapper' ).hasClass( 'sticky' ) ) {
666
  productWrapper = $( '#cpsw-payment-request-wrapper' ).parent();
667
  addToCartButton = productWrapper.children( '.single_add_to_cart_button' );
 
668
  quantityInput = productWrapper.children( '.quantity' );
669
 
670
  addToCartButton.css( { marginRight: quantityInput.css( 'marginRight' ) } );
@@ -689,6 +700,12 @@
689
  addToCartButton.css( {
690
  margin: '10px 0',
691
  clear: 'both',
 
 
 
 
 
 
692
  } );
693
 
694
  $( '#cpsw-payment-request-wrapper' ).css( {
10
  const endpoint = cpsw_payment_request.ajax_endpoint;
11
  const isResponsive = cpsw_payment_request.is_responsive;
12
  let addToCartButton = '';
13
+ let addToCartQuantity = '';
14
  let productWrapper = '';
15
  let quantityInput = '';
16
  let addToCartHeight = '';
543
  let addToCartMinWidth = wcAddToCartButton.outerWidth() + $( 'form.cart .quantity' ).width() + parseInt( $( 'form.cart .quantity' ).css( 'marginRight' ).replace( 'px', '' ) );
544
 
545
  if ( 'inline' === style.button_position ) {
546
+ addToCartMinWidth = wcAddToCartButton.outerWidth();
547
+ addToCartMinWidth = addToCartMinWidth < 120 ? 150 : addToCartMinWidth;
548
 
549
  if ( $( 'form.cart' ).width() < 500 ) {
550
  makeButtonInline();
551
  }
552
+ wcAddToCartButton.css( makeWidth, addToCartMinWidth + 'px' );
553
+ } else {
554
+ $( 'form.grouped_form button.single_add_to_cart_button' ).css( makeWidth, addToCartMinWidth + 'px' );
555
  }
556
 
557
  cpswExpressCheckoutWrapper.css( makeWidth, addToCartMinWidth + 'px' );
558
  cpswExpressCheckoutButton.css( makeWidth, addToCartMinWidth + 'px' );
559
+
560
+ if ( 'below' === style.button_position ) {
561
+ $( '.theme-twentytwentytwo .cpsw-payment-request-custom-button-render' ).css( makeWidth, wcAddToCartButton.outerWidth() + 'px' );
562
+ $( '.theme-twentytwentytwo #cpsw-payment-request-separator' ).css( makeWidth, wcAddToCartButton.outerWidth() + 'px' );
563
+ }
564
  }
565
 
566
  cpswStyleExpressCheckoutButton( cpswExpressCheckoutButton, wcAddToCartButton );
675
  if ( $( '#cpsw-payment-request-wrapper' ).hasClass( 'inline' ) && ! $( '#cpsw-payment-request-wrapper' ).hasClass( 'sticky' ) ) {
676
  productWrapper = $( '#cpsw-payment-request-wrapper' ).parent();
677
  addToCartButton = productWrapper.children( '.single_add_to_cart_button' );
678
+ addToCartQuantity = productWrapper.children( '.theme-flatsome .cart .quantity' );
679
  quantityInput = productWrapper.children( '.quantity' );
680
 
681
  addToCartButton.css( { marginRight: quantityInput.css( 'marginRight' ) } );
700
  addToCartButton.css( {
701
  margin: '10px 0',
702
  clear: 'both',
703
+ flex: 'initial',
704
+ } );
705
+
706
+ addToCartQuantity.css( {
707
+ width: '100%',
708
+ clear: 'both',
709
  } );
710
 
711
  $( '#cpsw-payment-request-wrapper' ).css( {
assets/js/stripe-elements.js CHANGED
@@ -8,6 +8,7 @@
8
  const notAllowedString = cpsw_global_settings.not_allowed_string;
9
  const defaultCards = cpsw_global_settings.default_cards;
10
  const homeURL = cpsw_global_settings.get_home_url;
 
11
 
12
  if ( '' === pubKey || ( 'live' === mode && ! cpsw_global_settings.is_ssl ) ) {
13
  return;
@@ -83,7 +84,7 @@
83
  }
84
  }
85
  if ( error ) {
86
- $( '.cpsw-stripe-error' ).html( error.message );
87
  } else {
88
  $( '.cpsw-stripe-error' ).html( '' );
89
  }
@@ -122,21 +123,21 @@
122
  }
123
 
124
  if ( error ) {
125
- $( '.cpsw-number-error' ).html( error.message );
126
  } else {
127
  $( '.cpsw-number-error' ).html( '' );
128
  }
129
  } );
130
  cardExpiry.on( 'change', ( { error } ) => {
131
  if ( error ) {
132
- $( '.cpsw-expiry-error' ).html( error.message );
133
  } else {
134
  $( '.cpsw-expiry-error' ).html( '' );
135
  }
136
  } );
137
  cardCvc.on( 'change', ( { error } ) => {
138
  if ( error ) {
139
- $( '.cpsw-cvc-error' ).html( error.message );
140
  } else {
141
  $( '.cpsw-cvc-error' ).html( '' );
142
  }
@@ -274,7 +275,7 @@
274
  $( 'form#order_review' ).unblock();
275
  $( 'form#add_payment_method' ).unblock();
276
  logError( result.error );
277
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
278
  window.scrollTo( { top: 0, behavior: 'smooth' } );
279
  return false;
280
  }
@@ -303,7 +304,7 @@
303
  $( '.woocommerce-error' ).remove();
304
  $( 'form.woocommerce-checkout' ).unblock();
305
  logError( result.error );
306
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
307
  window.scrollTo( { top: 0, behavior: 'smooth' } );
308
  $( 'form#order_review' ).unblock();
309
  $( 'form#add_payment_method' ).unblock();
@@ -329,7 +330,7 @@
329
  $( '.woocommerce-error' ).remove();
330
  wcCheckoutForm.unblock();
331
  logError( result.error );
332
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
333
  window.scrollTo( { top: 0, behavior: 'smooth' } );
334
  } else {
335
  // The payment has been processed!
@@ -352,7 +353,7 @@
352
  $( '.woocommerce-error' ).remove();
353
  wcCheckoutForm.unblock();
354
  logError( result.error );
355
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
356
  window.scrollTo( { top: 0, behavior: 'smooth' } );
357
  }
358
  } );
@@ -369,7 +370,7 @@
369
  $( '.woocommerce-error' ).remove();
370
  wcCheckoutForm.unblock();
371
  logError( result.error );
372
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
373
  window.scrollTo( { top: 0, behavior: 'smooth' } );
374
  wcCheckoutForm.removeClass( 'processing' );
375
  }
@@ -387,7 +388,7 @@
387
  $( '.woocommerce-error' ).remove();
388
  wcCheckoutForm.unblock();
389
  logError( result.error );
390
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
391
  window.scrollTo( { top: 0, behavior: 'smooth' } );
392
  wcCheckoutForm.removeClass( 'processing' );
393
  }
@@ -405,7 +406,7 @@
405
  $( '.woocommerce-error' ).remove();
406
  wcCheckoutForm.unblock();
407
  logError( result.error );
408
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
409
  window.scrollTo( { top: 0, behavior: 'smooth' } );
410
  wcCheckoutForm.removeClass( 'processing' );
411
  }
@@ -419,7 +420,7 @@
419
  $( '.woocommerce-error' ).remove();
420
  $( 'form.woocommerce-checkout' ).unblock();
421
  logError( result.error );
422
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
423
  window.scrollTo( { top: 0, behavior: 'smooth' } );
424
  } else {
425
  // The payment has been processed!
@@ -441,7 +442,7 @@
441
  $( '.woocommerce-error' ).remove();
442
  $( 'form.woocommerce-checkout' ).unblock();
443
  logError( result.error );
444
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
445
  window.scrollTo( { top: 0, behavior: 'smooth' } );
446
  } else {
447
  // The payment has been processed!
@@ -478,7 +479,7 @@
478
  $( '.woocommerce-error' ).remove();
479
  wcCheckoutForm.unblock();
480
  logError( result.error );
481
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.error.message + '</div>' ).show();
482
  window.scrollTo( { top: 0, behavior: 'smooth' } );
483
  } else {
484
  // The payment has been processed!
@@ -489,7 +490,7 @@
489
  $( '.woocommerce-error' ).remove();
490
  wcCheckoutForm.unblock();
491
  logError( result.paymentIntent.last_payment_error );
492
- $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + result.paymentIntent.last_payment_error.message + '</div>' ).show();
493
  window.scrollTo( { top: 0, behavior: 'smooth' } );
494
  wcCheckoutForm.removeClass( 'processing' );
495
  } else {
@@ -504,6 +505,10 @@
504
  }
505
  }
506
 
 
 
 
 
507
  function getBillingDetails() {
508
  if ( ! $( 'form.woocommerce-checkout' ).length ) {
509
  return currentUserBilling;
8
  const notAllowedString = cpsw_global_settings.not_allowed_string;
9
  const defaultCards = cpsw_global_settings.default_cards;
10
  const homeURL = cpsw_global_settings.get_home_url;
11
+ const stripeLocalized = cpsw_global_settings.stripe_localized;
12
 
13
  if ( '' === pubKey || ( 'live' === mode && ! cpsw_global_settings.is_ssl ) ) {
14
  return;
84
  }
85
  }
86
  if ( error ) {
87
+ $( '.cpsw-stripe-error' ).html( getStripeLocalizedMessage( error.code, error.message ) );
88
  } else {
89
  $( '.cpsw-stripe-error' ).html( '' );
90
  }
123
  }
124
 
125
  if ( error ) {
126
+ $( '.cpsw-number-error' ).html( getStripeLocalizedMessage( error.code, error.message ) );
127
  } else {
128
  $( '.cpsw-number-error' ).html( '' );
129
  }
130
  } );
131
  cardExpiry.on( 'change', ( { error } ) => {
132
  if ( error ) {
133
+ $( '.cpsw-expiry-error' ).html( getStripeLocalizedMessage( error.code, error.message ) );
134
  } else {
135
  $( '.cpsw-expiry-error' ).html( '' );
136
  }
137
  } );
138
  cardCvc.on( 'change', ( { error } ) => {
139
  if ( error ) {
140
+ $( '.cpsw-cvc-error' ).html( getStripeLocalizedMessage( error.code, error.message ) );
141
  } else {
142
  $( '.cpsw-cvc-error' ).html( '' );
143
  }
275
  $( 'form#order_review' ).unblock();
276
  $( 'form#add_payment_method' ).unblock();
277
  logError( result.error );
278
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
279
  window.scrollTo( { top: 0, behavior: 'smooth' } );
280
  return false;
281
  }
304
  $( '.woocommerce-error' ).remove();
305
  $( 'form.woocommerce-checkout' ).unblock();
306
  logError( result.error );
307
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
308
  window.scrollTo( { top: 0, behavior: 'smooth' } );
309
  $( 'form#order_review' ).unblock();
310
  $( 'form#add_payment_method' ).unblock();
330
  $( '.woocommerce-error' ).remove();
331
  wcCheckoutForm.unblock();
332
  logError( result.error );
333
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
334
  window.scrollTo( { top: 0, behavior: 'smooth' } );
335
  } else {
336
  // The payment has been processed!
353
  $( '.woocommerce-error' ).remove();
354
  wcCheckoutForm.unblock();
355
  logError( result.error );
356
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
357
  window.scrollTo( { top: 0, behavior: 'smooth' } );
358
  }
359
  } );
370
  $( '.woocommerce-error' ).remove();
371
  wcCheckoutForm.unblock();
372
  logError( result.error );
373
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
374
  window.scrollTo( { top: 0, behavior: 'smooth' } );
375
  wcCheckoutForm.removeClass( 'processing' );
376
  }
388
  $( '.woocommerce-error' ).remove();
389
  wcCheckoutForm.unblock();
390
  logError( result.error );
391
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
392
  window.scrollTo( { top: 0, behavior: 'smooth' } );
393
  wcCheckoutForm.removeClass( 'processing' );
394
  }
406
  $( '.woocommerce-error' ).remove();
407
  wcCheckoutForm.unblock();
408
  logError( result.error );
409
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
410
  window.scrollTo( { top: 0, behavior: 'smooth' } );
411
  wcCheckoutForm.removeClass( 'processing' );
412
  }
420
  $( '.woocommerce-error' ).remove();
421
  $( 'form.woocommerce-checkout' ).unblock();
422
  logError( result.error );
423
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
424
  window.scrollTo( { top: 0, behavior: 'smooth' } );
425
  } else {
426
  // The payment has been processed!
442
  $( '.woocommerce-error' ).remove();
443
  $( 'form.woocommerce-checkout' ).unblock();
444
  logError( result.error );
445
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
446
  window.scrollTo( { top: 0, behavior: 'smooth' } );
447
  } else {
448
  // The payment has been processed!
479
  $( '.woocommerce-error' ).remove();
480
  wcCheckoutForm.unblock();
481
  logError( result.error );
482
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.error.code, result.error.message ) + '</div>' ).show();
483
  window.scrollTo( { top: 0, behavior: 'smooth' } );
484
  } else {
485
  // The payment has been processed!
490
  $( '.woocommerce-error' ).remove();
491
  wcCheckoutForm.unblock();
492
  logError( result.paymentIntent.last_payment_error );
493
+ $( '.woocommerce-notices-wrapper:first-child' ).html( '<div class="woocommerce-error cpsw-errors">' + getStripeLocalizedMessage( result.paymentIntent.last_payment_error.code, result.paymentIntent.last_payment_error.message ) + '</div>' ).show();
494
  window.scrollTo( { top: 0, behavior: 'smooth' } );
495
  wcCheckoutForm.removeClass( 'processing' );
496
  } else {
505
  }
506
  }
507
 
508
+ function getStripeLocalizedMessage( type, message ) {
509
+ return ( null !== stripeLocalized[ type ] && undefined !== stripeLocalized[ type ] ) ? stripeLocalized[ type ] : message;
510
+ }
511
+
512
  function getBillingDetails() {
513
  if ( ! $( 'form.woocommerce-checkout' ).length ) {
514
  return currentUserBilling;
autoloader.php CHANGED
@@ -97,8 +97,11 @@ class CPSW_Loader {
97
  add_action( 'plugins_loaded', [ $this, 'load_classes' ] );
98
  add_filter( 'plugin_action_links_' . CPSW_BASE, [ $this, 'action_links' ] );
99
  add_action( 'woocommerce_init', [ $this, 'frontend_scripts' ] );
100
- add_action( 'admin_init', [ $this, 'check_for_onboarding' ] );
101
  add_action( 'plugins_loaded', [ $this, 'load_cpsw_textdomain' ] );
 
 
 
 
102
  }
103
 
104
  /**
@@ -217,17 +220,24 @@ class CPSW_Loader {
217
  * @since 1.3.0
218
  */
219
  public function check_for_onboarding() {
 
 
 
 
 
220
  if ( ! get_option( 'cpsw_start_onboarding', false ) ) {
221
  return;
222
  }
 
223
  $onboarding_url = admin_url( 'index.php?page=cpsw-onboarding' );
224
 
225
  if ( ! class_exists( 'woocommerce' ) ) {
226
  $onboarding_url = add_query_arg( 'cpsw_call', 'setup-woocommerce', $onboarding_url );
227
  }
228
 
229
- wp_safe_redirect( esc_url_raw( $onboarding_url ) );
230
  delete_option( 'cpsw_start_onboarding' );
 
 
231
  }
232
 
233
  /**
97
  add_action( 'plugins_loaded', [ $this, 'load_classes' ] );
98
  add_filter( 'plugin_action_links_' . CPSW_BASE, [ $this, 'action_links' ] );
99
  add_action( 'woocommerce_init', [ $this, 'frontend_scripts' ] );
 
100
  add_action( 'plugins_loaded', [ $this, 'load_cpsw_textdomain' ] );
101
+
102
+ if ( is_admin() ) {
103
+ add_action( 'admin_init', [ $this, 'check_for_onboarding' ] );
104
+ }
105
  }
106
 
107
  /**
220
  * @since 1.3.0
221
  */
222
  public function check_for_onboarding() {
223
+
224
+ if ( ! current_user_can( 'manage_options' ) ) {
225
+ return;
226
+ }
227
+
228
  if ( ! get_option( 'cpsw_start_onboarding', false ) ) {
229
  return;
230
  }
231
+
232
  $onboarding_url = admin_url( 'index.php?page=cpsw-onboarding' );
233
 
234
  if ( ! class_exists( 'woocommerce' ) ) {
235
  $onboarding_url = add_query_arg( 'cpsw_call', 'setup-woocommerce', $onboarding_url );
236
  }
237
 
 
238
  delete_option( 'cpsw_start_onboarding' );
239
+
240
+ wp_safe_redirect( esc_url_raw( $onboarding_url ) );
241
  }
242
 
243
  /**
checkout-plugins-stripe-woo.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Checkout Plugins - Stripe for WooCommerce
4
  * Plugin URI: https://www.checkoutplugins.com/
5
  * Description: Stripe for WooCommerce delivers a simple, secure way to accept credit card payments in your WooCommerce store. Reduce payment friction and boost conversions using this free plugin!
6
- * Version: 1.4.0
7
  * Author: Checkout Plugins
8
  * Author URI: https://checkoutplugins.com/
9
  * License: GPLv2 or later
@@ -20,6 +20,6 @@ define( 'CPSW_FILE', __FILE__ );
20
  define( 'CPSW_BASE', plugin_basename( CPSW_FILE ) );
21
  define( 'CPSW_DIR', plugin_dir_path( CPSW_FILE ) );
22
  define( 'CPSW_URL', plugins_url( '/', CPSW_FILE ) );
23
- define( 'CPSW_VERSION', '1.4.0' );
24
 
25
  require_once 'autoloader.php';
3
  * Plugin Name: Checkout Plugins - Stripe for WooCommerce
4
  * Plugin URI: https://www.checkoutplugins.com/
5
  * Description: Stripe for WooCommerce delivers a simple, secure way to accept credit card payments in your WooCommerce store. Reduce payment friction and boost conversions using this free plugin!
6
+ * Version: 1.4.1
7
  * Author: Checkout Plugins
8
  * Author URI: https://checkoutplugins.com/
9
  * License: GPLv2 or later
20
  define( 'CPSW_BASE', plugin_basename( CPSW_FILE ) );
21
  define( 'CPSW_DIR', plugin_dir_path( CPSW_FILE ) );
22
  define( 'CPSW_URL', plugins_url( '/', CPSW_FILE ) );
23
+ define( 'CPSW_VERSION', '1.4.1' );
24
 
25
  require_once 'autoloader.php';
gateway/local-gateway.php CHANGED
@@ -579,10 +579,11 @@ class Local_Gateway extends Abstract_Payment_Gateway {
579
  wp_safe_redirect( $redirect_url );
580
  } elseif ( isset( $response['data']->last_payment_error ) ) {
581
  $message = isset( $response['data']->last_payment_error->message ) ? $response['data']->last_payment_error->message : '';
 
582
  $order->update_status( 'wc-failed' );
583
 
584
  // translators: %s: payment fail message.
585
- wc_add_notice( sprintf( __( 'Payment failed. %s', 'checkout-plugins-stripe-woo' ), $message ), 'error' );
586
  wp_safe_redirect( wc_get_checkout_url() );
587
  }
588
  exit();
579
  wp_safe_redirect( $redirect_url );
580
  } elseif ( isset( $response['data']->last_payment_error ) ) {
581
  $message = isset( $response['data']->last_payment_error->message ) ? $response['data']->last_payment_error->message : '';
582
+ $code = isset( $response['data']->last_payment_error->code ) ? $response['data']->last_payment_error->code : '';
583
  $order->update_status( 'wc-failed' );
584
 
585
  // translators: %s: payment fail message.
586
+ wc_add_notice( sprintf( __( 'Payment failed. %s', 'checkout-plugins-stripe-woo' ), Helper::get_localized_messages( $code, $message ) ), 'error' );
587
  wp_safe_redirect( wc_get_checkout_url() );
588
  }
589
  exit();
gateway/stripe/card-payments.php CHANGED
@@ -356,7 +356,16 @@ $ */
356
  $redirect_to = $this->process_order( end( $intent->charges->data ), $order_id );
357
  $redirect_url = apply_filters( 'cpsw_redirect_order_url', ! empty( $redirect ) ? $redirect : $redirect_to, $order );
358
  wp_safe_redirect( $redirect_url );
 
 
 
 
 
 
 
 
359
  }
 
360
  exit();
361
  }
362
 
356
  $redirect_to = $this->process_order( end( $intent->charges->data ), $order_id );
357
  $redirect_url = apply_filters( 'cpsw_redirect_order_url', ! empty( $redirect ) ? $redirect : $redirect_to, $order );
358
  wp_safe_redirect( $redirect_url );
359
+ } elseif ( isset( $response['data']->last_payment_error ) ) {
360
+ $message = isset( $response['data']->last_payment_error->message ) ? $response['data']->last_payment_error->message : '';
361
+ $code = isset( $response['data']->last_payment_error->code ) ? $response['data']->last_payment_error->code : '';
362
+ $order->update_status( 'wc-failed' );
363
+
364
+ // translators: %s: payment fail message.
365
+ wc_add_notice( sprintf( __( 'Payment failed. %s', 'checkout-plugins-stripe-woo' ), Helper::get_localized_messages( $code, $message ) ), 'error' );
366
+ wp_safe_redirect( wc_get_checkout_url() );
367
  }
368
+
369
  exit();
370
  }
371
 
gateway/stripe/frontend-scripts.php CHANGED
@@ -104,6 +104,7 @@ class Frontend_Scripts {
104
  'ajax_url' => admin_url( 'admin-ajax.php' ),
105
  'js_nonce' => wp_create_nonce( 'cpsw_js_error_nonce' ),
106
  'allowed_cards' => Helper::get_setting( 'allowed_cards', 'cpsw_stripe' ),
 
107
  'default_cards' => [
108
  'mastercard' => __( 'MasterCard', 'checkout-plugins-stripe-woo' ),
109
  'visa' => __( 'Visa', 'checkout-plugins-stripe-woo' ),
@@ -132,7 +133,7 @@ class Frontend_Scripts {
132
  ]
133
  );
134
 
135
- if ( 'yes' === Helper::get_setting( 'express_checkout_enabled', 'cpsw_stripe' ) ) {
136
  wp_register_script( $this->prefix . 'payment-request', $this->assets_url . 'js/payment-request.js', [ 'jquery', $this->prefix . 'stripe-external', $this->prefix . 'stripe-elements' ], $this->version, true );
137
  wp_enqueue_script( $this->prefix . 'payment-request' );
138
 
104
  'ajax_url' => admin_url( 'admin-ajax.php' ),
105
  'js_nonce' => wp_create_nonce( 'cpsw_js_error_nonce' ),
106
  'allowed_cards' => Helper::get_setting( 'allowed_cards', 'cpsw_stripe' ),
107
+ 'stripe_localized' => Helper::get_localized_messages(),
108
  'default_cards' => [
109
  'mastercard' => __( 'MasterCard', 'checkout-plugins-stripe-woo' ),
110
  'visa' => __( 'Visa', 'checkout-plugins-stripe-woo' ),
133
  ]
134
  );
135
 
136
+ if ( 'yes' === Helper::get_setting( 'enabled', 'cpsw_stripe' ) && 'yes' === Helper::get_setting( 'express_checkout_enabled', 'cpsw_stripe' ) ) {
137
  wp_register_script( $this->prefix . 'payment-request', $this->assets_url . 'js/payment-request.js', [ 'jquery', $this->prefix . 'stripe-external', $this->prefix . 'stripe-elements' ], $this->version, true );
138
  wp_enqueue_script( $this->prefix . 'payment-request' );
139
 
gateway/stripe/payment-request-api.php CHANGED
@@ -143,20 +143,30 @@ class Payment_Request_Api extends Card_Payments {
143
  $button_tag = 'a';
144
  }
145
 
146
- $options = Helper::get_gateway_settings( 'cpsw_stripe' );
147
- $separator_below = true;
148
- $position_class = 'above';
149
- $alignment_class = '';
150
- $button_width = '';
151
- $button_label = '' === $options['express_checkout_button_text'] ? __( 'Pay now', 'checkout-plugins-stripe-woo' ) : ucfirst( $options['express_checkout_button_text'] );
 
152
 
153
  if ( 'checkout' === $container_class ) {
154
  $alignment_class = $options['express_checkout_button_alignment'];
155
  if ( ! empty( $options['express_checkout_button_width'] && $options['express_checkout_button_width'] > 0 ) ) {
156
  $button_width = 'min-width:' . (int) $options['express_checkout_button_width'] . 'px';
 
 
 
 
 
157
  } else {
158
  $button_width = 'width: 100%';
159
  }
 
 
 
 
160
  }
161
 
162
  if ( 'cpsw-product' === $container_class ) {
@@ -196,7 +206,7 @@ class Payment_Request_Api extends Card_Payments {
196
  }
197
  ?>
198
  <div id="cpsw-payment-request-custom-button" style="<?php echo esc_attr( $button_width ); ?>">
199
- <<?php echo esc_attr( $button_tag ); ?> lang="auto" class="cpsw-payment-request-custom-button-render cpsw_express_checkout_button cpsw-express-checkout-button <?php echo esc_attr( $button_class ); ?>" style="<?php echo esc_attr( $button_width ); ?>">
200
  <div class="cpsw-express-checkout-button-inner" tabindex="-1">
201
  <div class="cpsw-express-checkout-button-shines">
202
  <div class="cpsw-express-checkout-button-shine cpsw-express-checkout-button-shine--scroll"></div>
@@ -252,6 +262,10 @@ class Payment_Request_Api extends Card_Payments {
252
  if ( ! empty( $options['express_checkout_separator_checkout'] ) ) {
253
  $separator_text = $options['express_checkout_separator_checkout'];
254
  }
 
 
 
 
255
  }
256
 
257
  if ( 'cart' === $container_class && ! empty( $options['express_checkout_separator_cart'] ) ) {
143
  $button_tag = 'a';
144
  }
145
 
146
+ $options = Helper::get_gateway_settings( 'cpsw_stripe' );
147
+ $separator_below = true;
148
+ $position_class = 'above';
149
+ $alignment_class = '';
150
+ $button_width = '';
151
+ $button_inner_width = '';
152
+ $button_label = '' === $options['express_checkout_button_text'] ? __( 'Pay now', 'checkout-plugins-stripe-woo' ) : ucfirst( $options['express_checkout_button_text'] );
153
 
154
  if ( 'checkout' === $container_class ) {
155
  $alignment_class = $options['express_checkout_button_alignment'];
156
  if ( ! empty( $options['express_checkout_button_width'] && $options['express_checkout_button_width'] > 0 ) ) {
157
  $button_width = 'min-width:' . (int) $options['express_checkout_button_width'] . 'px';
158
+
159
+ if ( (int) $options['express_checkout_button_width'] > 500 ) {
160
+ $button_width = 'max-width:' . (int) $options['express_checkout_button_width'] . 'px;';
161
+ $button_inner_width = 'width:100%;';
162
+ }
163
  } else {
164
  $button_width = 'width: 100%';
165
  }
166
+
167
+ if ( 'classic' === $options['express_checkout_checkout_page_layout'] ) {
168
+ $alignment_class = 'center cpsw-classic';
169
+ }
170
  }
171
 
172
  if ( 'cpsw-product' === $container_class ) {
206
  }
207
  ?>
208
  <div id="cpsw-payment-request-custom-button" style="<?php echo esc_attr( $button_width ); ?>">
209
+ <<?php echo esc_attr( $button_tag ); ?> lang="auto" class="cpsw-payment-request-custom-button-render cpsw_express_checkout_button cpsw-express-checkout-button <?php echo esc_attr( $button_class ); ?>" style="<?php echo esc_attr( $button_width ); ?> <?php echo esc_attr( $button_inner_width ); ?>">
210
  <div class="cpsw-express-checkout-button-inner" tabindex="-1">
211
  <div class="cpsw-express-checkout-button-shines">
212
  <div class="cpsw-express-checkout-button-shine cpsw-express-checkout-button-shine--scroll"></div>
262
  if ( ! empty( $options['express_checkout_separator_checkout'] ) ) {
263
  $separator_text = $options['express_checkout_separator_checkout'];
264
  }
265
+
266
+ if ( 'classic' === $options['express_checkout_checkout_page_layout'] ) {
267
+ $alignment_class = 'center';
268
+ }
269
  }
270
 
271
  if ( 'cart' === $container_class && ! empty( $options['express_checkout_separator_cart'] ) ) {
inc/helper.php CHANGED
@@ -8,57 +8,11 @@
8
 
9
  namespace CPSW\Inc;
10
 
11
- use Exception;
12
-
13
  /**
14
  * Stripe Webhook.
15
  */
16
  class Helper {
17
 
18
- /**
19
- * Default gateway values
20
- *
21
- * @var array
22
- */
23
- private static $gateway_defaults = [
24
- 'woocommerce_cpsw_stripe_settings' => [
25
- 'enabled' => 'no',
26
- 'inline_cc' => 'yes',
27
- 'order_status' => '',
28
- 'allowed_cards' => [
29
- 'mastercard',
30
- 'visa',
31
- 'diners',
32
- 'discover',
33
- 'amex',
34
- 'jcb',
35
- 'unionpay',
36
- ],
37
- 'express_checkout_location' => [
38
- 'product',
39
- 'cart',
40
- 'checkout',
41
- ],
42
- 'express_checkout_enabled' => 'no',
43
- 'express_checkout_button_text' => 'Pay now',
44
- 'express_checkout_button_theme' => 'dark',
45
- 'express_checkout_button_height' => '40',
46
- 'express_checkout_title' => 'Express Checkout',
47
- 'express_checkout_tagline' => 'Checkout faster with one of our express checkout options.',
48
- 'express_checkout_product_page_position' => 'above',
49
- 'express_checkout_product_sticky_footer' => 'yes',
50
- 'express_checkout_separator_product' => 'OR',
51
- 'express_checkout_button_width' => '',
52
- 'express_checkout_button_alignment' => 'left',
53
- 'express_checkout_separator_cart' => 'OR',
54
- 'express_checkout_separator_checkout' => 'OR',
55
- 'express_checkout_checkout_page_position' => 'above-checkout',
56
- ],
57
- 'woocommerce_cpsw_alipay_settings' => [
58
- 'enabled' => 'no',
59
- ],
60
- ];
61
-
62
  /**
63
  * Default global values
64
  *
@@ -75,7 +29,7 @@ class Helper {
75
  'cpsw_live_webhook_secret' => '',
76
  'cpsw_test_webhook_secret' => '',
77
  'cpsw_account_id' => '',
78
- 'cpsw_debug_log' => 'no',
79
  ];
80
 
81
  /**
@@ -99,6 +53,56 @@ class Helper {
99
  return apply_filters( 'cpsw_settings', $response );
100
  }
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  /**
103
  * Get all settings of a particular gateway
104
  *
@@ -108,10 +112,11 @@ class Helper {
108
  public static function get_gateway_settings( $gateway = 'cpsw_stripe' ) {
109
  $default_settings = [];
110
  $setting_name = 'woocommerce_' . $gateway . '_settings';
111
- $saved_settings = get_option( $setting_name, [] );
 
112
 
113
- if ( isset( self::$gateway_defaults[ $setting_name ] ) ) {
114
- $default_settings = self::$gateway_defaults[ $setting_name ];
115
  }
116
 
117
  $settings = array_merge( $default_settings, $saved_settings );
@@ -195,4 +200,100 @@ class Helper {
195
 
196
  return $endpoint_secret;
197
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  }
8
 
9
  namespace CPSW\Inc;
10
 
 
 
11
  /**
12
  * Stripe Webhook.
13
  */
14
  class Helper {
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  /**
17
  * Default global values
18
  *
29
  'cpsw_live_webhook_secret' => '',
30
  'cpsw_test_webhook_secret' => '',
31
  'cpsw_account_id' => '',
32
+ 'cpsw_debug_log' => 'yes',
33
  ];
34
 
35
  /**
53
  return apply_filters( 'cpsw_settings', $response );
54
  }
55
 
56
+ /**
57
+ * Stripe get all settings
58
+ *
59
+ * @return $global_settings array It returns all stripe settings in an array.
60
+ */
61
+ public static function get_gateway_defaults() {
62
+ return apply_filters(
63
+ 'cpsw_stripe_gateway_defaults_settings',
64
+ [
65
+ 'woocommerce_cpsw_stripe_settings' => [
66
+ 'enabled' => 'no',
67
+ 'inline_cc' => 'yes',
68
+ 'order_status' => '',
69
+ 'allowed_cards' => [
70
+ 'mastercard',
71
+ 'visa',
72
+ 'diners',
73
+ 'discover',
74
+ 'amex',
75
+ 'jcb',
76
+ 'unionpay',
77
+ ],
78
+ 'express_checkout_location' => [
79
+ 'product',
80
+ 'cart',
81
+ 'checkout',
82
+ ],
83
+ 'express_checkout_enabled' => 'no',
84
+ 'express_checkout_button_text' => __( 'Pay now', 'checkout-plugins-stripe-woo' ),
85
+ 'express_checkout_button_theme' => 'dark',
86
+ 'express_checkout_button_height' => '40',
87
+ 'express_checkout_title' => __( 'Express Checkout', 'checkout-plugins-stripe-woo' ),
88
+ 'express_checkout_tagline' => __( 'Checkout faster with one of our express checkout options.', 'checkout-plugins-stripe-woo' ),
89
+ 'express_checkout_product_page_position' => 'above',
90
+ 'express_checkout_product_sticky_footer' => 'yes',
91
+ 'express_checkout_separator_product' => __( 'OR', 'checkout-plugins-stripe-woo' ),
92
+ 'express_checkout_button_width' => '',
93
+ 'express_checkout_button_alignment' => 'left',
94
+ 'express_checkout_separator_cart' => __( 'OR', 'checkout-plugins-stripe-woo' ),
95
+ 'express_checkout_separator_checkout' => __( 'OR', 'checkout-plugins-stripe-woo' ),
96
+ 'express_checkout_checkout_page_position' => 'above-checkout',
97
+ 'express_checkout_checkout_page_layout' => 'custom',
98
+ ],
99
+ 'woocommerce_cpsw_alipay_settings' => [
100
+ 'enabled' => 'no',
101
+ ],
102
+ ]
103
+ );
104
+ }
105
+
106
  /**
107
  * Get all settings of a particular gateway
108
  *
112
  public static function get_gateway_settings( $gateway = 'cpsw_stripe' ) {
113
  $default_settings = [];
114
  $setting_name = 'woocommerce_' . $gateway . '_settings';
115
+ $saved_settings = is_array( get_option( $setting_name, [] ) ) ? get_option( $setting_name, [] ) : [];
116
+ $gateway_defaults = self::get_gateway_defaults();
117
 
118
+ if ( isset( $gateway_defaults[ $setting_name ] ) ) {
119
+ $default_settings = $gateway_defaults[ $setting_name ];
120
  }
121
 
122
  $settings = array_merge( $default_settings, $saved_settings );
200
 
201
  return $endpoint_secret;
202
  }
203
+
204
+ /**
205
+ * Localize Stripe messages based on code
206
+ *
207
+ * @since 1.4.1
208
+ *
209
+ * @param string $code Stripe error code.
210
+ * @param string $message Stripe error message.
211
+ *
212
+ * @return string
213
+ */
214
+ public static function get_localized_messages( $code = '', $message = '' ) {
215
+ $localized_messages = apply_filters(
216
+ 'cpsw_stripe_localized_messages',
217
+ [
218
+ 'account_country_invalid_address' => __( 'The business address that you provided does not match the country set in your account. Please enter an address that falls within the same country.', 'checkout-plugins-stripe-woo' ),
219
+ 'account_invalid' => __( 'The account ID provided in the Stripe-Account header is invalid. Please check that your requests specify a valid account ID.', 'checkout-plugins-stripe-woo' ),
220
+ 'amount_too_large' => __( 'The specified amount is greater than the maximum amount allowed. Use a lower amount and try again.', 'checkout-plugins-stripe-woo' ),
221
+ 'amount_too_small' => __( 'The specified amount is less than the minimum amount allowed. Use a higher amount and try again.', 'checkout-plugins-stripe-woo' ),
222
+ 'api_key_expired' => __( 'Your API Key has expired. Please update your integration with the latest API key available in your Dashboard.', 'checkout-plugins-stripe-woo' ),
223
+ 'authentication_required' => __( 'The payment requires authentication to proceed. If your customer is off session, notify your customer to return to your application and complete the payment. If you provided the error_on_requires_action parameter, then your customer should try another card that does not require authentication.', 'checkout-plugins-stripe-woo' ),
224
+ 'balance_insufficient' => __( 'The transfer or payout could not be completed because the associated account does not have a sufficient balance available. Create a new transfer or payout using an amount less than or equal to the account’s available balance.', 'checkout-plugins-stripe-woo' ),
225
+ 'bank_account_declined' => __( 'The bank account provided can not be used either because it is not verified yet or it is not supported.', 'checkout-plugins-stripe-woo' ),
226
+ 'bank_account_unusable' => __( 'The bank account provided cannot be used. Please try a different bank account.', 'checkout-plugins-stripe-woo' ),
227
+ 'setup_intent_unexpected_state' => __( 'The SetupIntent\'s state was incompatible with the operation you were trying to perform.', 'checkout-plugins-stripe-woo' ),
228
+ 'payment_intent_action_required' => __( 'The provided payment method requires customer action to complete. If you\'d like to add this payment method, please upgrade your integration to handle actions.', 'checkout-plugins-stripe-woo' ),
229
+ 'payment_intent_authentication_failure' => __( 'The provided payment method failed authentication. Provide a new payment method to attempt this payment again.', 'checkout-plugins-stripe-woo' ),
230
+ 'payment_intent_incompatible_payment_method' => __( 'The Payment expected a payment method with different properties than what was provided.', 'checkout-plugins-stripe-woo' ),
231
+ 'payment_intent_invalid_parameter' => __( 'One or more provided parameters was not allowed for the given operation on the Payment.', 'checkout-plugins-stripe-woo' ),
232
+ 'payment_intent_mandate_invalid' => __( 'The provided mandate is invalid and can not be used for the payment intent.', 'checkout-plugins-stripe-woo' ),
233
+ 'payment_intent_payment_attempt_expired' => __( 'The latest attempt for this Payment has expired. Provide a new payment method to attempt this Payment again.', 'checkout-plugins-stripe-woo' ),
234
+ 'payment_intent_unexpected_state' => __( 'The PaymentIntent\'s state was incompatible with the operation you were trying to perform.', 'checkout-plugins-stripe-woo' ),
235
+ 'payment_method_billing_details_address_missing' => __( 'The PaymentMethod\'s billing details is missing address details. Please update the missing fields and try again.', 'checkout-plugins-stripe-woo' ),
236
+ 'payment_method_currency_mismatch' => __( 'The currency specified does not match the currency for the attached payment method. A payment can only be created for the same currency as the corresponding payment method.', 'checkout-plugins-stripe-woo' ),
237
+ 'processing_error' => __( 'An error occurred while processing the card. Use a different payment method or try again later.', 'checkout-plugins-stripe-woo' ),
238
+ 'token_already_used' => __( 'The token provided has already been used. You must create a new token before you can retry this request.', 'checkout-plugins-stripe-woo' ),
239
+ 'invalid_number' => __( 'The card number is invalid. Check the card details or use a different card.', 'checkout-plugins-stripe-woo' ),
240
+ 'invalid_card_type' => __( 'The card provided as an external account is not supported for payouts. Provide a non-prepaid debit card instead.', 'checkout-plugins-stripe-woo' ),
241
+ 'invalid_charge_amount' => __( 'The specified amount is invalid. The charge amount must be a positive integer in the smallest currency unit, and not exceed the minimum or maximum amount.', 'checkout-plugins-stripe-woo' ),
242
+ 'invalid_cvc' => __( 'The card\'s security code is invalid. Check the card\'s security code or use a different card.', 'checkout-plugins-stripe-woo' ),
243
+ 'invalid_expiry_year' => __( 'The card\'s expiration year is incorrect. Check the expiration date or use a different card.', 'checkout-plugins-stripe-woo' ),
244
+ 'invalid_source_usage' => __( 'The source cannot be used because it is not in the correct state.', 'checkout-plugins-stripe-woo' ),
245
+ 'incorrect_address' => __( 'The address entered for the card is invalid. Please check the address or try a different card.', 'checkout-plugins-stripe-woo' ),
246
+ 'incorrect_cvc' => __( 'The security code entered is invalid. Please try again.', 'checkout-plugins-stripe-woo' ),
247
+ 'incorrect_number' => __( 'The card number entered is invalid. Please try again with a valid card number or use a different card.', 'checkout-plugins-stripe-woo' ),
248
+ 'incorrect_zip' => __( 'The postal code entered for the card is invalid. Please try again.', 'checkout-plugins-stripe-woo' ),
249
+ 'missing' => __( 'Both a customer and source ID have been provided, but the source has not been saved to the customer. To create a charge for a customer with a specified source, you must first save the card details.', 'checkout-plugins-stripe-woo' ),
250
+ 'email_invalid' => __( 'The email address is invalid. Check that the email address is properly formatted and only includes allowed characters.', 'checkout-plugins-stripe-woo' ),
251
+ 'card_declined' => __( 'The card has been declined. When a card is declined, the error returned also includes the decline_code attribute with the reason why the card was declined.', 'checkout-plugins-stripe-woo' ),
252
+ 'parameter_unknown' => __( 'The request contains one or more unexpected parameters. Remove these and try again.', 'checkout-plugins-stripe-woo' ),
253
+ 'incomplete_number' => __( 'Your card number is incomplete.', 'checkout-plugins-stripe-woo' ),
254
+ 'incomplete_expiry' => __( 'Your card\'s expiration date is incomplete.', 'checkout-plugins-stripe-woo' ),
255
+ 'incomplete_cvc' => __( 'Your card\'s security code is incomplete.', 'checkout-plugins-stripe-woo' ),
256
+ 'incomplete_zip' => __( 'Your card\'s zip code is incomplete.', 'checkout-plugins-stripe-woo' ),
257
+ 'stripe_cc_generic' => __( 'There was an error processing your credit card.', 'checkout-plugins-stripe-woo' ),
258
+ 'invalid_expiry_year_past' => __( 'Your card\'s expiration year is in the past.', 'checkout-plugins-stripe-woo' ),
259
+ 'bank_account_verification_failed' => __(
260
+ 'The bank account cannot be verified, either because the microdeposit amounts provided do not match the actual amounts, or because verification has failed too many times.',
261
+ 'checkout-plugins-stripe-woo'
262
+ ),
263
+ 'card_decline_rate_limit_exceeded' => __(
264
+ 'This card has been declined too many times. You can try to charge this card again after 24 hours. We suggest reaching out to your customer to make sure they have entered all of their information correctly and that there are no issues with their card.',
265
+ 'checkout-plugins-stripe-woo'
266
+ ),
267
+ 'charge_already_captured' => __( 'The charge you\'re attempting to capture has already been captured. Update the request with an uncaptured charge ID.', 'checkout-plugins-stripe-woo' ),
268
+ 'charge_already_refunded' => __(
269
+ 'The charge you\'re attempting to refund has already been refunded. Update the request to use the ID of a charge that has not been refunded.',
270
+ 'checkout-plugins-stripe-woo'
271
+ ),
272
+ 'charge_disputed' => __(
273
+ 'The charge you\'re attempting to refund has been charged back. Check the disputes documentation to learn how to respond to the dispute.',
274
+ 'checkout-plugins-stripe-woo'
275
+ ),
276
+ 'charge_exceeds_source_limit' => __(
277
+ 'This charge would cause you to exceed your rolling-window processing limit for this source type. Please retry the charge later, or contact us to request a higher processing limit.',
278
+ 'checkout-plugins-stripe-woo'
279
+ ),
280
+ 'charge_expired_for_capture' => __(
281
+ 'The charge cannot be captured as the authorization has expired. Auth and capture charges must be captured within seven days.',
282
+ 'checkout-plugins-stripe-woo'
283
+ ),
284
+ 'charge_invalid_parameter' => __(
285
+ 'One or more provided parameters was not allowed for the given operation on the Charge. Check our API reference or the returned error message to see which values were not correct for that Charge.',
286
+ 'checkout-plugins-stripe-woo'
287
+ ),
288
+ 'account_number_invalid' => __( 'The bank account number provided is invalid (e.g., missing digits). Bank account information varies from country to country. We recommend creating validations in your entry forms based on the bank account formats we provide.', 'checkout-plugins-stripe-woo' ),
289
+ ]
290
+ );
291
+
292
+ // if need all messages.
293
+ if ( empty( $code ) ) {
294
+ return $localized_messages;
295
+ }
296
+
297
+ return isset( $localized_messages[ $code ] ) ? $localized_messages[ $code ] : $message;
298
+ }
299
  }
inc/traits/subscriptions.php CHANGED
@@ -258,7 +258,7 @@ trait Subscriptions {
258
  $order_id = $renewal_order->get_id();
259
 
260
  $renewal_order->set_transaction_id( $id );
261
- /* translators: %s is the charge Id */
262
  $renewal_order->update_status( 'failed', sprintf( __( 'Stripe charge awaiting authentication by user: %s.', 'checkout-plugins-stripe-woo' ), $id ) );
263
  if ( is_callable( [ $renewal_order, 'save' ] ) ) {
264
  $renewal_order->save();
258
  $order_id = $renewal_order->get_id();
259
 
260
  $renewal_order->set_transaction_id( $id );
261
+ /* translators: %s is the stripe charge Id */
262
  $renewal_order->update_status( 'failed', sprintf( __( 'Stripe charge awaiting authentication by user: %s.', 'checkout-plugins-stripe-woo' ), $id ) );
263
  if ( is_callable( [ $renewal_order, 'save' ] ) ) {
264
  $renewal_order->save();
languages/checkout-plugins-stripe-woo.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the GPLv2 or later.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Checkout Plugins - Stripe for WooCommerce 1.4.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/checkout-plugins-stripe-woo\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-02-22T06:56:54+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.5.0\n"
15
  "X-Domain: checkout-plugins-stripe-woo\n"
@@ -45,7 +45,8 @@ msgid "Credit Cards"
45
  msgstr ""
46
 
47
  #: admin/admin-controller.php:81
48
- #: admin/admin-controller.php:1576
 
49
  #: wizard/build/app.js:1
50
  msgid "Express Checkout"
51
  msgstr ""
@@ -116,8 +117,9 @@ msgstr ""
116
 
117
  #: admin/admin-controller.php:291
118
  #: admin/admin-controller.php:315
119
- #: gateway/stripe/frontend-scripts.php:143
120
- #: gateway/stripe/payment-request-api.php:151
 
121
  msgid "Pay now"
122
  msgstr ""
123
 
@@ -142,13 +144,13 @@ msgstr ""
142
 
143
  #: admin/admin-controller.php:347
144
  #: admin/admin-controller.php:548
145
- #: admin/admin-controller.php:1525
146
  msgid "Hide API keys"
147
  msgstr ""
148
 
149
  #: admin/admin-controller.php:349
150
  #: admin/admin-controller.php:545
151
- #: admin/admin-controller.php:1521
152
  #: wizard/build/app.js:1
153
  msgid "Manage API keys manually"
154
  msgstr ""
@@ -171,8 +173,8 @@ msgid "We were not able to connect your Stripe account. Please try again. "
171
  msgstr ""
172
 
173
  #: admin/admin-controller.php:399
174
- #: admin/admin-controller.php:1078
175
- #: admin/admin-controller.php:1180
176
  msgid "Error: The current user doesn’t have sufficient permissions to perform this action. Please reload the page and try again."
177
  msgstr ""
178
 
@@ -342,265 +344,281 @@ msgstr ""
342
  msgid "Please try again."
343
  msgstr ""
344
 
345
- #: admin/admin-controller.php:1074
346
- #: admin/admin-controller.php:1176
347
  msgid "Error: Sorry, the nonce security check didn’t pass. Please reload the page and try again."
348
  msgstr ""
349
 
350
- #: admin/admin-controller.php:1087
351
- #: admin/admin-controller.php:1152
352
  msgid "Test Mode:"
353
  msgstr ""
354
 
355
- #: admin/admin-controller.php:1089
356
  msgid "Please enter secret key to test."
357
  msgstr ""
358
 
359
- #: admin/admin-controller.php:1094
360
- #: admin/admin-controller.php:1156
361
  msgid "Live Mode:"
362
  msgstr ""
363
 
364
- #: admin/admin-controller.php:1096
365
  msgid "Please enter secret key to live."
366
  msgstr ""
367
 
368
- #: admin/admin-controller.php:1100
369
  msgid "Error: Empty String provided for keys"
370
  msgstr ""
371
 
372
  #. translators: %1$1s mode
373
- #: admin/admin-controller.php:1112
374
  msgid "My first %1s customer (created for API docs)"
375
  msgstr ""
376
 
377
- #: admin/admin-controller.php:1117
378
  msgid "Connected to Stripe successfully"
379
  msgstr ""
380
 
381
- #: admin/admin-controller.php:1186
382
  msgid "Stripe keys are reset successfully."
383
  msgstr ""
384
 
385
- #: admin/admin-controller.php:1198
386
  #: inc/traits/subscriptions.php:346
387
  msgid "Invalid Nonce"
388
  msgstr ""
389
 
390
- #: admin/admin-controller.php:1328
391
  msgid "My First Test Customer (created for API docs)"
392
  msgstr ""
393
 
394
- #: admin/admin-controller.php:1377
395
  msgid "My First Live Customer (created for API docs)"
396
  msgstr ""
397
 
398
- #: admin/admin-controller.php:1569
399
  msgid "Express Checkout is a feature of Card Payments. Enable Card Payments to use Express Checkout"
400
  msgstr ""
401
 
402
  #. translators: HTML Markup
403
- #: admin/admin-controller.php:1579
404
  msgid "Accept payment using Apple Pay, Google Pay, Browser Payment Method.%1$1sExpress Checkout uses Payment Request API which is based on client's browser and saved cards.%1$1sPlease check %2$2sprerequisite%3$3s for Apple Pay, Google Pay and Browser Payment Method."
405
  msgstr ""
406
 
407
- #: admin/admin-controller.php:1583
408
  #: wizard/build/app.js:1
409
  msgid "Enable Express Checkout"
410
  msgstr ""
411
 
412
- #: admin/admin-controller.php:1589
413
  msgid "Show button on"
414
  msgstr ""
415
 
416
- #: admin/admin-controller.php:1593
417
  msgid "Choose page to display Express Checkout buttons."
418
  msgstr ""
419
 
420
- #: admin/admin-controller.php:1595
421
  msgid "Product"
422
  msgstr ""
423
 
424
- #: admin/admin-controller.php:1596
425
  msgid "Cart"
426
  msgstr ""
427
 
428
- #: admin/admin-controller.php:1597
429
  msgid "Checkout"
430
  msgstr ""
431
 
432
- #: admin/admin-controller.php:1602
433
  msgid "Button text"
434
  msgstr ""
435
 
436
- #: admin/admin-controller.php:1605
437
  msgid "Add label text for the Express Checkout button."
438
  msgstr ""
439
 
440
- #: admin/admin-controller.php:1610
441
  msgid "Button theme"
442
  msgstr ""
443
 
444
- #: admin/admin-controller.php:1613
445
  msgid "Select theme for Express Checkout button."
446
  msgstr ""
447
 
448
- #: admin/admin-controller.php:1616
449
  msgid "Dark"
450
  msgstr ""
451
 
452
- #: admin/admin-controller.php:1617
453
  msgid "Light"
454
  msgstr ""
455
 
456
- #: admin/admin-controller.php:1618
457
  msgid "Light Outline"
458
  msgstr ""
459
 
460
- #: admin/admin-controller.php:1623
461
  msgid "Button Preview"
462
  msgstr ""
463
 
464
- #: admin/admin-controller.php:1632
465
  msgid "Product page options"
466
  msgstr ""
467
 
468
- #: admin/admin-controller.php:1634
469
  msgid "Advanced customization options for product page."
470
  msgstr ""
471
 
472
- #: admin/admin-controller.php:1638
473
- #: admin/admin-controller.php:1701
474
  msgid "Button position"
475
  msgstr ""
476
 
477
- #: admin/admin-controller.php:1642
478
  msgid "Select the position of Express Checkout button. This option will work only for Product page."
479
  msgstr ""
480
 
481
- #: admin/admin-controller.php:1645
482
  msgid "Above Add to Cart"
483
  msgstr ""
484
 
485
- #: admin/admin-controller.php:1646
486
  msgid "Below Add to Cart"
487
  msgstr ""
488
 
489
- #: admin/admin-controller.php:1647
490
  msgid "Inline Button"
491
  msgstr ""
492
 
493
- #: admin/admin-controller.php:1652
494
- #: admin/admin-controller.php:1681
495
- #: admin/admin-controller.php:1755
496
  msgid "Separator text"
497
  msgstr ""
498
 
499
- #: admin/admin-controller.php:1655
500
  msgid "Add separator text for the Express Checkout button. This will help to distinguish between Express Checkout and other buttons."
501
  msgstr ""
502
 
503
- #: admin/admin-controller.php:1661
504
  msgid "Responsive behaviour"
505
  msgstr ""
506
 
507
  #. translators: HTML Markup
508
- #: admin/admin-controller.php:1663
509
  msgid "If checked the Express Checkout button will stick%1$1sat bottom of screen on responsive devices."
510
  msgstr ""
511
 
512
- #: admin/admin-controller.php:1674
513
  msgid "Cart page options"
514
  msgstr ""
515
 
516
- #: admin/admin-controller.php:1676
517
  msgid "Advanced customization options for Cart page."
518
  msgstr ""
519
 
520
- #: admin/admin-controller.php:1685
521
  msgid "Add separator text for Cart page. If empty will show default separator text."
522
  msgstr ""
523
 
524
- #: admin/admin-controller.php:1694
525
  msgid "Checkout page options"
526
  msgstr ""
527
 
528
- #: admin/admin-controller.php:1696
529
  msgid "Advanced customization options for Checkout page."
530
  msgstr ""
531
 
532
- #: admin/admin-controller.php:1705
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
533
  msgid "Select the position of Express Checkout button. This option will work only for Checkout page."
534
  msgstr ""
535
 
536
- #: admin/admin-controller.php:1708
537
  msgid "Above checkout form"
538
  msgstr ""
539
 
540
- #: admin/admin-controller.php:1709
541
  msgid "Above billing details"
542
  msgstr ""
543
 
544
- #: admin/admin-controller.php:1714
545
  #: gateway/local-gateway.php:125
546
  #: gateway/stripe/card-payments.php:111
547
  msgid "Title"
548
  msgstr ""
549
 
550
- #: admin/admin-controller.php:1718
551
  msgid "Add a title above Express Checkout button on Checkout page."
552
  msgstr ""
553
 
554
- #: admin/admin-controller.php:1723
555
  msgid "Tagline"
556
  msgstr ""
557
 
558
- #: admin/admin-controller.php:1727
559
  msgid "Add a tagline below the title on Checkout page."
560
  msgstr ""
561
 
562
- #: admin/admin-controller.php:1732
563
  msgid "Button width"
564
  msgstr ""
565
 
566
- #: admin/admin-controller.php:1736
567
  msgid "Select width for button (in px). Default width 100%"
568
  msgstr ""
569
 
570
- #: admin/admin-controller.php:1741
571
  msgid "Alignment"
572
  msgstr ""
573
 
574
- #: admin/admin-controller.php:1745
575
  msgid "This setting will align title, tagline and button based on selection on Checkout page."
576
  msgstr ""
577
 
578
- #: admin/admin-controller.php:1748
579
  msgid "Left"
580
  msgstr ""
581
 
582
- #: admin/admin-controller.php:1749
583
  msgid "Center"
584
  msgstr ""
585
 
586
- #: admin/admin-controller.php:1750
587
  msgid "Right"
588
  msgstr ""
589
 
590
- #: admin/admin-controller.php:1759
591
  msgid "Add separator text for Checkout page. If empty will show default separator text."
592
  msgstr ""
593
 
594
- #: autoloader.php:140
595
  msgid "Settings"
596
  msgstr ""
597
 
598
- #: autoloader.php:141
599
  msgid "Documentation"
600
  msgstr ""
601
 
602
  #. translators: 1$-2$: opening and closing <strong> tags, 3$-4$: link tags, takes to woocommerce plugin on wp.org, 5$-6$: opening and closing link tags, leads to plugins.php in admin.
603
- #: autoloader.php:194
604
  msgid "%1$sCheckout Plugins - Stripe for WooCommerce is inactive.%2$s The %3$sWooCommerce plugin%4$s must be active for Checkout Plugins - Stripe for WooCommerce to work. Please %5$sinstall & activate WooCommerce &raquo;%6$s"
605
  msgstr ""
606
 
@@ -894,7 +912,8 @@ msgid "Store currency doesn't match stripe currency. "
894
  msgstr ""
895
 
896
  #. translators: %s: payment fail message.
897
- #: gateway/local-gateway.php:585
 
898
  #: gateway/stripe/sepa.php:510
899
  msgid "Payment failed. %s"
900
  msgstr ""
@@ -1094,68 +1113,68 @@ msgid "Payment method tokenized for Order id - %1$1s with token id - %2$2s"
1094
  msgstr ""
1095
 
1096
  #. translators: %1$1s, %2$2s: HTML Markup
1097
- #: gateway/stripe/card-payments.php:473
1098
  msgid "Live Stripe.js integrations must use HTTPS. %1$1s For more information:%2$2s"
1099
  msgstr ""
1100
 
1101
- #: gateway/stripe/card-payments.php:503
1102
  msgid "Enter Card Details"
1103
  msgstr ""
1104
 
1105
- #: gateway/stripe/card-payments.php:506
1106
  msgid "Expiry Date"
1107
  msgstr ""
1108
 
1109
- #: gateway/stripe/card-payments.php:510
1110
  msgid "CVC"
1111
  msgstr ""
1112
 
1113
- #: gateway/stripe/card-payments.php:515
1114
  msgid "Save Card for Future Payments"
1115
  msgstr ""
1116
 
1117
  #. translators: %1$1s - %6$6s: HTML Markup
1118
- #: gateway/stripe/card-payments.php:521
1119
  msgid "%1$1s Test Mode Enabled:%2$2s Use demo card 4242424242424242 with any future date and CVV. Check more %3$3sdemo cards%4$4s"
1120
  msgstr ""
1121
 
1122
- #: gateway/stripe/frontend-scripts.php:108
1123
  msgid "MasterCard"
1124
  msgstr ""
1125
 
1126
- #: gateway/stripe/frontend-scripts.php:109
1127
  msgid "Visa"
1128
  msgstr ""
1129
 
1130
- #: gateway/stripe/frontend-scripts.php:110
1131
  msgid "American Express"
1132
  msgstr ""
1133
 
1134
- #: gateway/stripe/frontend-scripts.php:111
1135
  msgid "Discover"
1136
  msgstr ""
1137
 
1138
- #: gateway/stripe/frontend-scripts.php:112
1139
  msgid "JCB"
1140
  msgstr ""
1141
 
1142
- #: gateway/stripe/frontend-scripts.php:113
1143
  msgid "Diners Club"
1144
  msgstr ""
1145
 
1146
- #: gateway/stripe/frontend-scripts.php:114
1147
  msgid "UnionPay"
1148
  msgstr ""
1149
 
1150
- #: gateway/stripe/frontend-scripts.php:116
1151
  msgid "is not allowed"
1152
  msgstr ""
1153
 
1154
- #: gateway/stripe/frontend-scripts.php:130
1155
  msgid "Please enter a IBAN number to proceed."
1156
  msgstr ""
1157
 
1158
- #: gateway/stripe/frontend-scripts.php:131
1159
  msgid "Please select a bank to proceed."
1160
  msgstr ""
1161
 
@@ -1183,51 +1202,51 @@ msgstr ""
1183
  msgid "Accept payment using Przelewy24. %1$s %2$s"
1184
  msgstr ""
1185
 
1186
- #: gateway/stripe/payment-request-api.php:283
1187
  msgid "Empty cart"
1188
  msgstr ""
1189
 
1190
- #: gateway/stripe/payment-request-api.php:378
1191
  msgid "Sign up Fee"
1192
  msgstr ""
1193
 
1194
- #: gateway/stripe/payment-request-api.php:390
1195
- #: gateway/stripe/payment-request-api.php:491
1196
- #: gateway/stripe/payment-request-api.php:664
1197
  msgid "Tax"
1198
  msgstr ""
1199
 
1200
- #: gateway/stripe/payment-request-api.php:398
1201
- #: gateway/stripe/payment-request-api.php:498
1202
- #: gateway/stripe/payment-request-api.php:672
1203
  msgid "Shipping"
1204
  msgstr ""
1205
 
1206
- #: gateway/stripe/payment-request-api.php:405
1207
- #: gateway/stripe/payment-request-api.php:679
1208
  msgid "Pending"
1209
  msgstr ""
1210
 
1211
- #: gateway/stripe/payment-request-api.php:505
1212
  msgid "Discount"
1213
  msgstr ""
1214
 
1215
  #. translators: %d is the product Id
1216
- #: gateway/stripe/payment-request-api.php:626
1217
  msgid "Product with the ID (%d) cannot be found."
1218
  msgstr ""
1219
 
1220
  #. translators: 1: product name 2: quantity in stock
1221
- #: gateway/stripe/payment-request-api.php:647
1222
  msgid "You cannot add that amount of \"%1$s\"; to the cart because there is not enough stock (%2$s remaining)."
1223
  msgstr ""
1224
 
1225
- #: gateway/stripe/payment-request-api.php:776
1226
- #: gateway/stripe/payment-request-api.php:793
1227
  msgid "Unable to find shipping method for address."
1228
  msgstr ""
1229
 
1230
- #: gateway/stripe/payment-request-api.php:781
1231
  msgid "Unable to provide shipping options for Payment Requests."
1232
  msgstr ""
1233
 
@@ -1394,6 +1413,216 @@ msgstr ""
1394
  msgid "%1$1s%2$2sTest Mode Enabled%3$3s : A QR code will pop up, scan and pay with WeChat."
1395
  msgstr ""
1396
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1397
  #. translators: last 4 digits of IBAN account
1398
  #: inc/token.php:54
1399
  msgid "SEPA IBAN ending in %s"
2
  # This file is distributed under the GPLv2 or later.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Checkout Plugins - Stripe for WooCommerce 1.4.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/checkout-plugins-stripe-woo\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-03-15T09:11:26+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.5.0\n"
15
  "X-Domain: checkout-plugins-stripe-woo\n"
45
  msgstr ""
46
 
47
  #: admin/admin-controller.php:81
48
+ #: admin/admin-controller.php:1578
49
+ #: inc/helper.php:87
50
  #: wizard/build/app.js:1
51
  msgid "Express Checkout"
52
  msgstr ""
117
 
118
  #: admin/admin-controller.php:291
119
  #: admin/admin-controller.php:315
120
+ #: gateway/stripe/frontend-scripts.php:144
121
+ #: gateway/stripe/payment-request-api.php:152
122
+ #: inc/helper.php:84
123
  msgid "Pay now"
124
  msgstr ""
125
 
144
 
145
  #: admin/admin-controller.php:347
146
  #: admin/admin-controller.php:548
147
+ #: admin/admin-controller.php:1527
148
  msgid "Hide API keys"
149
  msgstr ""
150
 
151
  #: admin/admin-controller.php:349
152
  #: admin/admin-controller.php:545
153
+ #: admin/admin-controller.php:1523
154
  #: wizard/build/app.js:1
155
  msgid "Manage API keys manually"
156
  msgstr ""
173
  msgstr ""
174
 
175
  #: admin/admin-controller.php:399
176
+ #: admin/admin-controller.php:1079
177
+ #: admin/admin-controller.php:1181
178
  msgid "Error: The current user doesn’t have sufficient permissions to perform this action. Please reload the page and try again."
179
  msgstr ""
180
 
344
  msgid "Please try again."
345
  msgstr ""
346
 
347
+ #: admin/admin-controller.php:1075
348
+ #: admin/admin-controller.php:1177
349
  msgid "Error: Sorry, the nonce security check didn’t pass. Please reload the page and try again."
350
  msgstr ""
351
 
352
+ #: admin/admin-controller.php:1088
353
+ #: admin/admin-controller.php:1153
354
  msgid "Test Mode:"
355
  msgstr ""
356
 
357
+ #: admin/admin-controller.php:1090
358
  msgid "Please enter secret key to test."
359
  msgstr ""
360
 
361
+ #: admin/admin-controller.php:1095
362
+ #: admin/admin-controller.php:1157
363
  msgid "Live Mode:"
364
  msgstr ""
365
 
366
+ #: admin/admin-controller.php:1097
367
  msgid "Please enter secret key to live."
368
  msgstr ""
369
 
370
+ #: admin/admin-controller.php:1101
371
  msgid "Error: Empty String provided for keys"
372
  msgstr ""
373
 
374
  #. translators: %1$1s mode
375
+ #: admin/admin-controller.php:1113
376
  msgid "My first %1s customer (created for API docs)"
377
  msgstr ""
378
 
379
+ #: admin/admin-controller.php:1118
380
  msgid "Connected to Stripe successfully"
381
  msgstr ""
382
 
383
+ #: admin/admin-controller.php:1187
384
  msgid "Stripe keys are reset successfully."
385
  msgstr ""
386
 
387
+ #: admin/admin-controller.php:1199
388
  #: inc/traits/subscriptions.php:346
389
  msgid "Invalid Nonce"
390
  msgstr ""
391
 
392
+ #: admin/admin-controller.php:1330
393
  msgid "My First Test Customer (created for API docs)"
394
  msgstr ""
395
 
396
+ #: admin/admin-controller.php:1379
397
  msgid "My First Live Customer (created for API docs)"
398
  msgstr ""
399
 
400
+ #: admin/admin-controller.php:1571
401
  msgid "Express Checkout is a feature of Card Payments. Enable Card Payments to use Express Checkout"
402
  msgstr ""
403
 
404
  #. translators: HTML Markup
405
+ #: admin/admin-controller.php:1581
406
  msgid "Accept payment using Apple Pay, Google Pay, Browser Payment Method.%1$1sExpress Checkout uses Payment Request API which is based on client's browser and saved cards.%1$1sPlease check %2$2sprerequisite%3$3s for Apple Pay, Google Pay and Browser Payment Method."
407
  msgstr ""
408
 
409
+ #: admin/admin-controller.php:1585
410
  #: wizard/build/app.js:1
411
  msgid "Enable Express Checkout"
412
  msgstr ""
413
 
414
+ #: admin/admin-controller.php:1591
415
  msgid "Show button on"
416
  msgstr ""
417
 
418
+ #: admin/admin-controller.php:1595
419
  msgid "Choose page to display Express Checkout buttons."
420
  msgstr ""
421
 
422
+ #: admin/admin-controller.php:1597
423
  msgid "Product"
424
  msgstr ""
425
 
426
+ #: admin/admin-controller.php:1598
427
  msgid "Cart"
428
  msgstr ""
429
 
430
+ #: admin/admin-controller.php:1599
431
  msgid "Checkout"
432
  msgstr ""
433
 
434
+ #: admin/admin-controller.php:1604
435
  msgid "Button text"
436
  msgstr ""
437
 
438
+ #: admin/admin-controller.php:1607
439
  msgid "Add label text for the Express Checkout button."
440
  msgstr ""
441
 
442
+ #: admin/admin-controller.php:1612
443
  msgid "Button theme"
444
  msgstr ""
445
 
446
+ #: admin/admin-controller.php:1615
447
  msgid "Select theme for Express Checkout button."
448
  msgstr ""
449
 
450
+ #: admin/admin-controller.php:1618
451
  msgid "Dark"
452
  msgstr ""
453
 
454
+ #: admin/admin-controller.php:1619
455
  msgid "Light"
456
  msgstr ""
457
 
458
+ #: admin/admin-controller.php:1620
459
  msgid "Light Outline"
460
  msgstr ""
461
 
462
+ #: admin/admin-controller.php:1625
463
  msgid "Button Preview"
464
  msgstr ""
465
 
466
+ #: admin/admin-controller.php:1634
467
  msgid "Product page options"
468
  msgstr ""
469
 
470
+ #: admin/admin-controller.php:1636
471
  msgid "Advanced customization options for product page."
472
  msgstr ""
473
 
474
+ #: admin/admin-controller.php:1640
475
+ #: admin/admin-controller.php:1716
476
  msgid "Button position"
477
  msgstr ""
478
 
479
+ #: admin/admin-controller.php:1644
480
  msgid "Select the position of Express Checkout button. This option will work only for Product page."
481
  msgstr ""
482
 
483
+ #: admin/admin-controller.php:1647
484
  msgid "Above Add to Cart"
485
  msgstr ""
486
 
487
+ #: admin/admin-controller.php:1648
488
  msgid "Below Add to Cart"
489
  msgstr ""
490
 
491
+ #: admin/admin-controller.php:1649
492
  msgid "Inline Button"
493
  msgstr ""
494
 
495
+ #: admin/admin-controller.php:1654
496
+ #: admin/admin-controller.php:1683
497
+ #: admin/admin-controller.php:1770
498
  msgid "Separator text"
499
  msgstr ""
500
 
501
+ #: admin/admin-controller.php:1657
502
  msgid "Add separator text for the Express Checkout button. This will help to distinguish between Express Checkout and other buttons."
503
  msgstr ""
504
 
505
+ #: admin/admin-controller.php:1663
506
  msgid "Responsive behaviour"
507
  msgstr ""
508
 
509
  #. translators: HTML Markup
510
+ #: admin/admin-controller.php:1665
511
  msgid "If checked the Express Checkout button will stick%1$1sat bottom of screen on responsive devices."
512
  msgstr ""
513
 
514
+ #: admin/admin-controller.php:1676
515
  msgid "Cart page options"
516
  msgstr ""
517
 
518
+ #: admin/admin-controller.php:1678
519
  msgid "Advanced customization options for Cart page."
520
  msgstr ""
521
 
522
+ #: admin/admin-controller.php:1687
523
  msgid "Add separator text for Cart page. If empty will show default separator text."
524
  msgstr ""
525
 
526
+ #: admin/admin-controller.php:1696
527
  msgid "Checkout page options"
528
  msgstr ""
529
 
530
+ #: admin/admin-controller.php:1698
531
  msgid "Advanced customization options for Checkout page."
532
  msgstr ""
533
 
534
+ #: admin/admin-controller.php:1703
535
+ msgid "Layout"
536
+ msgstr ""
537
+
538
+ #: admin/admin-controller.php:1707
539
+ msgid "Select the layout of Express Checkout button. This option will work only for Checkout page."
540
+ msgstr ""
541
+
542
+ #: admin/admin-controller.php:1710
543
+ msgid "Custom"
544
+ msgstr ""
545
+
546
+ #: admin/admin-controller.php:1711
547
+ msgid "Classic"
548
+ msgstr ""
549
+
550
+ #: admin/admin-controller.php:1720
551
  msgid "Select the position of Express Checkout button. This option will work only for Checkout page."
552
  msgstr ""
553
 
554
+ #: admin/admin-controller.php:1723
555
  msgid "Above checkout form"
556
  msgstr ""
557
 
558
+ #: admin/admin-controller.php:1724
559
  msgid "Above billing details"
560
  msgstr ""
561
 
562
+ #: admin/admin-controller.php:1729
563
  #: gateway/local-gateway.php:125
564
  #: gateway/stripe/card-payments.php:111
565
  msgid "Title"
566
  msgstr ""
567
 
568
+ #: admin/admin-controller.php:1733
569
  msgid "Add a title above Express Checkout button on Checkout page."
570
  msgstr ""
571
 
572
+ #: admin/admin-controller.php:1738
573
  msgid "Tagline"
574
  msgstr ""
575
 
576
+ #: admin/admin-controller.php:1742
577
  msgid "Add a tagline below the title on Checkout page."
578
  msgstr ""
579
 
580
+ #: admin/admin-controller.php:1747
581
  msgid "Button width"
582
  msgstr ""
583
 
584
+ #: admin/admin-controller.php:1751
585
  msgid "Select width for button (in px). Default width 100%"
586
  msgstr ""
587
 
588
+ #: admin/admin-controller.php:1756
589
  msgid "Alignment"
590
  msgstr ""
591
 
592
+ #: admin/admin-controller.php:1760
593
  msgid "This setting will align title, tagline and button based on selection on Checkout page."
594
  msgstr ""
595
 
596
+ #: admin/admin-controller.php:1763
597
  msgid "Left"
598
  msgstr ""
599
 
600
+ #: admin/admin-controller.php:1764
601
  msgid "Center"
602
  msgstr ""
603
 
604
+ #: admin/admin-controller.php:1765
605
  msgid "Right"
606
  msgstr ""
607
 
608
+ #: admin/admin-controller.php:1774
609
  msgid "Add separator text for Checkout page. If empty will show default separator text."
610
  msgstr ""
611
 
612
+ #: autoloader.php:143
613
  msgid "Settings"
614
  msgstr ""
615
 
616
+ #: autoloader.php:144
617
  msgid "Documentation"
618
  msgstr ""
619
 
620
  #. translators: 1$-2$: opening and closing <strong> tags, 3$-4$: link tags, takes to woocommerce plugin on wp.org, 5$-6$: opening and closing link tags, leads to plugins.php in admin.
621
+ #: autoloader.php:197
622
  msgid "%1$sCheckout Plugins - Stripe for WooCommerce is inactive.%2$s The %3$sWooCommerce plugin%4$s must be active for Checkout Plugins - Stripe for WooCommerce to work. Please %5$sinstall & activate WooCommerce &raquo;%6$s"
623
  msgstr ""
624
 
912
  msgstr ""
913
 
914
  #. translators: %s: payment fail message.
915
+ #: gateway/local-gateway.php:586
916
+ #: gateway/stripe/card-payments.php:365
917
  #: gateway/stripe/sepa.php:510
918
  msgid "Payment failed. %s"
919
  msgstr ""
1113
  msgstr ""
1114
 
1115
  #. translators: %1$1s, %2$2s: HTML Markup
1116
+ #: gateway/stripe/card-payments.php:482
1117
  msgid "Live Stripe.js integrations must use HTTPS. %1$1s For more information:%2$2s"
1118
  msgstr ""
1119
 
1120
+ #: gateway/stripe/card-payments.php:512
1121
  msgid "Enter Card Details"
1122
  msgstr ""
1123
 
1124
+ #: gateway/stripe/card-payments.php:515
1125
  msgid "Expiry Date"
1126
  msgstr ""
1127
 
1128
+ #: gateway/stripe/card-payments.php:519
1129
  msgid "CVC"
1130
  msgstr ""
1131
 
1132
+ #: gateway/stripe/card-payments.php:524
1133
  msgid "Save Card for Future Payments"
1134
  msgstr ""
1135
 
1136
  #. translators: %1$1s - %6$6s: HTML Markup
1137
+ #: gateway/stripe/card-payments.php:530
1138
  msgid "%1$1s Test Mode Enabled:%2$2s Use demo card 4242424242424242 with any future date and CVV. Check more %3$3sdemo cards%4$4s"
1139
  msgstr ""
1140
 
1141
+ #: gateway/stripe/frontend-scripts.php:109
1142
  msgid "MasterCard"
1143
  msgstr ""
1144
 
1145
+ #: gateway/stripe/frontend-scripts.php:110
1146
  msgid "Visa"
1147
  msgstr ""
1148
 
1149
+ #: gateway/stripe/frontend-scripts.php:111
1150
  msgid "American Express"
1151
  msgstr ""
1152
 
1153
+ #: gateway/stripe/frontend-scripts.php:112
1154
  msgid "Discover"
1155
  msgstr ""
1156
 
1157
+ #: gateway/stripe/frontend-scripts.php:113
1158
  msgid "JCB"
1159
  msgstr ""
1160
 
1161
+ #: gateway/stripe/frontend-scripts.php:114
1162
  msgid "Diners Club"
1163
  msgstr ""
1164
 
1165
+ #: gateway/stripe/frontend-scripts.php:115
1166
  msgid "UnionPay"
1167
  msgstr ""
1168
 
1169
+ #: gateway/stripe/frontend-scripts.php:117
1170
  msgid "is not allowed"
1171
  msgstr ""
1172
 
1173
+ #: gateway/stripe/frontend-scripts.php:131
1174
  msgid "Please enter a IBAN number to proceed."
1175
  msgstr ""
1176
 
1177
+ #: gateway/stripe/frontend-scripts.php:132
1178
  msgid "Please select a bank to proceed."
1179
  msgstr ""
1180
 
1202
  msgid "Accept payment using Przelewy24. %1$s %2$s"
1203
  msgstr ""
1204
 
1205
+ #: gateway/stripe/payment-request-api.php:297
1206
  msgid "Empty cart"
1207
  msgstr ""
1208
 
1209
+ #: gateway/stripe/payment-request-api.php:392
1210
  msgid "Sign up Fee"
1211
  msgstr ""
1212
 
1213
+ #: gateway/stripe/payment-request-api.php:404
1214
+ #: gateway/stripe/payment-request-api.php:505
1215
+ #: gateway/stripe/payment-request-api.php:678
1216
  msgid "Tax"
1217
  msgstr ""
1218
 
1219
+ #: gateway/stripe/payment-request-api.php:412
1220
+ #: gateway/stripe/payment-request-api.php:512
1221
+ #: gateway/stripe/payment-request-api.php:686
1222
  msgid "Shipping"
1223
  msgstr ""
1224
 
1225
+ #: gateway/stripe/payment-request-api.php:419
1226
+ #: gateway/stripe/payment-request-api.php:693
1227
  msgid "Pending"
1228
  msgstr ""
1229
 
1230
+ #: gateway/stripe/payment-request-api.php:519
1231
  msgid "Discount"
1232
  msgstr ""
1233
 
1234
  #. translators: %d is the product Id
1235
+ #: gateway/stripe/payment-request-api.php:640
1236
  msgid "Product with the ID (%d) cannot be found."
1237
  msgstr ""
1238
 
1239
  #. translators: 1: product name 2: quantity in stock
1240
+ #: gateway/stripe/payment-request-api.php:661
1241
  msgid "You cannot add that amount of \"%1$s\"; to the cart because there is not enough stock (%2$s remaining)."
1242
  msgstr ""
1243
 
1244
+ #: gateway/stripe/payment-request-api.php:790
1245
+ #: gateway/stripe/payment-request-api.php:807
1246
  msgid "Unable to find shipping method for address."
1247
  msgstr ""
1248
 
1249
+ #: gateway/stripe/payment-request-api.php:795
1250
  msgid "Unable to provide shipping options for Payment Requests."
1251
  msgstr ""
1252
 
1413
  msgid "%1$1s%2$2sTest Mode Enabled%3$3s : A QR code will pop up, scan and pay with WeChat."
1414
  msgstr ""
1415
 
1416
+ #: inc/helper.php:88
1417
+ msgid "Checkout faster with one of our express checkout options."
1418
+ msgstr ""
1419
+
1420
+ #: inc/helper.php:91
1421
+ #: inc/helper.php:94
1422
+ #: inc/helper.php:95
1423
+ msgid "OR"
1424
+ msgstr ""
1425
+
1426
+ #: inc/helper.php:218
1427
+ msgid "The business address that you provided does not match the country set in your account. Please enter an address that falls within the same country."
1428
+ msgstr ""
1429
+
1430
+ #: inc/helper.php:219
1431
+ msgid "The account ID provided in the Stripe-Account header is invalid. Please check that your requests specify a valid account ID."
1432
+ msgstr ""
1433
+
1434
+ #: inc/helper.php:220
1435
+ msgid "The specified amount is greater than the maximum amount allowed. Use a lower amount and try again."
1436
+ msgstr ""
1437
+
1438
+ #: inc/helper.php:221
1439
+ msgid "The specified amount is less than the minimum amount allowed. Use a higher amount and try again."
1440
+ msgstr ""
1441
+
1442
+ #: inc/helper.php:222
1443
+ msgid "Your API Key has expired. Please update your integration with the latest API key available in your Dashboard."
1444
+ msgstr ""
1445
+
1446
+ #: inc/helper.php:223
1447
+ msgid "The payment requires authentication to proceed. If your customer is off session, notify your customer to return to your application and complete the payment. If you provided the error_on_requires_action parameter, then your customer should try another card that does not require authentication."
1448
+ msgstr ""
1449
+
1450
+ #: inc/helper.php:224
1451
+ msgid "The transfer or payout could not be completed because the associated account does not have a sufficient balance available. Create a new transfer or payout using an amount less than or equal to the account’s available balance."
1452
+ msgstr ""
1453
+
1454
+ #: inc/helper.php:225
1455
+ msgid "The bank account provided can not be used either because it is not verified yet or it is not supported."
1456
+ msgstr ""
1457
+
1458
+ #: inc/helper.php:226
1459
+ msgid "The bank account provided cannot be used. Please try a different bank account."
1460
+ msgstr ""
1461
+
1462
+ #: inc/helper.php:227
1463
+ msgid "The SetupIntent's state was incompatible with the operation you were trying to perform."
1464
+ msgstr ""
1465
+
1466
+ #: inc/helper.php:228
1467
+ msgid "The provided payment method requires customer action to complete. If you'd like to add this payment method, please upgrade your integration to handle actions."
1468
+ msgstr ""
1469
+
1470
+ #: inc/helper.php:229
1471
+ msgid "The provided payment method failed authentication. Provide a new payment method to attempt this payment again."
1472
+ msgstr ""
1473
+
1474
+ #: inc/helper.php:230
1475
+ msgid "The Payment expected a payment method with different properties than what was provided."
1476
+ msgstr ""
1477
+
1478
+ #: inc/helper.php:231
1479
+ msgid "One or more provided parameters was not allowed for the given operation on the Payment."
1480
+ msgstr ""
1481
+
1482
+ #: inc/helper.php:232
1483
+ msgid "The provided mandate is invalid and can not be used for the payment intent."
1484
+ msgstr ""
1485
+
1486
+ #: inc/helper.php:233
1487
+ msgid "The latest attempt for this Payment has expired. Provide a new payment method to attempt this Payment again."
1488
+ msgstr ""
1489
+
1490
+ #: inc/helper.php:234
1491
+ msgid "The PaymentIntent's state was incompatible with the operation you were trying to perform."
1492
+ msgstr ""
1493
+
1494
+ #: inc/helper.php:235
1495
+ msgid "The PaymentMethod's billing details is missing address details. Please update the missing fields and try again."
1496
+ msgstr ""
1497
+
1498
+ #: inc/helper.php:236
1499
+ msgid "The currency specified does not match the currency for the attached payment method. A payment can only be created for the same currency as the corresponding payment method."
1500
+ msgstr ""
1501
+
1502
+ #: inc/helper.php:237
1503
+ msgid "An error occurred while processing the card. Use a different payment method or try again later."
1504
+ msgstr ""
1505
+
1506
+ #: inc/helper.php:238
1507
+ msgid "The token provided has already been used. You must create a new token before you can retry this request."
1508
+ msgstr ""
1509
+
1510
+ #: inc/helper.php:239
1511
+ msgid "The card number is invalid. Check the card details or use a different card."
1512
+ msgstr ""
1513
+
1514
+ #: inc/helper.php:240
1515
+ msgid "The card provided as an external account is not supported for payouts. Provide a non-prepaid debit card instead."
1516
+ msgstr ""
1517
+
1518
+ #: inc/helper.php:241
1519
+ msgid "The specified amount is invalid. The charge amount must be a positive integer in the smallest currency unit, and not exceed the minimum or maximum amount."
1520
+ msgstr ""
1521
+
1522
+ #: inc/helper.php:242
1523
+ msgid "The card's security code is invalid. Check the card's security code or use a different card."
1524
+ msgstr ""
1525
+
1526
+ #: inc/helper.php:243
1527
+ msgid "The card's expiration year is incorrect. Check the expiration date or use a different card."
1528
+ msgstr ""
1529
+
1530
+ #: inc/helper.php:244
1531
+ msgid "The source cannot be used because it is not in the correct state."
1532
+ msgstr ""
1533
+
1534
+ #: inc/helper.php:245
1535
+ msgid "The address entered for the card is invalid. Please check the address or try a different card."
1536
+ msgstr ""
1537
+
1538
+ #: inc/helper.php:246
1539
+ msgid "The security code entered is invalid. Please try again."
1540
+ msgstr ""
1541
+
1542
+ #: inc/helper.php:247
1543
+ msgid "The card number entered is invalid. Please try again with a valid card number or use a different card."
1544
+ msgstr ""
1545
+
1546
+ #: inc/helper.php:248
1547
+ msgid "The postal code entered for the card is invalid. Please try again."
1548
+ msgstr ""
1549
+
1550
+ #: inc/helper.php:249
1551
+ msgid "Both a customer and source ID have been provided, but the source has not been saved to the customer. To create a charge for a customer with a specified source, you must first save the card details."
1552
+ msgstr ""
1553
+
1554
+ #: inc/helper.php:250
1555
+ msgid "The email address is invalid. Check that the email address is properly formatted and only includes allowed characters."
1556
+ msgstr ""
1557
+
1558
+ #: inc/helper.php:251
1559
+ msgid "The card has been declined. When a card is declined, the error returned also includes the decline_code attribute with the reason why the card was declined."
1560
+ msgstr ""
1561
+
1562
+ #: inc/helper.php:252
1563
+ msgid "The request contains one or more unexpected parameters. Remove these and try again."
1564
+ msgstr ""
1565
+
1566
+ #: inc/helper.php:253
1567
+ msgid "Your card number is incomplete."
1568
+ msgstr ""
1569
+
1570
+ #: inc/helper.php:254
1571
+ msgid "Your card's expiration date is incomplete."
1572
+ msgstr ""
1573
+
1574
+ #: inc/helper.php:255
1575
+ msgid "Your card's security code is incomplete."
1576
+ msgstr ""
1577
+
1578
+ #: inc/helper.php:256
1579
+ msgid "Your card's zip code is incomplete."
1580
+ msgstr ""
1581
+
1582
+ #: inc/helper.php:257
1583
+ msgid "There was an error processing your credit card."
1584
+ msgstr ""
1585
+
1586
+ #: inc/helper.php:258
1587
+ msgid "Your card's expiration year is in the past."
1588
+ msgstr ""
1589
+
1590
+ #: inc/helper.php:259
1591
+ msgid "The bank account cannot be verified, either because the microdeposit amounts provided do not match the actual amounts, or because verification has failed too many times."
1592
+ msgstr ""
1593
+
1594
+ #: inc/helper.php:263
1595
+ msgid "This card has been declined too many times. You can try to charge this card again after 24 hours. We suggest reaching out to your customer to make sure they have entered all of their information correctly and that there are no issues with their card."
1596
+ msgstr ""
1597
+
1598
+ #: inc/helper.php:267
1599
+ msgid "The charge you're attempting to capture has already been captured. Update the request with an uncaptured charge ID."
1600
+ msgstr ""
1601
+
1602
+ #: inc/helper.php:268
1603
+ msgid "The charge you're attempting to refund has already been refunded. Update the request to use the ID of a charge that has not been refunded."
1604
+ msgstr ""
1605
+
1606
+ #: inc/helper.php:272
1607
+ msgid "The charge you're attempting to refund has been charged back. Check the disputes documentation to learn how to respond to the dispute."
1608
+ msgstr ""
1609
+
1610
+ #: inc/helper.php:276
1611
+ msgid "This charge would cause you to exceed your rolling-window processing limit for this source type. Please retry the charge later, or contact us to request a higher processing limit."
1612
+ msgstr ""
1613
+
1614
+ #: inc/helper.php:280
1615
+ msgid "The charge cannot be captured as the authorization has expired. Auth and capture charges must be captured within seven days."
1616
+ msgstr ""
1617
+
1618
+ #: inc/helper.php:284
1619
+ msgid "One or more provided parameters was not allowed for the given operation on the Charge. Check our API reference or the returned error message to see which values were not correct for that Charge."
1620
+ msgstr ""
1621
+
1622
+ #: inc/helper.php:288
1623
+ msgid "The bank account number provided is invalid (e.g., missing digits). Bank account information varies from country to country. We recommend creating validations in your entry forms based on the bank account formats we provide."
1624
+ msgstr ""
1625
+
1626
  #. translators: last 4 digits of IBAN account
1627
  #: inc/token.php:54
1628
  msgid "SEPA IBAN ending in %s"
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: brainstormforce
3
  Tags: stripe, credit card
4
  Requires at least: 5.4
5
  Tested up to: 5.9
6
- Stable tag: 1.4.0
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -108,6 +108,13 @@ We understand the need for a quality product backed by dedicated support that ca
108
 
109
  == Changelog ==
110
 
 
 
 
 
 
 
 
111
  = 1.4.0 - TUESDAY, 22ND FEBRUARY 2022 =
112
  * New: Supports SEPA payment method.
113
  * New: Supports WeChat payment method.
3
  Tags: stripe, credit card
4
  Requires at least: 5.4
5
  Tested up to: 5.9
6
+ Stable tag: 1.4.1
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
108
 
109
  == Changelog ==
110
 
111
+ = 1.4.1 - TUESDAY, 15 MARCH 2022 =
112
+ * New: Express checkout class layout support.
113
+ * Improvement: Added localization for Stripe error messages.
114
+ * Improvement: Added compatibility with popular themes.
115
+ * Fix: Express checkout console error.
116
+ * Fix: Express checkout's broken admin preview.
117
+
118
  = 1.4.0 - TUESDAY, 22ND FEBRUARY 2022 =
119
  * New: Supports SEPA payment method.
120
  * New: Supports WeChat payment method.