Version Description
- Tweak - If Apple Pay is not enabled, prevent Apple Pay Init.
- Fix - Update for WooCommerce 3.0 compatibility.
- Fix - Apple Pay on product detail page causes qty issue when using normal add to cart.
- Fix - A partial workaround for UK/CA postal codes issue for shipping methods that support partial postal code estimates.
- Fix - Stripe checkout did not validate properly formatted email address.
- Fix - Error messages were not able to translate when validating checkout form.
- Fix - Prevent payment gateway title logic ( Apple Pay ) from hijacking other payment methods.
- Remove - Stripe Checkout allow remember me setting as it is redundant to saved card setting.
Download this release
Release Info
| Developer | royho |
| Plugin | |
| Version | 3.1.4 |
| Comparing to | |
| See all releases | |
Code changes from version 3.1.3 to 3.1.4
- DEVELOPER.md +0 -46
- assets/js/stripe-admin.js +2 -2
- assets/js/stripe-admin.min.js +1 -1
- assets/js/stripe-apple-pay-single.js +79 -35
- assets/js/stripe-apple-pay-single.min.js +1 -1
- assets/js/stripe-apple-pay.js +11 -0
- assets/js/stripe-apple-pay.min.js +1 -1
- assets/js/stripe-checkout.js +10 -0
- assets/js/stripe-checkout.min.js +1 -1
- includes/class-wc-gateway-stripe.php +39 -31
- includes/class-wc-stripe-api.php +2 -3
- includes/class-wc-stripe-apple-pay.php +296 -63
- includes/settings-stripe.php +0 -8
- languages/woocommerce-gateway-stripe.pot +113 -129
- readme.txt +20 -4
- woocommerce-gateway-stripe.php +4 -4
DEVELOPER.md
DELETED
|
@@ -1,46 +0,0 @@
|
|
| 1 |
-
# DEVELOPER.md
|
| 2 |
-
|
| 3 |
-
## Testing
|
| 4 |
-
|
| 5 |
-
* In wp-admin > WooCommerce > Settings > Checkout > Stripe, Enable Stripe, Enable Test Mode, Enable Stripe Checkout and Enable Payment via Saved Cards
|
| 6 |
-
* In wp-admin > WooCommerce > Settings > Checkout > Stripe, enter a Test Secret Key and a Test Publishable Key
|
| 7 |
-
* Enable at least one other payment gateway (e.g. Cheques)
|
| 8 |
-
|
| 9 |
-
* On the front side, place an item in your cart and proceed to Checkout
|
| 10 |
-
* Fill in all required fields in the Billing Details area
|
| 11 |
-
* Select Credit Card (Stripe) and "Use a new credit card"
|
| 12 |
-
* Click on Continue to payment
|
| 13 |
-
* Verify you get the stripe modal requesting card number, expiration and CVC
|
| 14 |
-
* Enter 4242 4242 4242 4242, 12/17, 123
|
| 15 |
-
* Leave Remember Me unchecked
|
| 16 |
-
* Click Confirm and Pay
|
| 17 |
-
* Verify the modal closes, the page dims for a bit, and then you are redirected to Order Received
|
| 18 |
-
|
| 19 |
-
* Repeat the above steps, but this time instead of "Use a new credit card" use a stored card
|
| 20 |
-
* Click on Continue to payment
|
| 21 |
-
* Verify the page dims for a bit and then you are redirected to Order Received
|
| 22 |
-
|
| 23 |
-
* Repeat the above steps, but this time clear the Billing Details (e.g. Name, etc)
|
| 24 |
-
* Choose a stored card in Stripe
|
| 25 |
-
* Click on Continue to payment
|
| 26 |
-
* Verify you get prompted to fill in required fields.
|
| 27 |
-
* Fill in the required fields
|
| 28 |
-
* Click on Continue to payment
|
| 29 |
-
* Verify the page dims for a bit and then you are redirected to Order Received
|
| 30 |
-
|
| 31 |
-
* Repeat the above steps, but this time choose the "Cheque Payment" gateway
|
| 32 |
-
* Click on Place Order
|
| 33 |
-
* Verify the page dims for a bit and then you are redirected to Order Received
|
| 34 |
-
|
| 35 |
-
* Repeat at least the "Use a new credit card" case on Chrome on an iPhone or iPad
|
| 36 |
-
|
| 37 |
-
* In wp-admin > WooCommerce > Settings > Checkout > Stripe, uncheck Enable Payment via Saved Cards
|
| 38 |
-
* On the front side, place an item in your cart and proceed to Checkout
|
| 39 |
-
* Fill in all required fields in the Billing Details area
|
| 40 |
-
* Select Credit Card (Stripe)
|
| 41 |
-
* Click on Continue to payment
|
| 42 |
-
* Verify you get the stripe modal requesting card number, expiration and CVC
|
| 43 |
-
* Enter 4242 4242 4242 4242, 12/17, 123
|
| 44 |
-
* Leave Remember Me unchecked
|
| 45 |
-
* Click Confirm and Pay
|
| 46 |
-
* Verify the modal closes, the page dims for a bit, and then you are redirected to Order Received
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/stripe-admin.js
CHANGED
|
@@ -45,10 +45,10 @@ jQuery( function( $ ) {
|
|
| 45 |
// Toggle Stripe Checkout settings.
|
| 46 |
$( '#woocommerce_stripe_stripe_checkout' ).change( function() {
|
| 47 |
if ( $( this ).is( ':checked' ) ) {
|
| 48 |
-
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image
|
| 49 |
$( '#woocommerce_stripe_request_payment_api' ).closest( 'tr' ).hide();
|
| 50 |
} else {
|
| 51 |
-
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image
|
| 52 |
$( '#woocommerce_stripe_request_payment_api' ).closest( 'tr' ).show();
|
| 53 |
}
|
| 54 |
}).change();
|
| 45 |
// Toggle Stripe Checkout settings.
|
| 46 |
$( '#woocommerce_stripe_stripe_checkout' ).change( function() {
|
| 47 |
if ( $( this ).is( ':checked' ) ) {
|
| 48 |
+
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image' ).closest( 'tr' ).show();
|
| 49 |
$( '#woocommerce_stripe_request_payment_api' ).closest( 'tr' ).hide();
|
| 50 |
} else {
|
| 51 |
+
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image' ).closest( 'tr' ).hide();
|
| 52 |
$( '#woocommerce_stripe_request_payment_api' ).closest( 'tr' ).show();
|
| 53 |
}
|
| 54 |
}).change();
|
assets/js/stripe-admin.min.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
jQuery(function(a){"use strict";var b={isTestMode:function(){return a("#woocommerce_stripe_testmode").is(":checked")},getSecretKey:function(){return b.isTestMode()?a("#woocommerce_stripe_test_secret_key").val():a("#woocommerce_stripe_secret_key").val()},init:function(){a(document.body).on("change","#woocommerce_stripe_testmode",function(){var b=a("#woocommerce_stripe_test_secret_key").parents("tr").eq(0),c=a("#woocommerce_stripe_test_publishable_key").parents("tr").eq(0),d=a("#woocommerce_stripe_secret_key").parents("tr").eq(0),e=a("#woocommerce_stripe_publishable_key").parents("tr").eq(0);a(this).is(":checked")?(b.show(),c.show(),d.hide(),e.hide()):(b.hide(),c.hide(),d.show(),e.show())}),a("#woocommerce_stripe_testmode").change(),a("#woocommerce_stripe_stripe_checkout").change(function(){a(this).is(":checked")?(a("#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image
|
| 1 |
+
jQuery(function(a){"use strict";var b={isTestMode:function(){return a("#woocommerce_stripe_testmode").is(":checked")},getSecretKey:function(){return b.isTestMode()?a("#woocommerce_stripe_test_secret_key").val():a("#woocommerce_stripe_secret_key").val()},init:function(){a(document.body).on("change","#woocommerce_stripe_testmode",function(){var b=a("#woocommerce_stripe_test_secret_key").parents("tr").eq(0),c=a("#woocommerce_stripe_test_publishable_key").parents("tr").eq(0),d=a("#woocommerce_stripe_secret_key").parents("tr").eq(0),e=a("#woocommerce_stripe_publishable_key").parents("tr").eq(0);a(this).is(":checked")?(b.show(),c.show(),d.hide(),e.hide()):(b.hide(),c.hide(),d.show(),e.show())}),a("#woocommerce_stripe_testmode").change(),a("#woocommerce_stripe_stripe_checkout").change(function(){a(this).is(":checked")?(a("#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image").closest("tr").show(),a("#woocommerce_stripe_request_payment_api").closest("tr").hide()):(a("#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image").closest("tr").hide(),a("#woocommerce_stripe_request_payment_api").closest("tr").show())}).change(),a("#woocommerce_stripe_apple_pay").change(function(){a(this).is(":checked")?a("#woocommerce_stripe_apple_pay_button, #woocommerce_stripe_apple_pay_button_lang").closest("tr").show():a("#woocommerce_stripe_apple_pay_button, #woocommerce_stripe_apple_pay_button_lang").closest("tr").hide()}).change(),a("#woocommerce_stripe_secret_key, #woocommerce_stripe_publishable_key").on("input",function(){var b=a(this).val();b.indexOf("_test_")>=0?a(this).css("border-color","red").after('<span class="description stripe-error-description" style="color:red; display:block;">'+wc_stripe_admin_params.localized_messages.not_valid_live_key_msg+"</span>"):(a(this).css("border-color",""),a(".stripe-error-description",a(this).parent()).remove())}).trigger("input"),a("#woocommerce_stripe_test_secret_key, #woocommerce_stripe_test_publishable_key").on("input",function(){var b=a(this).val();b.indexOf("_live_")>=0?a(this).css("border-color","red").after('<span class="description stripe-error-description" style="color:red; display:block;">'+wc_stripe_admin_params.localized_messages.not_valid_test_key_msg+"</span>"):(a(this).css("border-color",""),a(".stripe-error-description",a(this).parent()).remove())}).trigger("input")}};b.init()});
|
assets/js/stripe-apple-pay-single.js
CHANGED
|
@@ -26,16 +26,6 @@ jQuery( function( $ ) {
|
|
| 26 |
init: function() {
|
| 27 |
Stripe.applePay.checkAvailability( function( available ) {
|
| 28 |
if ( available ) {
|
| 29 |
-
$( document.body ).on( 'woocommerce_variation_has_changed', function() {
|
| 30 |
-
wc_stripe_apple_pay_single.generate_cart();
|
| 31 |
-
})
|
| 32 |
-
|
| 33 |
-
.on( 'change', '.quantity .qty', function() {
|
| 34 |
-
wc_stripe_apple_pay_single.generate_cart();
|
| 35 |
-
});
|
| 36 |
-
|
| 37 |
-
wc_stripe_apple_pay_single.generate_cart();
|
| 38 |
-
|
| 39 |
$( '.apple-pay-button' ).show();
|
| 40 |
}
|
| 41 |
});
|
|
@@ -61,9 +51,14 @@ jQuery( function( $ ) {
|
|
| 61 |
currencyCode: wc_stripe_apple_pay_single_params.currency_code,
|
| 62 |
total: {
|
| 63 |
label: wc_stripe_apple_pay_single_params.label,
|
| 64 |
-
amount:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
},
|
| 66 |
-
lineItems: wc_stripe_apple_pay_single_params.line_items,
|
| 67 |
requiredBillingContactFields: ['postalAddress'],
|
| 68 |
requiredShippingContactFields: 'yes' === wc_stripe_apple_pay_single_params.needs_shipping ? ['postalAddress', 'phone', 'email', 'name'] : ['phone', 'email', 'name']
|
| 69 |
};
|
|
@@ -94,39 +89,57 @@ jQuery( function( $ ) {
|
|
| 94 |
}
|
| 95 |
}
|
| 96 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
});
|
| 98 |
|
| 99 |
// If shipping is needed -- get shipping methods.
|
| 100 |
if ( 'yes' === wc_stripe_apple_pay_single_params.needs_shipping ) {
|
| 101 |
// After the shipping contact/address has been selected
|
| 102 |
applePaySession.onshippingcontactselected = function( shipping ) {
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 124 |
}
|
| 125 |
-
}
|
| 126 |
});
|
| 127 |
};
|
| 128 |
|
| 129 |
-
// After the shipping method has been selected
|
| 130 |
applePaySession.onshippingmethodselected = function( event ) {
|
| 131 |
var data = {
|
| 132 |
'nonce': wc_stripe_apple_pay_single_params.stripe_apple_pay_update_shipping_method_nonce,
|
|
@@ -155,6 +168,24 @@ jQuery( function( $ ) {
|
|
| 155 |
};
|
| 156 |
}
|
| 157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
applePaySession.begin();
|
| 159 |
});
|
| 160 |
},
|
|
@@ -200,6 +231,19 @@ jQuery( function( $ ) {
|
|
| 200 |
wc_stripe_apple_pay_single_params.line_items = response.line_items;
|
| 201 |
}
|
| 202 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
}
|
| 204 |
};
|
| 205 |
|
| 26 |
init: function() {
|
| 27 |
Stripe.applePay.checkAvailability( function( available ) {
|
| 28 |
if ( available ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
$( '.apple-pay-button' ).show();
|
| 30 |
}
|
| 31 |
});
|
| 51 |
currencyCode: wc_stripe_apple_pay_single_params.currency_code,
|
| 52 |
total: {
|
| 53 |
label: wc_stripe_apple_pay_single_params.label,
|
| 54 |
+
amount: 1,
|
| 55 |
+
type: 'pending'
|
| 56 |
+
},
|
| 57 |
+
lineItems: {
|
| 58 |
+
label: wc_stripe_apple_pay_single_params.i18n.sub_total,
|
| 59 |
+
amount: 1,
|
| 60 |
+
type: 'pending'
|
| 61 |
},
|
|
|
|
| 62 |
requiredBillingContactFields: ['postalAddress'],
|
| 63 |
requiredShippingContactFields: 'yes' === wc_stripe_apple_pay_single_params.needs_shipping ? ['postalAddress', 'phone', 'email', 'name'] : ['phone', 'email', 'name']
|
| 64 |
};
|
| 89 |
}
|
| 90 |
}
|
| 91 |
});
|
| 92 |
+
}, function( error ) {
|
| 93 |
+
var data = {
|
| 94 |
+
'nonce': wc_stripe_apple_pay_single_params.stripe_apple_pay_nonce,
|
| 95 |
+
'errors': error.message
|
| 96 |
+
};
|
| 97 |
+
|
| 98 |
+
$.ajax({
|
| 99 |
+
type: 'POST',
|
| 100 |
+
data: data,
|
| 101 |
+
url: wc_stripe_apple_pay_single.getAjaxURL( 'log_apple_pay_errors' )
|
| 102 |
+
});
|
| 103 |
});
|
| 104 |
|
| 105 |
// If shipping is needed -- get shipping methods.
|
| 106 |
if ( 'yes' === wc_stripe_apple_pay_single_params.needs_shipping ) {
|
| 107 |
// After the shipping contact/address has been selected
|
| 108 |
applePaySession.onshippingcontactselected = function( shipping ) {
|
| 109 |
+
$.when( wc_stripe_apple_pay_single.generate_cart() ).then( function() {
|
| 110 |
+
var data = {
|
| 111 |
+
'nonce': wc_stripe_apple_pay_single_params.stripe_apple_pay_get_shipping_methods_nonce,
|
| 112 |
+
'address': shipping.shippingContact
|
| 113 |
+
};
|
| 114 |
+
|
| 115 |
+
$.ajax({
|
| 116 |
+
type: 'POST',
|
| 117 |
+
data: data,
|
| 118 |
+
url: wc_stripe_apple_pay_single.getAjaxURL( 'apple_pay_get_shipping_methods' ),
|
| 119 |
+
success: function( response ) {
|
| 120 |
+
var total = {
|
| 121 |
+
'label': wc_stripe_apple_pay_single_params.label,
|
| 122 |
+
'amount': response.total
|
| 123 |
+
};
|
| 124 |
+
|
| 125 |
+
if ( response.total <= 0 ) {
|
| 126 |
+
total.amount = 1;
|
| 127 |
+
total.type = 'pending';
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
if ( 'true' === response.success ) {
|
| 131 |
+
applePaySession.completeShippingContactSelection( ApplePaySession.STATUS_SUCCESS, response.shipping_methods, total, response.line_items );
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
if ( 'false' === response.success ) {
|
| 135 |
+
applePaySession.completeShippingContactSelection( ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS, response.shipping_methods, total, response.line_items );
|
| 136 |
+
}
|
| 137 |
}
|
| 138 |
+
});
|
| 139 |
});
|
| 140 |
};
|
| 141 |
|
| 142 |
+
// After the shipping method has been selected.
|
| 143 |
applePaySession.onshippingmethodselected = function( event ) {
|
| 144 |
var data = {
|
| 145 |
'nonce': wc_stripe_apple_pay_single_params.stripe_apple_pay_update_shipping_method_nonce,
|
| 168 |
};
|
| 169 |
}
|
| 170 |
|
| 171 |
+
// When payment is selected, we need to fetch cart.
|
| 172 |
+
applePaySession.onpaymentmethodselected = function( event ) {
|
| 173 |
+
$.when( wc_stripe_apple_pay_single.generate_cart() ).then( function() {
|
| 174 |
+
|
| 175 |
+
var total = {
|
| 176 |
+
label: wc_stripe_apple_pay_single_params.label,
|
| 177 |
+
amount: wc_stripe_apple_pay_single_params.total
|
| 178 |
+
},
|
| 179 |
+
lineItems = wc_stripe_apple_pay_single_params.line_items;
|
| 180 |
+
|
| 181 |
+
applePaySession.completePaymentMethodSelection( total, lineItems );
|
| 182 |
+
});
|
| 183 |
+
};
|
| 184 |
+
|
| 185 |
+
applePaySession.oncancel = function( event ) {
|
| 186 |
+
wc_stripe_apple_pay_single.clear_cart();
|
| 187 |
+
};
|
| 188 |
+
|
| 189 |
applePaySession.begin();
|
| 190 |
});
|
| 191 |
},
|
| 231 |
wc_stripe_apple_pay_single_params.line_items = response.line_items;
|
| 232 |
}
|
| 233 |
});
|
| 234 |
+
},
|
| 235 |
+
|
| 236 |
+
clear_cart: function() {
|
| 237 |
+
var data = {
|
| 238 |
+
'nonce': wc_stripe_apple_pay_single_params.stripe_apple_pay_cart_nonce
|
| 239 |
+
};
|
| 240 |
+
|
| 241 |
+
return $.ajax({
|
| 242 |
+
type: 'POST',
|
| 243 |
+
data: data,
|
| 244 |
+
url: wc_stripe_apple_pay_single.getAjaxURL( 'apple_pay_clear_cart' ),
|
| 245 |
+
success: function( response ) {}
|
| 246 |
+
});
|
| 247 |
}
|
| 248 |
};
|
| 249 |
|
assets/js/stripe-apple-pay-single.min.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
Stripe.setPublishableKey(wc_stripe_apple_pay_single_params.key),jQuery(function(a){"use strict";var b={getAjaxURL:function(a){return wc_stripe_apple_pay_single_params.ajaxurl.toString().replace("%%endpoint%%","wc_stripe_"+a)},init:function(){Stripe.applePay.checkAvailability(function(
|
| 1 |
+
Stripe.setPublishableKey(wc_stripe_apple_pay_single_params.key),jQuery(function(a){"use strict";var b={getAjaxURL:function(a){return wc_stripe_apple_pay_single_params.ajaxurl.toString().replace("%%endpoint%%","wc_stripe_"+a)},init:function(){Stripe.applePay.checkAvailability(function(b){b&&a(".apple-pay-button").show()}),a(document.body).on("click",".apple-pay-button",function(c){c.preventDefault();var d=a(".single_add_to_cart_button");if(d.is(".disabled"))return void(d.is(".wc-variation-is-unavailable")?window.alert(wc_add_to_cart_variation_params.i18n_unavailable_text):d.is(".wc-variation-selection-needed")&&window.alert(wc_add_to_cart_variation_params.i18n_make_a_selection_text));var e={countryCode:wc_stripe_apple_pay_single_params.country_code,currencyCode:wc_stripe_apple_pay_single_params.currency_code,total:{label:wc_stripe_apple_pay_single_params.label,amount:1,type:"pending"},lineItems:{label:wc_stripe_apple_pay_single_params.i18n.sub_total,amount:1,type:"pending"},requiredBillingContactFields:["postalAddress"],requiredShippingContactFields:"yes"===wc_stripe_apple_pay_single_params.needs_shipping?["postalAddress","phone","email","name"]:["phone","email","name"]},f=Stripe.applePay.buildSession(e,function(c,d){var e={nonce:wc_stripe_apple_pay_single_params.stripe_apple_pay_nonce,result:c};a.ajax({type:"POST",data:e,url:b.getAjaxURL("apple_pay"),success:function(b){"true"===b.success&&(d(ApplePaySession.STATUS_SUCCESS),window.location.href=b.redirect),"false"===b.success&&(d(ApplePaySession.STATUS_FAILURE),a(".apple-pay-button").before('<p class="woocommerce-error wc-stripe-apple-pay-error">'+b.msg+"</p>"),a(document.body).animate({scrollTop:a(".wc-stripe-apple-pay-error").offset().top},500))}})},function(c){var d={nonce:wc_stripe_apple_pay_single_params.stripe_apple_pay_nonce,errors:c.message};a.ajax({type:"POST",data:d,url:b.getAjaxURL("log_apple_pay_errors")})});"yes"===wc_stripe_apple_pay_single_params.needs_shipping&&(f.onshippingcontactselected=function(c){a.when(b.generate_cart()).then(function(){var d={nonce:wc_stripe_apple_pay_single_params.stripe_apple_pay_get_shipping_methods_nonce,address:c.shippingContact};a.ajax({type:"POST",data:d,url:b.getAjaxURL("apple_pay_get_shipping_methods"),success:function(a){var b={label:wc_stripe_apple_pay_single_params.label,amount:a.total};a.total<=0&&(b.amount=1,b.type="pending"),"true"===a.success&&f.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS,a.shipping_methods,b,a.line_items),"false"===a.success&&f.completeShippingContactSelection(ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,a.shipping_methods,b,a.line_items)}})})},f.onshippingmethodselected=function(c){var d={nonce:wc_stripe_apple_pay_single_params.stripe_apple_pay_update_shipping_method_nonce,selected_shipping_method:c.shippingMethod};a.ajax({type:"POST",data:d,url:b.getAjaxURL("apple_pay_update_shipping_method"),success:function(a){var b={label:wc_stripe_apple_pay_single_params.label,amount:parseFloat(a.total).toFixed(2)};"true"===a.success&&f.completeShippingMethodSelection(ApplePaySession.STATUS_SUCCESS,b,a.line_items),"false"===a.success&&f.completeShippingMethodSelection(ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,b,a.line_items)}})}),f.onpaymentmethodselected=function(c){a.when(b.generate_cart()).then(function(){var a={label:wc_stripe_apple_pay_single_params.label,amount:wc_stripe_apple_pay_single_params.total},b=wc_stripe_apple_pay_single_params.line_items;f.completePaymentMethodSelection(a,b)})},f.oncancel=function(a){b.clear_cart()},f.begin()})},get_attributes:function(){var b=a(".variations_form").find(".variations select"),c={},d=0,e=0;return b.each(function(){var b=a(this).data("attribute_name")||a(this).attr("name"),f=a(this).val()||"";f.length>0&&e++,d++,c[b]=f}),{count:d,chosenCount:e,data:c}},generate_cart:function(){var c={nonce:wc_stripe_apple_pay_single_params.stripe_apple_pay_cart_nonce,qty:a(".quantity .qty").val(),attributes:a(".variations_form").length?b.get_attributes().data:[]};return a.ajax({type:"POST",data:c,url:b.getAjaxURL("generate_apple_pay_single"),success:function(a){wc_stripe_apple_pay_single_params.total=a.total,wc_stripe_apple_pay_single_params.line_items=a.line_items}})},clear_cart:function(){var c={nonce:wc_stripe_apple_pay_single_params.stripe_apple_pay_cart_nonce};return a.ajax({type:"POST",data:c,url:b.getAjaxURL("apple_pay_clear_cart"),success:function(a){}})}};b.init()});
|
assets/js/stripe-apple-pay.js
CHANGED
|
@@ -76,6 +76,17 @@ jQuery( function( $ ) {
|
|
| 76 |
}
|
| 77 |
}
|
| 78 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
});
|
| 80 |
|
| 81 |
// If shipping is needed -- get shipping methods.
|
| 76 |
}
|
| 77 |
}
|
| 78 |
});
|
| 79 |
+
}, function( error ) {
|
| 80 |
+
var data = {
|
| 81 |
+
'nonce': wc_stripe_apple_pay_params.stripe_apple_pay_cart_nonce,
|
| 82 |
+
'errors': error.message
|
| 83 |
+
};
|
| 84 |
+
|
| 85 |
+
$.ajax({
|
| 86 |
+
type: 'POST',
|
| 87 |
+
data: data,
|
| 88 |
+
url: wc_stripe_apple_pay.getAjaxURL( 'log_apple_pay_errors' )
|
| 89 |
+
});
|
| 90 |
});
|
| 91 |
|
| 92 |
// If shipping is needed -- get shipping methods.
|
assets/js/stripe-apple-pay.min.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
Stripe.setPublishableKey(wc_stripe_apple_pay_params.key),jQuery(function(a){"use strict";var b={getAjaxURL:function(a){return wc_stripe_apple_pay_params.ajaxurl.toString().replace("%%endpoint%%","wc_stripe_"+a)},init:function(){Stripe.applePay.checkAvailability(function(c){c&&(a(".apple-pay-button").show(),a(".woocommerce-checkout .apple-pay-button").css("visibility","visible"),a(".apple-pay-button-checkout-separator").show(),b.generate_cart())}),a(document.body).on("click",".apple-pay-button",function(c){c.preventDefault();var d={countryCode:wc_stripe_apple_pay_params.country_code,currencyCode:wc_stripe_apple_pay_params.currency_code,total:{label:wc_stripe_apple_pay_params.label,amount:wc_stripe_apple_pay_params.total},lineItems:wc_stripe_apple_pay_params.line_items,requiredBillingContactFields:["postalAddress"],requiredShippingContactFields:"yes"===wc_stripe_apple_pay_params.needs_shipping?["postalAddress","phone","email","name"]:["phone","email","name"]},e=Stripe.applePay.buildSession(d,function(c,d){var e={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_nonce,result:c};a.ajax({type:"POST",data:e,url:b.getAjaxURL("apple_pay"),success:function(b){"true"===b.success&&(d(ApplePaySession.STATUS_SUCCESS),window.location.href=b.redirect),"false"===b.success&&(d(ApplePaySession.STATUS_FAILURE),a(".apple-pay-button").before('<p class="woocommerce-error wc-stripe-apple-pay-error">'+b.msg+"</p>"),a(document.body).animate({scrollTop:a(".wc-stripe-apple-pay-error").offset().top},500))}})});"yes"===wc_stripe_apple_pay_params.needs_shipping&&(e.onshippingcontactselected=function(c){var d={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_get_shipping_methods_nonce,address:c.shippingContact};a.ajax({type:"POST",data:d,url:b.getAjaxURL("apple_pay_get_shipping_methods"),success:function(a){var b={label:wc_stripe_apple_pay_params.label,amount:a.total};"true"===a.success&&e.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS,a.shipping_methods,b,a.line_items),"false"===a.success&&e.completeShippingContactSelection(ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,a.shipping_methods,b,a.line_items)}})},e.onshippingmethodselected=function(c){var d={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_update_shipping_method_nonce,selected_shipping_method:c.shippingMethod};a.ajax({type:"POST",data:d,url:b.getAjaxURL("apple_pay_update_shipping_method"),success:function(a){var b={label:wc_stripe_apple_pay_params.label,amount:parseFloat(a.total).toFixed(2)};"true"===a.success&&e.completeShippingMethodSelection(ApplePaySession.STATUS_SUCCESS,b,a.line_items),"false"===a.success&&e.completeShippingMethodSelection(ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,b,a.line_items)}})}),e.begin()})},generate_cart:function(){var c={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_cart_nonce};a.ajax({type:"POST",data:c,url:b.getAjaxURL("generate_apple_pay_cart"),success:function(a){wc_stripe_apple_pay_params.total=a.total,wc_stripe_apple_pay_params.line_items=a.line_items}})}};b.init(),a(document.body).on("updated_cart_totals",function(){b.init()}),a(document.body).on("updated_checkout",function(){b.init()})});
|
| 1 |
+
Stripe.setPublishableKey(wc_stripe_apple_pay_params.key),jQuery(function(a){"use strict";var b={getAjaxURL:function(a){return wc_stripe_apple_pay_params.ajaxurl.toString().replace("%%endpoint%%","wc_stripe_"+a)},init:function(){Stripe.applePay.checkAvailability(function(c){c&&(a(".apple-pay-button").show(),a(".woocommerce-checkout .apple-pay-button").css("visibility","visible"),a(".apple-pay-button-checkout-separator").show(),b.generate_cart())}),a(document.body).on("click",".apple-pay-button",function(c){c.preventDefault();var d={countryCode:wc_stripe_apple_pay_params.country_code,currencyCode:wc_stripe_apple_pay_params.currency_code,total:{label:wc_stripe_apple_pay_params.label,amount:wc_stripe_apple_pay_params.total},lineItems:wc_stripe_apple_pay_params.line_items,requiredBillingContactFields:["postalAddress"],requiredShippingContactFields:"yes"===wc_stripe_apple_pay_params.needs_shipping?["postalAddress","phone","email","name"]:["phone","email","name"]},e=Stripe.applePay.buildSession(d,function(c,d){var e={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_nonce,result:c};a.ajax({type:"POST",data:e,url:b.getAjaxURL("apple_pay"),success:function(b){"true"===b.success&&(d(ApplePaySession.STATUS_SUCCESS),window.location.href=b.redirect),"false"===b.success&&(d(ApplePaySession.STATUS_FAILURE),a(".apple-pay-button").before('<p class="woocommerce-error wc-stripe-apple-pay-error">'+b.msg+"</p>"),a(document.body).animate({scrollTop:a(".wc-stripe-apple-pay-error").offset().top},500))}})},function(c){var d={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_cart_nonce,errors:c.message};a.ajax({type:"POST",data:d,url:b.getAjaxURL("log_apple_pay_errors")})});"yes"===wc_stripe_apple_pay_params.needs_shipping&&(e.onshippingcontactselected=function(c){var d={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_get_shipping_methods_nonce,address:c.shippingContact};a.ajax({type:"POST",data:d,url:b.getAjaxURL("apple_pay_get_shipping_methods"),success:function(a){var b={label:wc_stripe_apple_pay_params.label,amount:a.total};"true"===a.success&&e.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS,a.shipping_methods,b,a.line_items),"false"===a.success&&e.completeShippingContactSelection(ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,a.shipping_methods,b,a.line_items)}})},e.onshippingmethodselected=function(c){var d={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_update_shipping_method_nonce,selected_shipping_method:c.shippingMethod};a.ajax({type:"POST",data:d,url:b.getAjaxURL("apple_pay_update_shipping_method"),success:function(a){var b={label:wc_stripe_apple_pay_params.label,amount:parseFloat(a.total).toFixed(2)};"true"===a.success&&e.completeShippingMethodSelection(ApplePaySession.STATUS_SUCCESS,b,a.line_items),"false"===a.success&&e.completeShippingMethodSelection(ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,b,a.line_items)}})}),e.begin()})},generate_cart:function(){var c={nonce:wc_stripe_apple_pay_params.stripe_apple_pay_cart_nonce};a.ajax({type:"POST",data:c,url:b.getAjaxURL("generate_apple_pay_cart"),success:function(a){wc_stripe_apple_pay_params.total=a.total,wc_stripe_apple_pay_params.line_items=a.line_items}})}};b.init(),a(document.body).on("updated_cart_totals",function(){b.init()}),a(document.body).on("updated_checkout",function(){b.init()})});
|
assets/js/stripe-checkout.js
CHANGED
|
@@ -65,6 +65,16 @@ jQuery( function( $ ) {
|
|
| 65 |
if ( $( this ).find( 'input.input-text, select' ).not( $( '#account_password, #account_username' ) ).val() === '' ) {
|
| 66 |
required_error = true;
|
| 67 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
});
|
| 69 |
|
| 70 |
if ( required_error ) {
|
| 65 |
if ( $( this ).find( 'input.input-text, select' ).not( $( '#account_password, #account_username' ) ).val() === '' ) {
|
| 66 |
required_error = true;
|
| 67 |
}
|
| 68 |
+
|
| 69 |
+
var emailField = $( this ).find( '#billing_email' );
|
| 70 |
+
|
| 71 |
+
if ( emailField.length ) {
|
| 72 |
+
var re = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
|
| 73 |
+
|
| 74 |
+
if ( ! re.test( emailField.val() ) ) {
|
| 75 |
+
required_error = true;
|
| 76 |
+
}
|
| 77 |
+
}
|
| 78 |
});
|
| 79 |
|
| 80 |
if ( required_error ) {
|
assets/js/stripe-checkout.min.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
jQuery(function(a){"use strict";var b={init:function(b){this.form=b,this.stripe_submit=!1,a(this.form).on("click","#place_order",this.onSubmit).on("submit checkout_place_order_stripe"),a(document.body).on("checkout_error",this.resetModal)},isStripeChosen:function(){return a("#payment_method_stripe").is(":checked")&&(!a('input[name="wc-stripe-payment-token"]:checked').length||"new"===a('input[name="wc-stripe-payment-token"]:checked').val())},isStripeModalNeeded:function(c){var d,e=b.form.find("input.stripe_token");if(b.stripe_submit&&e)return!1;if(!b.isStripeChosen())return!1;if(1===a("input#terms").length&&0===a("input#terms:checked").length)return!1;if(a("#createaccount").is(":checked")&&a("#account_password").length&&""===a("#account_password").val())return!1;if(d=a(a("#ship-to-different-address-checkbox").is(":checked")?".woocommerce-billing-fields .validate-required, .woocommerce-shipping-fields .validate-required":".woocommerce-billing-fields .validate-required"),d.length){var f=!1;if(d.each(function(){""===a(this).find("input.input-text, select").not(a("#account_password, #account_username")).val()&&(f=!0)}),f)return!1}return!0},block:function(){b.form.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},unblock:function(){b.form.unblock()},onClose:function(){b.unblock()},onSubmit:function(c){if(b.isStripeModalNeeded()){c.preventDefault();var d=b.form,e=a("#stripe-payment-data"),f=d.find("input.stripe_token");f.val("");var g=function(a){d.find("input.stripe_token").remove(),d.append('<input type="hidden" class="stripe_token" name="stripe_token" value="'+a.id+'"/>'),b.stripe_submit=!0,d.submit()};return StripeCheckout.open({key:wc_stripe_params.key,billingAddress:"yes"===wc_stripe_params.stripe_checkout_require_billing_address,amount:e.data("amount"),name:e.data("name"),description:e.data("description"),currency:e.data("currency"),image:e.data("image"),bitcoin:e.data("bitcoin"),locale:e.data("locale"),email:a("#billing_email").val()||e.data("email"),panelLabel:e.data("panel-label"),allowRememberMe:e.data("allow-remember-me"),token:g,closed:b.onClose()}),!1}return!0},resetModal:function(){b.form.find("input.stripe_token").remove(),b.stripe_submit=!1}};b.init(a("form.checkout, form#order_review, form#add_payment_method"))});
|
| 1 |
+
jQuery(function(a){"use strict";var b={init:function(b){this.form=b,this.stripe_submit=!1,a(this.form).on("click","#place_order",this.onSubmit).on("submit checkout_place_order_stripe"),a(document.body).on("checkout_error",this.resetModal)},isStripeChosen:function(){return a("#payment_method_stripe").is(":checked")&&(!a('input[name="wc-stripe-payment-token"]:checked').length||"new"===a('input[name="wc-stripe-payment-token"]:checked').val())},isStripeModalNeeded:function(c){var d,e=b.form.find("input.stripe_token");if(b.stripe_submit&&e)return!1;if(!b.isStripeChosen())return!1;if(1===a("input#terms").length&&0===a("input#terms:checked").length)return!1;if(a("#createaccount").is(":checked")&&a("#account_password").length&&""===a("#account_password").val())return!1;if(d=a(a("#ship-to-different-address-checkbox").is(":checked")?".woocommerce-billing-fields .validate-required, .woocommerce-shipping-fields .validate-required":".woocommerce-billing-fields .validate-required"),d.length){var f=!1;if(d.each(function(){""===a(this).find("input.input-text, select").not(a("#account_password, #account_username")).val()&&(f=!0);var b=a(this).find("#billing_email");if(b.length){var c=/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;c.test(b.val())||(f=!0)}}),f)return!1}return!0},block:function(){b.form.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},unblock:function(){b.form.unblock()},onClose:function(){b.unblock()},onSubmit:function(c){if(b.isStripeModalNeeded()){c.preventDefault();var d=b.form,e=a("#stripe-payment-data"),f=d.find("input.stripe_token");f.val("");var g=function(a){d.find("input.stripe_token").remove(),d.append('<input type="hidden" class="stripe_token" name="stripe_token" value="'+a.id+'"/>'),b.stripe_submit=!0,d.submit()};return StripeCheckout.open({key:wc_stripe_params.key,billingAddress:"yes"===wc_stripe_params.stripe_checkout_require_billing_address,amount:e.data("amount"),name:e.data("name"),description:e.data("description"),currency:e.data("currency"),image:e.data("image"),bitcoin:e.data("bitcoin"),locale:e.data("locale"),email:a("#billing_email").val()||e.data("email"),panelLabel:e.data("panel-label"),allowRememberMe:e.data("allow-remember-me"),token:g,closed:b.onClose()}),!1}return!0},resetModal:function(){b.form.find("input.stripe_token").remove(),b.stripe_submit=!1}};b.init(a("form.checkout, form#order_review, form#add_payment_method"))});
|
includes/class-wc-gateway-stripe.php
CHANGED
|
@@ -73,13 +73,6 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 73 |
*/
|
| 74 |
public $bitcoin;
|
| 75 |
|
| 76 |
-
/**
|
| 77 |
-
* Alow Remember me setting for Stripe Checkout
|
| 78 |
-
*
|
| 79 |
-
* @var bool
|
| 80 |
-
*/
|
| 81 |
-
public $allow_remember_me;
|
| 82 |
-
|
| 83 |
/**
|
| 84 |
* Do we accept Apple Pay?
|
| 85 |
*
|
|
@@ -115,6 +108,13 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 115 |
*/
|
| 116 |
public $logging;
|
| 117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
/**
|
| 119 |
* Constructor
|
| 120 |
*/
|
|
@@ -149,24 +149,24 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 149 |
$this->init_settings();
|
| 150 |
|
| 151 |
// Get setting values.
|
| 152 |
-
$this->title
|
| 153 |
-
$this->description
|
| 154 |
-
$this->enabled
|
| 155 |
-
$this->testmode
|
| 156 |
-
$this->capture
|
| 157 |
-
$this->statement_descriptor
|
| 158 |
-
$this->stripe_checkout
|
| 159 |
-
$this->stripe_checkout_locale
|
| 160 |
-
$this->stripe_checkout_image
|
| 161 |
-
$this->saved_cards
|
| 162 |
-
$this->secret_key
|
| 163 |
-
$this->publishable_key
|
| 164 |
-
$this->bitcoin
|
| 165 |
-
$this->apple_pay
|
| 166 |
-
$this->apple_pay_domain_set
|
| 167 |
-
$this->apple_pay_button
|
| 168 |
-
$this->logging
|
| 169 |
-
$this->
|
| 170 |
|
| 171 |
if ( $this->stripe_checkout ) {
|
| 172 |
$this->order_button_text = __( 'Continue to payment', 'woocommerce-gateway-stripe' );
|
|
@@ -277,7 +277,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 277 |
* @version 3.1.0
|
| 278 |
* @param string $secret_key
|
| 279 |
*/
|
| 280 |
-
private function
|
| 281 |
if ( empty( $secret_key ) ) {
|
| 282 |
throw new Exception( __( 'Unable to verify domain - missing secret key.', 'woocommerce-gateway-stripe' ) );
|
| 283 |
}
|
|
@@ -299,7 +299,11 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 299 |
) );
|
| 300 |
|
| 301 |
if ( 200 !== $response['response']['code'] ) {
|
| 302 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
}
|
| 304 |
}
|
| 305 |
|
|
@@ -318,7 +322,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 318 |
$file = 'apple-developer-merchantid-domain-association';
|
| 319 |
$fullpath = $path . '/' . $dir . '/' . $file;
|
| 320 |
|
| 321 |
-
if ( 'yes' === $gateway_settings['apple_pay_domain_set'] && file_exists( $fullpath ) ) {
|
| 322 |
return;
|
| 323 |
}
|
| 324 |
|
|
@@ -336,7 +340,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 336 |
|
| 337 |
// At this point then the domain association folder and file should be available.
|
| 338 |
// Proceed to verify/and or verify again.
|
| 339 |
-
$this->
|
| 340 |
|
| 341 |
// No errors to this point, verification success!
|
| 342 |
$gateway_settings['apple_pay_domain_set'] = 'yes';
|
|
@@ -363,13 +367,17 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 363 |
return;
|
| 364 |
}
|
| 365 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 366 |
/**
|
| 367 |
* Apple pay is enabled by default and domain verification initializes
|
| 368 |
* when setting screen is displayed. So if domain verification is not set,
|
| 369 |
* something went wrong so lets notify user.
|
| 370 |
*/
|
| 371 |
if ( ! empty( $this->secret_key ) && $this->apple_pay && ! $this->apple_pay_domain_set ) {
|
| 372 |
-
echo '<div class="error stripe-apple-pay-message"><p>' . sprintf( __( 'Apple Pay domain verification failed. Please check the %1$slog%2$s to see the issue.', 'woocommerce-gateway-stripe' ), '<a href="' . admin_url( 'admin.php?page=wc-status&tab=logs' ) . '">', '</a>' ) . '</p></div>';
|
| 373 |
}
|
| 374 |
|
| 375 |
// Show message if enabled and FORCE SSL is disabled and WordpressHTTPS plugin is not detected.
|
|
@@ -439,7 +447,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 439 |
data-image="' . esc_attr( $this->stripe_checkout_image ) . '"
|
| 440 |
data-bitcoin="' . esc_attr( $this->bitcoin ? 'true' : 'false' ) . '"
|
| 441 |
data-locale="' . esc_attr( $this->stripe_checkout_locale ? $this->stripe_checkout_locale : 'en' ) . '"
|
| 442 |
-
data-allow-remember-me="' . esc_attr( $this->
|
| 443 |
|
| 444 |
if ( $this->description ) {
|
| 445 |
echo apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $this->description ) ) );
|
| 73 |
*/
|
| 74 |
public $bitcoin;
|
| 75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
/**
|
| 77 |
* Do we accept Apple Pay?
|
| 78 |
*
|
| 108 |
*/
|
| 109 |
public $logging;
|
| 110 |
|
| 111 |
+
/**
|
| 112 |
+
* Stores Apple Pay domain verification issues.
|
| 113 |
+
*
|
| 114 |
+
* @var string
|
| 115 |
+
*/
|
| 116 |
+
public $apple_pay_verify_notice;
|
| 117 |
+
|
| 118 |
/**
|
| 119 |
* Constructor
|
| 120 |
*/
|
| 149 |
$this->init_settings();
|
| 150 |
|
| 151 |
// Get setting values.
|
| 152 |
+
$this->title = $this->get_option( 'title' );
|
| 153 |
+
$this->description = $this->get_option( 'description' );
|
| 154 |
+
$this->enabled = $this->get_option( 'enabled' );
|
| 155 |
+
$this->testmode = 'yes' === $this->get_option( 'testmode' );
|
| 156 |
+
$this->capture = 'yes' === $this->get_option( 'capture', 'yes' );
|
| 157 |
+
$this->statement_descriptor = $this->get_option( 'statement_descriptor', wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ) );
|
| 158 |
+
$this->stripe_checkout = 'yes' === $this->get_option( 'stripe_checkout' );
|
| 159 |
+
$this->stripe_checkout_locale = $this->get_option( 'stripe_checkout_locale' );
|
| 160 |
+
$this->stripe_checkout_image = $this->get_option( 'stripe_checkout_image', '' );
|
| 161 |
+
$this->saved_cards = 'yes' === $this->get_option( 'saved_cards' );
|
| 162 |
+
$this->secret_key = $this->testmode ? $this->get_option( 'test_secret_key' ) : $this->get_option( 'secret_key' );
|
| 163 |
+
$this->publishable_key = $this->testmode ? $this->get_option( 'test_publishable_key' ) : $this->get_option( 'publishable_key' );
|
| 164 |
+
$this->bitcoin = 'USD' === strtoupper( get_woocommerce_currency() ) && 'yes' === $this->get_option( 'stripe_bitcoin' );
|
| 165 |
+
$this->apple_pay = 'yes' === $this->get_option( 'apple_pay', 'yes' );
|
| 166 |
+
$this->apple_pay_domain_set = 'yes' === $this->get_option( 'apple_pay_domain_set', 'no' );
|
| 167 |
+
$this->apple_pay_button = $this->get_option( 'apple_pay_button', 'black' );
|
| 168 |
+
$this->logging = 'yes' === $this->get_option( 'logging' );
|
| 169 |
+
$this->apple_pay_verify_notice = '';
|
| 170 |
|
| 171 |
if ( $this->stripe_checkout ) {
|
| 172 |
$this->order_button_text = __( 'Continue to payment', 'woocommerce-gateway-stripe' );
|
| 277 |
* @version 3.1.0
|
| 278 |
* @param string $secret_key
|
| 279 |
*/
|
| 280 |
+
private function register_apple_pay_domain( $secret_key = '' ) {
|
| 281 |
if ( empty( $secret_key ) ) {
|
| 282 |
throw new Exception( __( 'Unable to verify domain - missing secret key.', 'woocommerce-gateway-stripe' ) );
|
| 283 |
}
|
| 299 |
) );
|
| 300 |
|
| 301 |
if ( 200 !== $response['response']['code'] ) {
|
| 302 |
+
$parsed_response = json_decode( $response['body'] );
|
| 303 |
+
|
| 304 |
+
$this->apple_pay_verify_notice = $parsed_response->error->message;
|
| 305 |
+
|
| 306 |
+
throw new Exception( sprintf( __( 'Unable to verify domain - %s', 'woocommerce-gateway-stripe' ), $parsed_response->error->message ) );
|
| 307 |
}
|
| 308 |
}
|
| 309 |
|
| 322 |
$file = 'apple-developer-merchantid-domain-association';
|
| 323 |
$fullpath = $path . '/' . $dir . '/' . $file;
|
| 324 |
|
| 325 |
+
if ( ! empty( $gateway_settings['apple_pay_domain_set'] ) && 'yes' === $gateway_settings['apple_pay_domain_set'] && file_exists( $fullpath ) ) {
|
| 326 |
return;
|
| 327 |
}
|
| 328 |
|
| 340 |
|
| 341 |
// At this point then the domain association folder and file should be available.
|
| 342 |
// Proceed to verify/and or verify again.
|
| 343 |
+
$this->register_apple_pay_domain( $this->secret_key );
|
| 344 |
|
| 345 |
// No errors to this point, verification success!
|
| 346 |
$gateway_settings['apple_pay_domain_set'] = 'yes';
|
| 367 |
return;
|
| 368 |
}
|
| 369 |
|
| 370 |
+
if ( $this->apple_pay && ! empty( $this->apple_pay_verify_notice ) ) {
|
| 371 |
+
echo '<div class="error stripe-apple-pay-message"><p>' . wp_kses( make_clickable( $this->apple_pay_verify_notice ) ) . '</p></div>';
|
| 372 |
+
}
|
| 373 |
+
|
| 374 |
/**
|
| 375 |
* Apple pay is enabled by default and domain verification initializes
|
| 376 |
* when setting screen is displayed. So if domain verification is not set,
|
| 377 |
* something went wrong so lets notify user.
|
| 378 |
*/
|
| 379 |
if ( ! empty( $this->secret_key ) && $this->apple_pay && ! $this->apple_pay_domain_set ) {
|
| 380 |
+
echo '<div class="error stripe-apple-pay-message"><p>' . sprintf( __( 'Apple Pay domain verification failed. Please check the %1$slog%2$s to see the issue. (Logging must be enabled to see recorded logs)', 'woocommerce-gateway-stripe' ), '<a href="' . admin_url( 'admin.php?page=wc-status&tab=logs' ) . '">', '</a>' ) . '</p></div>';
|
| 381 |
}
|
| 382 |
|
| 383 |
// Show message if enabled and FORCE SSL is disabled and WordpressHTTPS plugin is not detected.
|
| 447 |
data-image="' . esc_attr( $this->stripe_checkout_image ) . '"
|
| 448 |
data-bitcoin="' . esc_attr( $this->bitcoin ? 'true' : 'false' ) . '"
|
| 449 |
data-locale="' . esc_attr( $this->stripe_checkout_locale ? $this->stripe_checkout_locale : 'en' ) . '"
|
| 450 |
+
data-allow-remember-me="' . esc_attr( $this->saved_cards ? 'true' : 'false' ) . '">';
|
| 451 |
|
| 452 |
if ( $this->description ) {
|
| 453 |
echo apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $this->description ) ) );
|
includes/class-wc-stripe-api.php
CHANGED
|
@@ -74,11 +74,10 @@ class WC_Stripe_API {
|
|
| 74 |
}
|
| 75 |
|
| 76 |
$parsed_response = json_decode( $response['body'] );
|
|
|
|
| 77 |
// Handle response
|
| 78 |
if ( ! empty( $parsed_response->error ) ) {
|
| 79 |
-
if ( ! empty( $parsed_response->error->
|
| 80 |
-
$code = $parsed_response->error->param;
|
| 81 |
-
} elseif ( ! empty( $parsed_response->error->code ) ) {
|
| 82 |
$code = $parsed_response->error->code;
|
| 83 |
} else {
|
| 84 |
$code = 'stripe_error';
|
| 74 |
}
|
| 75 |
|
| 76 |
$parsed_response = json_decode( $response['body'] );
|
| 77 |
+
|
| 78 |
// Handle response
|
| 79 |
if ( ! empty( $parsed_response->error ) ) {
|
| 80 |
+
if ( ! empty( $parsed_response->error->code ) ) {
|
|
|
|
|
|
|
| 81 |
$code = $parsed_response->error->code;
|
| 82 |
} else {
|
| 83 |
$code = 'stripe_error';
|
includes/class-wc-stripe-apple-pay.php
CHANGED
|
@@ -17,25 +17,67 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 17 |
private static $_this;
|
| 18 |
|
| 19 |
/**
|
| 20 |
-
*
|
| 21 |
*
|
| 22 |
* @var
|
| 23 |
*/
|
| 24 |
-
|
| 25 |
|
| 26 |
/**
|
| 27 |
-
*
|
| 28 |
*
|
| 29 |
-
* @var
|
| 30 |
*/
|
| 31 |
-
public $
|
| 32 |
|
| 33 |
/**
|
| 34 |
-
*
|
| 35 |
*
|
| 36 |
-
* @var
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
*/
|
| 38 |
-
|
| 39 |
|
| 40 |
/**
|
| 41 |
* Constructor.
|
|
@@ -47,9 +89,28 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 47 |
public function __construct() {
|
| 48 |
self::$_this = $this;
|
| 49 |
|
| 50 |
-
$
|
| 51 |
|
| 52 |
-
$this->statement_descriptor = ! empty( $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
|
| 54 |
$this->init();
|
| 55 |
}
|
|
@@ -63,15 +124,20 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 63 |
*
|
| 64 |
* @access public
|
| 65 |
* @since 3.1.0
|
| 66 |
-
* @version 3.1.
|
| 67 |
*/
|
| 68 |
public function init() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
add_action( 'wp_enqueue_scripts', array( $this, 'cart_scripts' ) );
|
| 70 |
add_action( 'wp_enqueue_scripts', array( $this, 'single_scripts' ) );
|
| 71 |
|
| 72 |
/**
|
| 73 |
* In order to display the Apple Pay button in the correct position,
|
| 74 |
-
* a new hook was added to WooCommerce
|
| 75 |
* CSS is used to position the button.
|
| 76 |
*/
|
| 77 |
if ( version_compare( WC_VERSION, '3.0.0', '<' ) ) {
|
|
@@ -84,12 +150,15 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 84 |
add_action( 'woocommerce_proceed_to_checkout', array( $this, 'display_apple_pay_separator_html' ), 2 );
|
| 85 |
add_action( 'woocommerce_checkout_before_customer_details', array( $this, 'display_apple_pay_button' ), 1 );
|
| 86 |
add_action( 'woocommerce_checkout_before_customer_details', array( $this, 'display_apple_pay_separator_html' ), 2 );
|
|
|
|
| 87 |
add_action( 'wc_ajax_wc_stripe_apple_pay', array( $this, 'process_apple_pay' ) );
|
| 88 |
add_action( 'wc_ajax_wc_stripe_generate_apple_pay_cart', array( $this, 'generate_apple_pay_cart' ) );
|
|
|
|
| 89 |
add_action( 'wc_ajax_wc_stripe_generate_apple_pay_single', array( $this, 'generate_apple_pay_single' ) );
|
| 90 |
add_action( 'wc_ajax_wc_stripe_apple_pay_get_shipping_methods', array( $this, 'get_shipping_methods' ) );
|
| 91 |
add_action( 'wc_ajax_wc_stripe_apple_pay_update_shipping_method', array( $this, 'update_shipping_method' ) );
|
| 92 |
add_filter( 'woocommerce_gateway_title', array( $this, 'filter_gateway_title' ), 10, 2 );
|
|
|
|
| 93 |
}
|
| 94 |
|
| 95 |
/**
|
|
@@ -105,18 +174,61 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 105 |
|
| 106 |
$method_title = get_post_meta( $post->ID, '_payment_method_title', true );
|
| 107 |
|
| 108 |
-
if ( 'stripe' === $id && ! empty( $method_title ) ) {
|
| 109 |
return $method_title;
|
| 110 |
}
|
| 111 |
|
| 112 |
return $title;
|
| 113 |
}
|
| 114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
/**
|
| 116 |
* Enqueue JS scripts and styles for single product page.
|
| 117 |
*
|
| 118 |
* @since 3.1.0
|
| 119 |
-
* @version 3.1.
|
| 120 |
*/
|
| 121 |
public function single_scripts() {
|
| 122 |
if ( ! is_single() ) {
|
|
@@ -138,10 +250,8 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 138 |
wp_enqueue_script( 'stripe', 'https://js.stripe.com/v2/', '', '1.0', true );
|
| 139 |
wp_enqueue_script( 'woocommerce_stripe_apple_pay_single', plugins_url( 'assets/js/stripe-apple-pay-single' . $suffix . '.js', WC_STRIPE_MAIN_FILE ), array( 'stripe' ), WC_STRIPE_VERSION, true );
|
| 140 |
|
| 141 |
-
$publishable_key = 'yes' === $this->_gateway_settings['testmode'] ? $this->_gateway_settings['test_publishable_key'] : $this->_gateway_settings['publishable_key'];
|
| 142 |
-
|
| 143 |
$stripe_params = array(
|
| 144 |
-
'key' => $publishable_key,
|
| 145 |
'currency_code' => get_woocommerce_currency(),
|
| 146 |
'country_code' => substr( get_option( 'woocommerce_default_country' ), 0, 2 ),
|
| 147 |
'label' => $this->statement_descriptor,
|
|
@@ -150,7 +260,10 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 150 |
'stripe_apple_pay_cart_nonce' => wp_create_nonce( '_wc_stripe_apple_pay_cart_nonce' ),
|
| 151 |
'stripe_apple_pay_get_shipping_methods_nonce' => wp_create_nonce( '_wc_stripe_apple_pay_get_shipping_methods_nonce' ),
|
| 152 |
'stripe_apple_pay_update_shipping_method_nonce' => wp_create_nonce( '_wc_stripe_apple_pay_update_shipping_method_nonce' ),
|
| 153 |
-
'needs_shipping' =>
|
|
|
|
|
|
|
|
|
|
| 154 |
);
|
| 155 |
|
| 156 |
wp_localize_script( 'woocommerce_stripe_apple_pay_single', 'wc_stripe_apple_pay_single_params', apply_filters( 'wc_stripe_apple_pay_single_params', $stripe_params ) );
|
|
@@ -174,10 +287,8 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 174 |
wp_enqueue_script( 'stripe', 'https://js.stripe.com/v2/', '', '1.0', true );
|
| 175 |
wp_enqueue_script( 'woocommerce_stripe_apple_pay', plugins_url( 'assets/js/stripe-apple-pay' . $suffix . '.js', WC_STRIPE_MAIN_FILE ), array( 'stripe' ), WC_STRIPE_VERSION, true );
|
| 176 |
|
| 177 |
-
$publishable_key = 'yes' === $this->_gateway_settings['testmode'] ? $this->_gateway_settings['test_publishable_key'] : $this->_gateway_settings['publishable_key'];
|
| 178 |
-
|
| 179 |
$stripe_params = array(
|
| 180 |
-
'key' => $publishable_key,
|
| 181 |
'currency_code' => get_woocommerce_currency(),
|
| 182 |
'country_code' => substr( get_option( 'woocommerce_default_country' ), 0, 2 ),
|
| 183 |
'label' => $this->statement_descriptor,
|
|
@@ -196,6 +307,9 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 196 |
/**
|
| 197 |
* Checks to make sure product type is supported by Apple Pay.
|
| 198 |
*
|
|
|
|
|
|
|
|
|
|
| 199 |
*/
|
| 200 |
public function supported_product_types() {
|
| 201 |
return array(
|
|
@@ -204,6 +318,26 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 204 |
);
|
| 205 |
}
|
| 206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
/**
|
| 208 |
* Display Apple Pay button on the cart page
|
| 209 |
*
|
|
@@ -214,13 +348,11 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 214 |
$gateways = WC()->payment_gateways->get_available_payment_gateways();
|
| 215 |
|
| 216 |
/**
|
| 217 |
-
* In order for the Apple Pay button to show on
|
| 218 |
* Apple Pay must be enabled and Stripe gateway must be enabled.
|
| 219 |
*/
|
| 220 |
-
if (
|
| 221 |
-
|
| 222 |
-
|| ! isset( $gateways['stripe'] )
|
| 223 |
-
) {
|
| 224 |
return;
|
| 225 |
}
|
| 226 |
|
|
@@ -229,16 +361,19 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 229 |
|
| 230 |
$product = wc_get_product( $post->ID );
|
| 231 |
|
| 232 |
-
if ( ! in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ), $this->supported_product_types() ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 233 |
return;
|
| 234 |
}
|
| 235 |
}
|
| 236 |
|
| 237 |
-
$apple_pay_button = ! empty( $this->_gateway_settings['apple_pay_button'] ) ? $this->_gateway_settings['apple_pay_button'] : 'black';
|
| 238 |
-
$button_lang = ! empty( $this->_gateway_settings['apple_pay_button_lang'] ) ? strtolower( $this->_gateway_settings['apple_pay_button_lang'] ) : 'en';
|
| 239 |
?>
|
| 240 |
<div class="apple-pay-button-wrapper">
|
| 241 |
-
<button class="apple-pay-button" lang="<?php echo esc_attr( $
|
| 242 |
</div>
|
| 243 |
<?php
|
| 244 |
}
|
|
@@ -256,21 +391,14 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 256 |
* In order for the Apple Pay button to show on cart page,
|
| 257 |
* Apple Pay must be enabled and Stripe gateway must be enabled.
|
| 258 |
*/
|
| 259 |
-
if (
|
| 260 |
-
|
| 261 |
-
|| ! isset( $gateways['stripe'] )
|
| 262 |
-
) {
|
| 263 |
return;
|
| 264 |
}
|
| 265 |
|
| 266 |
-
if (
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
$product = wc_get_product( $post->ID );
|
| 270 |
-
|
| 271 |
-
if ( ! in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ), $this->supported_product_types() ) ) {
|
| 272 |
-
return;
|
| 273 |
-
}
|
| 274 |
}
|
| 275 |
?>
|
| 276 |
<p class="apple-pay-button-checkout-separator">- <?php esc_html_e( 'Or', 'woocommerce-gateway-stripe' ); ?> -</p>
|
|
@@ -297,7 +425,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 297 |
global $post;
|
| 298 |
|
| 299 |
$product = wc_get_product( $post->ID );
|
| 300 |
-
$qty = absint( $_POST['qty'] );
|
| 301 |
|
| 302 |
/**
|
| 303 |
* If this page is single product page, we need to simulate
|
|
@@ -311,7 +439,12 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 311 |
if ( 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ) && isset( $_POST['attributes'] ) ) {
|
| 312 |
$attributes = array_map( 'wc_clean', $_POST['attributes'] );
|
| 313 |
|
| 314 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 315 |
|
| 316 |
WC()->cart->add_to_cart( $product->get_id(), $qty, $variation_id, $attributes );
|
| 317 |
}
|
|
@@ -340,6 +473,17 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 340 |
wp_send_json( array( 'line_items' => $this->build_line_items(), 'total' => WC()->cart->total ) );
|
| 341 |
}
|
| 342 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 343 |
/**
|
| 344 |
* Calculate and set shipping method.
|
| 345 |
*
|
|
@@ -540,7 +684,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 540 |
return new WP_Error( 'stripe_error', sprintf( __( 'Sorry, the minimum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe' ), wc_price( WC_Stripe::get_minimum_amount() / 100 ) ) );
|
| 541 |
}
|
| 542 |
|
| 543 |
-
|
| 544 |
|
| 545 |
// Make the request.
|
| 546 |
$response = WC_Stripe_API::request( $this->generate_payment_request( $order, $result['token']['id'] ) );
|
|
@@ -561,7 +705,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 561 |
WC()->cart->empty_cart();
|
| 562 |
|
| 563 |
update_post_meta( $order_id, '_customer_user', get_current_user_id() );
|
| 564 |
-
update_post_meta( $order_id, '_payment_method_title',
|
| 565 |
|
| 566 |
// Return thank you page redirect.
|
| 567 |
wp_send_json( array(
|
|
@@ -571,7 +715,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 571 |
|
| 572 |
} catch ( Exception $e ) {
|
| 573 |
WC()->session->set( 'refresh_totals', true );
|
| 574 |
-
|
| 575 |
|
| 576 |
if ( is_object( $order ) && isset( $order_id ) && $order->has_status( array( 'pending', 'failed' ) ) ) {
|
| 577 |
$this->send_failed_order_email( $order_id );
|
|
@@ -592,7 +736,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 592 |
$post_data['currency'] = strtolower( version_compare( WC_VERSION, '3.0.0', '<' ) ? $order->get_order_currency() : $order->get_currency() );
|
| 593 |
$post_data['amount'] = $this->get_stripe_amount( $order->get_total(), $post_data['currency'] );
|
| 594 |
$post_data['description'] = sprintf( __( '%1$s - Order %2$s', 'woocommerce-gateway-stripe' ), $this->statement_descriptor, $order->get_order_number() );
|
| 595 |
-
$post_data['capture'] =
|
| 596 |
|
| 597 |
$billing_email = version_compare( WC_VERSION, '3.0.0', '<' ) ? $order->billing_email : $order->get_billing_email();
|
| 598 |
|
|
@@ -655,14 +799,14 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 655 |
$items = array();
|
| 656 |
$subtotal = 0;
|
| 657 |
|
| 658 |
-
foreach ( WC()->cart->get_cart() as $cart_item_key => $
|
| 659 |
-
$amount = wc_format_decimal( $
|
| 660 |
-
$subtotal += $
|
| 661 |
-
$quantity_label = 1 < $
|
| 662 |
|
| 663 |
$item = array(
|
| 664 |
'type' => 'final',
|
| 665 |
-
'label' => $
|
| 666 |
'amount' => wc_format_decimal( $amount, $decimals ),
|
| 667 |
);
|
| 668 |
|
|
@@ -674,7 +818,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 674 |
$items = array();
|
| 675 |
$items[] = array(
|
| 676 |
'type' => 'final',
|
| 677 |
-
'label' => __( 'Sub-Total', 'woocommerce-gateway-stripe' ),
|
| 678 |
'amount' => wc_format_decimal( $subtotal, $decimals ),
|
| 679 |
);
|
| 680 |
}
|
|
@@ -688,7 +832,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 688 |
if ( wc_tax_enabled() ) {
|
| 689 |
$items[] = array(
|
| 690 |
'type' => 'final',
|
| 691 |
-
'label' => __( 'Tax', 'woocommerce-gateway-stripe' ),
|
| 692 |
'amount' => $tax,
|
| 693 |
);
|
| 694 |
}
|
|
@@ -696,7 +840,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 696 |
if ( WC()->cart->needs_shipping() ) {
|
| 697 |
$items[] = array(
|
| 698 |
'type' => 'final',
|
| 699 |
-
'label' => __( 'Shipping', 'woocommerce-gateway-stripe' ),
|
| 700 |
'amount' => $shipping,
|
| 701 |
);
|
| 702 |
}
|
|
@@ -704,7 +848,7 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 704 |
if ( WC()->cart->has_discount() ) {
|
| 705 |
$items[] = array(
|
| 706 |
'type' => 'final',
|
| 707 |
-
'label' => __( 'Discount', 'woocommerce-gateway-stripe' ),
|
| 708 |
'amount' => '-' . $discounts,
|
| 709 |
);
|
| 710 |
}
|
|
@@ -758,31 +902,90 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 758 |
}
|
| 759 |
|
| 760 |
// Allow plugins to add order item meta
|
| 761 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 762 |
}
|
| 763 |
|
| 764 |
// Store fees
|
| 765 |
foreach ( WC()->cart->get_fees() as $fee_key => $fee ) {
|
| 766 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 767 |
|
| 768 |
if ( ! $item_id ) {
|
| 769 |
throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce-gateway-stripe' ), 526 ) );
|
| 770 |
}
|
| 771 |
|
| 772 |
// Allow plugins to add order item meta to fees
|
| 773 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 774 |
}
|
| 775 |
|
| 776 |
// Store tax rows
|
| 777 |
foreach ( array_keys( WC()->cart->taxes + WC()->cart->shipping_taxes ) as $tax_rate_id ) {
|
| 778 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 779 |
throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce-gateway-stripe' ), 528 ) );
|
| 780 |
}
|
| 781 |
}
|
| 782 |
|
| 783 |
// Store coupons
|
|
|
|
|
|
|
|
|
|
| 784 |
foreach ( WC()->cart->get_coupons() as $code => $coupon ) {
|
| 785 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 786 |
throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce-gateway-stripe' ), 529 ) );
|
| 787 |
}
|
| 788 |
}
|
|
@@ -843,7 +1046,23 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 843 |
// Loop through user chosen shipping methods.
|
| 844 |
foreach ( WC()->session->get( 'chosen_shipping_methods' ) as $method ) {
|
| 845 |
if ( $method === $key ) {
|
| 846 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 847 |
}
|
| 848 |
}
|
| 849 |
}
|
|
@@ -863,6 +1082,20 @@ class WC_Stripe_Apple_Pay extends WC_Gateway_Stripe {
|
|
| 863 |
|
| 864 |
return $order;
|
| 865 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 866 |
}
|
| 867 |
|
| 868 |
new WC_Stripe_Apple_Pay();
|
| 17 |
private static $_this;
|
| 18 |
|
| 19 |
/**
|
| 20 |
+
* Statement Description
|
| 21 |
*
|
| 22 |
* @var
|
| 23 |
*/
|
| 24 |
+
public $statement_descriptor;
|
| 25 |
|
| 26 |
/**
|
| 27 |
+
* Check if we capture the transaction immediately.
|
| 28 |
*
|
| 29 |
+
* @var bool
|
| 30 |
*/
|
| 31 |
+
public $capture;
|
| 32 |
|
| 33 |
/**
|
| 34 |
+
* Do we accept Apple Pay?
|
| 35 |
*
|
| 36 |
+
* @var bool
|
| 37 |
+
*/
|
| 38 |
+
public $apple_pay;
|
| 39 |
+
|
| 40 |
+
/**
|
| 41 |
+
* Apple Pay button style.
|
| 42 |
+
*
|
| 43 |
+
* @var bool
|
| 44 |
+
*/
|
| 45 |
+
public $apple_pay_button;
|
| 46 |
+
|
| 47 |
+
/**
|
| 48 |
+
* Apple Pay button language.
|
| 49 |
+
*
|
| 50 |
+
* @var bool
|
| 51 |
+
*/
|
| 52 |
+
public $apple_pay_button_lang;
|
| 53 |
+
|
| 54 |
+
/**
|
| 55 |
+
* Is test mode active?
|
| 56 |
+
*
|
| 57 |
+
* @var bool
|
| 58 |
+
*/
|
| 59 |
+
public $testmode;
|
| 60 |
+
|
| 61 |
+
/**
|
| 62 |
+
* Logging enabled?
|
| 63 |
+
*
|
| 64 |
+
* @var bool
|
| 65 |
+
*/
|
| 66 |
+
public $logging;
|
| 67 |
+
|
| 68 |
+
/**
|
| 69 |
+
* Should we store the users credit cards?
|
| 70 |
+
*
|
| 71 |
+
* @var bool
|
| 72 |
+
*/
|
| 73 |
+
public $saved_cards;
|
| 74 |
+
|
| 75 |
+
/**
|
| 76 |
+
* Publishable key credentials.
|
| 77 |
+
*
|
| 78 |
+
* @var bool
|
| 79 |
*/
|
| 80 |
+
public $publishable_key;
|
| 81 |
|
| 82 |
/**
|
| 83 |
* Constructor.
|
| 89 |
public function __construct() {
|
| 90 |
self::$_this = $this;
|
| 91 |
|
| 92 |
+
$gateway_settings = get_option( 'woocommerce_stripe_settings', '' );
|
| 93 |
|
| 94 |
+
$this->statement_descriptor = ! empty( $gateway_settings['statement_descriptor'] ) ? $gateway_settings['statement_descriptor'] : wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES );
|
| 95 |
+
|
| 96 |
+
// If both site title and statement descriptor is not set. Fallback.
|
| 97 |
+
if ( empty( $this->statement_descriptor ) ) {
|
| 98 |
+
$this->statement_descriptor = $_SERVER['SERVER_NAME'];
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
$this->enabled = ( ! empty( $gateway_settings['enabled'] ) && 'yes' === $gateway_settings['enabled'] ) ? true : false;
|
| 102 |
+
$this->testmode = ( ! empty( $gateway_settings['testmode'] ) && 'yes' === $gateway_settings['testmode'] ) ? true : false;
|
| 103 |
+
$this->capture = ( ! empty( $gateway_settings['capture'] ) && 'yes' === $gateway_settings['capture'] ) ? true : false;
|
| 104 |
+
$this->saved_cards = ( ! empty( $gateway_settings['saved_cards'] ) && 'yes' === $gateway_settings['saved_cards'] ) ? true : false;
|
| 105 |
+
$this->apple_pay = ( ! empty( $gateway_settings['apple_pay'] ) && 'yes' === $gateway_settings['apple_pay'] ) ? true : false;
|
| 106 |
+
$this->apple_pay_button = ! empty( $gateway_settings['apple_pay_button'] ) ? $gateway_settings['apple_pay_button'] : 'black';
|
| 107 |
+
$this->apple_pay_button_lang = ! empty( $gateway_settings['apple_pay_button_lang'] ) ? $gateway_settings['apple_pay_button_lang'] : 'en';
|
| 108 |
+
$this->logging = ( ! empty( $gateway_settings['logging'] ) && 'yes' === $gateway_settings['logging'] ) ? true : false;
|
| 109 |
+
$this->publishable_key = ! empty( $gateway_settings['publishable_key'] ) ? $gateway_settings['publishable_key'] : '';
|
| 110 |
+
|
| 111 |
+
if ( $this->testmode ) {
|
| 112 |
+
$this->publishable_key = ! empty( $gateway_settings['test_publishable_key'] ) ? $gateway_settings['test_publishable_key'] : '';
|
| 113 |
+
}
|
| 114 |
|
| 115 |
$this->init();
|
| 116 |
}
|
| 124 |
*
|
| 125 |
* @access public
|
| 126 |
* @since 3.1.0
|
| 127 |
+
* @version 3.1.4
|
| 128 |
*/
|
| 129 |
public function init() {
|
| 130 |
+
// If Apple Pay is not enabled no need to proceed further.
|
| 131 |
+
if ( ! $this->apple_pay ) {
|
| 132 |
+
return;
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
add_action( 'wp_enqueue_scripts', array( $this, 'cart_scripts' ) );
|
| 136 |
add_action( 'wp_enqueue_scripts', array( $this, 'single_scripts' ) );
|
| 137 |
|
| 138 |
/**
|
| 139 |
* In order to display the Apple Pay button in the correct position,
|
| 140 |
+
* a new hook was added to WooCommerce 3.0. In older versions of WooCommerce,
|
| 141 |
* CSS is used to position the button.
|
| 142 |
*/
|
| 143 |
if ( version_compare( WC_VERSION, '3.0.0', '<' ) ) {
|
| 150 |
add_action( 'woocommerce_proceed_to_checkout', array( $this, 'display_apple_pay_separator_html' ), 2 );
|
| 151 |
add_action( 'woocommerce_checkout_before_customer_details', array( $this, 'display_apple_pay_button' ), 1 );
|
| 152 |
add_action( 'woocommerce_checkout_before_customer_details', array( $this, 'display_apple_pay_separator_html' ), 2 );
|
| 153 |
+
add_action( 'wc_ajax_wc_stripe_log_apple_pay_errors', array( $this, 'log_apple_pay_errors' ) );
|
| 154 |
add_action( 'wc_ajax_wc_stripe_apple_pay', array( $this, 'process_apple_pay' ) );
|
| 155 |
add_action( 'wc_ajax_wc_stripe_generate_apple_pay_cart', array( $this, 'generate_apple_pay_cart' ) );
|
| 156 |
+
add_action( 'wc_ajax_wc_stripe_apple_pay_clear_cart', array( $this, 'clear_cart' ) );
|
| 157 |
add_action( 'wc_ajax_wc_stripe_generate_apple_pay_single', array( $this, 'generate_apple_pay_single' ) );
|
| 158 |
add_action( 'wc_ajax_wc_stripe_apple_pay_get_shipping_methods', array( $this, 'get_shipping_methods' ) );
|
| 159 |
add_action( 'wc_ajax_wc_stripe_apple_pay_update_shipping_method', array( $this, 'update_shipping_method' ) );
|
| 160 |
add_filter( 'woocommerce_gateway_title', array( $this, 'filter_gateway_title' ), 10, 2 );
|
| 161 |
+
add_filter( 'woocommerce_validate_postcode', array( $this, 'postal_code_validation' ), 10, 3 );
|
| 162 |
}
|
| 163 |
|
| 164 |
/**
|
| 174 |
|
| 175 |
$method_title = get_post_meta( $post->ID, '_payment_method_title', true );
|
| 176 |
|
| 177 |
+
if ( 'stripe' === $id && ! empty( $method_title ) && 'Apple Pay (Stripe)' === $method_title ) {
|
| 178 |
return $method_title;
|
| 179 |
}
|
| 180 |
|
| 181 |
return $title;
|
| 182 |
}
|
| 183 |
|
| 184 |
+
/**
|
| 185 |
+
* Log errors coming from Apple Pay.
|
| 186 |
+
*
|
| 187 |
+
* @since 3.1.4
|
| 188 |
+
* @version 3.1.4
|
| 189 |
+
*/
|
| 190 |
+
public function log_apple_pay_errors() {
|
| 191 |
+
if ( ! wp_verify_nonce( $_POST['nonce'], '_wc_stripe_apple_pay_nonce' ) && ! wp_verify_nonce( $_POST['nonce'], '_wc_stripe_apple_pay_cart_nonce' ) ) {
|
| 192 |
+
wp_die( __( 'Cheatin’ huh?', 'woocommerce-gateway-stripe' ) );
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
$errors = wc_clean( stripslashes( $_POST['errors'] ) );
|
| 196 |
+
|
| 197 |
+
$this->log( $errors );
|
| 198 |
+
|
| 199 |
+
exit;
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
/**
|
| 203 |
+
* Removes postal code validation from WC.
|
| 204 |
+
*
|
| 205 |
+
* @since 3.1.4
|
| 206 |
+
* @version 3.1.4
|
| 207 |
+
*/
|
| 208 |
+
public function postal_code_validation( $valid, $postcode, $country ) {
|
| 209 |
+
$gateways = WC()->payment_gateways->get_available_payment_gateways();
|
| 210 |
+
|
| 211 |
+
if ( ! $this->apple_pay || ! isset( $gateways['stripe'] ) ) {
|
| 212 |
+
return $valid;
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
/**
|
| 216 |
+
* Currently Apple Pay truncates postal codes from UK and Canada to first 3 characters
|
| 217 |
+
* when passing it back from the shippingcontactselected object. This causes WC to invalidate
|
| 218 |
+
* the order and not let it go through. The remedy for now is just to remove this validation.
|
| 219 |
+
*/
|
| 220 |
+
if ( 'GB' === $country || 'CA' === $country ) {
|
| 221 |
+
return true;
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
return $valid;
|
| 225 |
+
}
|
| 226 |
+
|
| 227 |
/**
|
| 228 |
* Enqueue JS scripts and styles for single product page.
|
| 229 |
*
|
| 230 |
* @since 3.1.0
|
| 231 |
+
* @version 3.1.4
|
| 232 |
*/
|
| 233 |
public function single_scripts() {
|
| 234 |
if ( ! is_single() ) {
|
| 250 |
wp_enqueue_script( 'stripe', 'https://js.stripe.com/v2/', '', '1.0', true );
|
| 251 |
wp_enqueue_script( 'woocommerce_stripe_apple_pay_single', plugins_url( 'assets/js/stripe-apple-pay-single' . $suffix . '.js', WC_STRIPE_MAIN_FILE ), array( 'stripe' ), WC_STRIPE_VERSION, true );
|
| 252 |
|
|
|
|
|
|
|
| 253 |
$stripe_params = array(
|
| 254 |
+
'key' => $this->publishable_key,
|
| 255 |
'currency_code' => get_woocommerce_currency(),
|
| 256 |
'country_code' => substr( get_option( 'woocommerce_default_country' ), 0, 2 ),
|
| 257 |
'label' => $this->statement_descriptor,
|
| 260 |
'stripe_apple_pay_cart_nonce' => wp_create_nonce( '_wc_stripe_apple_pay_cart_nonce' ),
|
| 261 |
'stripe_apple_pay_get_shipping_methods_nonce' => wp_create_nonce( '_wc_stripe_apple_pay_get_shipping_methods_nonce' ),
|
| 262 |
'stripe_apple_pay_update_shipping_method_nonce' => wp_create_nonce( '_wc_stripe_apple_pay_update_shipping_method_nonce' ),
|
| 263 |
+
'needs_shipping' => $product->needs_shipping() ? 'yes' : 'no',
|
| 264 |
+
'i18n' => array(
|
| 265 |
+
'sub_total' => __( 'Sub-Total', 'woocommerce-gateway-stripe' ),
|
| 266 |
+
),
|
| 267 |
);
|
| 268 |
|
| 269 |
wp_localize_script( 'woocommerce_stripe_apple_pay_single', 'wc_stripe_apple_pay_single_params', apply_filters( 'wc_stripe_apple_pay_single_params', $stripe_params ) );
|
| 287 |
wp_enqueue_script( 'stripe', 'https://js.stripe.com/v2/', '', '1.0', true );
|
| 288 |
wp_enqueue_script( 'woocommerce_stripe_apple_pay', plugins_url( 'assets/js/stripe-apple-pay' . $suffix . '.js', WC_STRIPE_MAIN_FILE ), array( 'stripe' ), WC_STRIPE_VERSION, true );
|
| 289 |
|
|
|
|
|
|
|
| 290 |
$stripe_params = array(
|
| 291 |
+
'key' => $this->publishable_key,
|
| 292 |
'currency_code' => get_woocommerce_currency(),
|
| 293 |
'country_code' => substr( get_option( 'woocommerce_default_country' ), 0, 2 ),
|
| 294 |
'label' => $this->statement_descriptor,
|
| 307 |
/**
|
| 308 |
* Checks to make sure product type is supported by Apple Pay.
|
| 309 |
*
|
| 310 |
+
* @since 3.1.0
|
| 311 |
+
* @version 3.1.0
|
| 312 |
+
* @return array
|
| 313 |
*/
|
| 314 |
public function supported_product_types() {
|
| 315 |
return array(
|
| 318 |
);
|
| 319 |
}
|
| 320 |
|
| 321 |
+
/**
|
| 322 |
+
* Checks the cart to see if all items are allowed to use
|
| 323 |
+
* Apple Pay.
|
| 324 |
+
*
|
| 325 |
+
* @since 3.1.4
|
| 326 |
+
* @version 3.1.4
|
| 327 |
+
* @return bool
|
| 328 |
+
*/
|
| 329 |
+
public function allowed_items_in_cart() {
|
| 330 |
+
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
|
| 331 |
+
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
|
| 332 |
+
|
| 333 |
+
if ( ! in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $_product->product_type : $_product->get_type() ), $this->supported_product_types() ) ) {
|
| 334 |
+
return false;
|
| 335 |
+
}
|
| 336 |
+
}
|
| 337 |
+
|
| 338 |
+
return true;
|
| 339 |
+
}
|
| 340 |
+
|
| 341 |
/**
|
| 342 |
* Display Apple Pay button on the cart page
|
| 343 |
*
|
| 348 |
$gateways = WC()->payment_gateways->get_available_payment_gateways();
|
| 349 |
|
| 350 |
/**
|
| 351 |
+
* In order for the Apple Pay button to show on product detail page,
|
| 352 |
* Apple Pay must be enabled and Stripe gateway must be enabled.
|
| 353 |
*/
|
| 354 |
+
if ( ! $this->apple_pay || ! isset( $gateways['stripe'] ) ) {
|
| 355 |
+
$this->log( 'Apple Pay not enabled or Stripe is not an available gateway ( Apple Pay button disabled )' );
|
|
|
|
|
|
|
| 356 |
return;
|
| 357 |
}
|
| 358 |
|
| 361 |
|
| 362 |
$product = wc_get_product( $post->ID );
|
| 363 |
|
| 364 |
+
if ( ! is_object( $product ) || ! in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ), $this->supported_product_types() ) ) {
|
| 365 |
+
return;
|
| 366 |
+
}
|
| 367 |
+
} else {
|
| 368 |
+
if ( ! $this->allowed_items_in_cart() ) {
|
| 369 |
+
$this->log( 'Items in the cart has unsupported product type ( Apple Pay button disabled )' );
|
| 370 |
return;
|
| 371 |
}
|
| 372 |
}
|
| 373 |
|
|
|
|
|
|
|
| 374 |
?>
|
| 375 |
<div class="apple-pay-button-wrapper">
|
| 376 |
+
<button class="apple-pay-button" lang="<?php echo esc_attr( $this->apple_pay_button_lang ); ?>" style="-webkit-appearance: -apple-pay-button; -apple-pay-button-type: buy; -apple-pay-button-style: <?php echo esc_attr( $this->apple_pay_button ); ?>;"></button>
|
| 377 |
</div>
|
| 378 |
<?php
|
| 379 |
}
|
| 391 |
* In order for the Apple Pay button to show on cart page,
|
| 392 |
* Apple Pay must be enabled and Stripe gateway must be enabled.
|
| 393 |
*/
|
| 394 |
+
if ( ! $this->apple_pay || ! isset( $gateways['stripe'] ) ) {
|
| 395 |
+
$this->log( 'Apple Pay not enabled or Stripe is not an available gateway ( Apple Pay button disabled )' );
|
|
|
|
|
|
|
| 396 |
return;
|
| 397 |
}
|
| 398 |
|
| 399 |
+
if ( ! $this->allowed_items_in_cart() ) {
|
| 400 |
+
$this->log( 'Items in the cart has unsupported product type ( Apple Pay button disabled )' );
|
| 401 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 402 |
}
|
| 403 |
?>
|
| 404 |
<p class="apple-pay-button-checkout-separator">- <?php esc_html_e( 'Or', 'woocommerce-gateway-stripe' ); ?> -</p>
|
| 425 |
global $post;
|
| 426 |
|
| 427 |
$product = wc_get_product( $post->ID );
|
| 428 |
+
$qty = ! isset( $_POST['qty'] ) ? 1 : absint( $_POST['qty'] );
|
| 429 |
|
| 430 |
/**
|
| 431 |
* If this page is single product page, we need to simulate
|
| 439 |
if ( 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ) && isset( $_POST['attributes'] ) ) {
|
| 440 |
$attributes = array_map( 'wc_clean', $_POST['attributes'] );
|
| 441 |
|
| 442 |
+
if ( version_compare( WC_VERSION, '3.0.0', '<' ) ) {
|
| 443 |
+
$variation_id = $product->get_matching_variation( $attributes );
|
| 444 |
+
} else {
|
| 445 |
+
$data_store = WC_Data_Store::load( 'product' );
|
| 446 |
+
$variation_id = $data_store->find_matching_product_variation( $product, $attributes );
|
| 447 |
+
}
|
| 448 |
|
| 449 |
WC()->cart->add_to_cart( $product->get_id(), $qty, $variation_id, $attributes );
|
| 450 |
}
|
| 473 |
wp_send_json( array( 'line_items' => $this->build_line_items(), 'total' => WC()->cart->total ) );
|
| 474 |
}
|
| 475 |
|
| 476 |
+
/**
|
| 477 |
+
* Clears Apple Pay cart.
|
| 478 |
+
*
|
| 479 |
+
* @since 3.1.4
|
| 480 |
+
* @version 3.1.4
|
| 481 |
+
*/
|
| 482 |
+
public function clear_cart() {
|
| 483 |
+
WC()->cart->empty_cart();
|
| 484 |
+
exit;
|
| 485 |
+
}
|
| 486 |
+
|
| 487 |
/**
|
| 488 |
* Calculate and set shipping method.
|
| 489 |
*
|
| 684 |
return new WP_Error( 'stripe_error', sprintf( __( 'Sorry, the minimum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe' ), wc_price( WC_Stripe::get_minimum_amount() / 100 ) ) );
|
| 685 |
}
|
| 686 |
|
| 687 |
+
$this->log( "Info: Begin processing payment for order {$order_id} for the amount of {$order->get_total()}" );
|
| 688 |
|
| 689 |
// Make the request.
|
| 690 |
$response = WC_Stripe_API::request( $this->generate_payment_request( $order, $result['token']['id'] ) );
|
| 705 |
WC()->cart->empty_cart();
|
| 706 |
|
| 707 |
update_post_meta( $order_id, '_customer_user', get_current_user_id() );
|
| 708 |
+
update_post_meta( $order_id, '_payment_method_title', 'Apple Pay (Stripe)' );
|
| 709 |
|
| 710 |
// Return thank you page redirect.
|
| 711 |
wp_send_json( array(
|
| 715 |
|
| 716 |
} catch ( Exception $e ) {
|
| 717 |
WC()->session->set( 'refresh_totals', true );
|
| 718 |
+
$this->log( sprintf( __( 'Error: %s', 'woocommerce-gateway-stripe' ), $e->getMessage() ) );
|
| 719 |
|
| 720 |
if ( is_object( $order ) && isset( $order_id ) && $order->has_status( array( 'pending', 'failed' ) ) ) {
|
| 721 |
$this->send_failed_order_email( $order_id );
|
| 736 |
$post_data['currency'] = strtolower( version_compare( WC_VERSION, '3.0.0', '<' ) ? $order->get_order_currency() : $order->get_currency() );
|
| 737 |
$post_data['amount'] = $this->get_stripe_amount( $order->get_total(), $post_data['currency'] );
|
| 738 |
$post_data['description'] = sprintf( __( '%1$s - Order %2$s', 'woocommerce-gateway-stripe' ), $this->statement_descriptor, $order->get_order_number() );
|
| 739 |
+
$post_data['capture'] = $this->capture ? 'true' : 'false';
|
| 740 |
|
| 741 |
$billing_email = version_compare( WC_VERSION, '3.0.0', '<' ) ? $order->billing_email : $order->get_billing_email();
|
| 742 |
|
| 799 |
$items = array();
|
| 800 |
$subtotal = 0;
|
| 801 |
|
| 802 |
+
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
|
| 803 |
+
$amount = wc_format_decimal( $cart_item['line_subtotal'], $decimals );
|
| 804 |
+
$subtotal += $cart_item['line_subtotal'];
|
| 805 |
+
$quantity_label = 1 < $cart_item['quantity'] ? ' (x' . $cart_item['quantity'] . ')' : '';
|
| 806 |
|
| 807 |
$item = array(
|
| 808 |
'type' => 'final',
|
| 809 |
+
'label' => $cart_item['data']->post->post_title . $quantity_label,
|
| 810 |
'amount' => wc_format_decimal( $amount, $decimals ),
|
| 811 |
);
|
| 812 |
|
| 818 |
$items = array();
|
| 819 |
$items[] = array(
|
| 820 |
'type' => 'final',
|
| 821 |
+
'label' => esc_html( __( 'Sub-Total', 'woocommerce-gateway-stripe' ) ),
|
| 822 |
'amount' => wc_format_decimal( $subtotal, $decimals ),
|
| 823 |
);
|
| 824 |
}
|
| 832 |
if ( wc_tax_enabled() ) {
|
| 833 |
$items[] = array(
|
| 834 |
'type' => 'final',
|
| 835 |
+
'label' => esc_html( __( 'Tax', 'woocommerce-gateway-stripe' ) ),
|
| 836 |
'amount' => $tax,
|
| 837 |
);
|
| 838 |
}
|
| 840 |
if ( WC()->cart->needs_shipping() ) {
|
| 841 |
$items[] = array(
|
| 842 |
'type' => 'final',
|
| 843 |
+
'label' => esc_html( __( 'Shipping', 'woocommerce-gateway-stripe' ) ),
|
| 844 |
'amount' => $shipping,
|
| 845 |
);
|
| 846 |
}
|
| 848 |
if ( WC()->cart->has_discount() ) {
|
| 849 |
$items[] = array(
|
| 850 |
'type' => 'final',
|
| 851 |
+
'label' => esc_html( __( 'Discount', 'woocommerce-gateway-stripe' ) ),
|
| 852 |
'amount' => '-' . $discounts,
|
| 853 |
);
|
| 854 |
}
|
| 902 |
}
|
| 903 |
|
| 904 |
// Allow plugins to add order item meta
|
| 905 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
| 906 |
+
do_action( 'woocommerce_add_order_item_meta', $item_id, $values, $cart_item_key );
|
| 907 |
+
} else {
|
| 908 |
+
do_action( 'woocommerce_new_order_item', $item_id, wc_get_product( $item_id ), $order->get_id() );
|
| 909 |
+
}
|
| 910 |
}
|
| 911 |
|
| 912 |
// Store fees
|
| 913 |
foreach ( WC()->cart->get_fees() as $fee_key => $fee ) {
|
| 914 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
| 915 |
+
$item_id = $order->add_fee( $fee );
|
| 916 |
+
} else {
|
| 917 |
+
$item = new WC_Order_Item_Fee();
|
| 918 |
+
$item->set_props( array(
|
| 919 |
+
'name' => $fee->name,
|
| 920 |
+
'tax_class' => $fee->taxable ? $fee->tax_class : 0,
|
| 921 |
+
'total' => $fee->amount,
|
| 922 |
+
'total_tax' => $fee->tax,
|
| 923 |
+
'taxes' => array(
|
| 924 |
+
'total' => $fee->tax_data,
|
| 925 |
+
),
|
| 926 |
+
'order_id' => $order->get_id(),
|
| 927 |
+
) );
|
| 928 |
+
$item_id = $item->save();
|
| 929 |
+
$order->add_item( $item );
|
| 930 |
+
}
|
| 931 |
|
| 932 |
if ( ! $item_id ) {
|
| 933 |
throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce-gateway-stripe' ), 526 ) );
|
| 934 |
}
|
| 935 |
|
| 936 |
// Allow plugins to add order item meta to fees
|
| 937 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
| 938 |
+
do_action( 'woocommerce_add_order_fee_meta', $order_id, $item_id, $fee, $fee_key );
|
| 939 |
+
} else {
|
| 940 |
+
do_action( 'woocommerce_new_order_item', $item_id, $fee, $order->get_id() );
|
| 941 |
+
}
|
| 942 |
}
|
| 943 |
|
| 944 |
// Store tax rows
|
| 945 |
foreach ( array_keys( WC()->cart->taxes + WC()->cart->shipping_taxes ) as $tax_rate_id ) {
|
| 946 |
+
$tax_amount = WC()->cart->get_tax_amount( $tax_rate_id );
|
| 947 |
+
$shipping_tax_amount = WC()->cart->get_shipping_tax_amount( $tax_rate_id );
|
| 948 |
+
|
| 949 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
| 950 |
+
$item_id = $order->add_tax( $tax_rate_id, $tax_amount, $shipping_tax_amount );
|
| 951 |
+
} else {
|
| 952 |
+
$item = new WC_Order_Item_Tax();
|
| 953 |
+
$item->set_props( array(
|
| 954 |
+
'rate_id' => $tax_rate_id,
|
| 955 |
+
'tax_total' => $tax_amount,
|
| 956 |
+
'shipping_tax_total' => $shipping_tax_amount,
|
| 957 |
+
) );
|
| 958 |
+
$item->set_rate( $tax_rate_id );
|
| 959 |
+
$item->set_order_id( $order->get_id() );
|
| 960 |
+
$item_id = $item->save();
|
| 961 |
+
$order->add_item( $item );
|
| 962 |
+
}
|
| 963 |
+
|
| 964 |
+
if ( $tax_rate_id && ! $item_id && apply_filters( 'woocommerce_cart_remove_taxes_zero_rate_id', 'zero-rated' ) !== $tax_rate_id ) {
|
| 965 |
throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce-gateway-stripe' ), 528 ) );
|
| 966 |
}
|
| 967 |
}
|
| 968 |
|
| 969 |
// Store coupons
|
| 970 |
+
$discount = WC()->cart->get_coupon_discount_amount( $code );
|
| 971 |
+
$discount_tax = WC()->cart->get_coupon_discount_tax_amount( $code );
|
| 972 |
+
|
| 973 |
foreach ( WC()->cart->get_coupons() as $code => $coupon ) {
|
| 974 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
| 975 |
+
$coupon_id = $order->add_coupon( $code, $discount, $discount_tax );
|
| 976 |
+
} else {
|
| 977 |
+
$item = new WC_Order_Item_Coupon();
|
| 978 |
+
$item->set_props( array(
|
| 979 |
+
'code' => $code,
|
| 980 |
+
'discount' => $discount,
|
| 981 |
+
'discount_tax' => $discount_tax,
|
| 982 |
+
'order_id' => $order->get_id(),
|
| 983 |
+
) );
|
| 984 |
+
$coupon_id = $item->save();
|
| 985 |
+
$order->add_item( $item );
|
| 986 |
+
}
|
| 987 |
+
|
| 988 |
+
if ( ! $coupon_id ) {
|
| 989 |
throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce-gateway-stripe' ), 529 ) );
|
| 990 |
}
|
| 991 |
}
|
| 1046 |
// Loop through user chosen shipping methods.
|
| 1047 |
foreach ( WC()->session->get( 'chosen_shipping_methods' ) as $method ) {
|
| 1048 |
if ( $method === $key ) {
|
| 1049 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
| 1050 |
+
$order->add_shipping( $rate );
|
| 1051 |
+
} else {
|
| 1052 |
+
$item = new WC_Order_Item_Shipping();
|
| 1053 |
+
$item->set_props( array(
|
| 1054 |
+
'method_title' => $rate->label,
|
| 1055 |
+
'method_id' => $rate->id,
|
| 1056 |
+
'total' => wc_format_decimal( $rate->cost ),
|
| 1057 |
+
'taxes' => $rate->taxes,
|
| 1058 |
+
'order_id' => $order->get_id(),
|
| 1059 |
+
) );
|
| 1060 |
+
foreach ( $rate->get_meta_data() as $key => $value ) {
|
| 1061 |
+
$item->add_meta_data( $key, $value, true );
|
| 1062 |
+
}
|
| 1063 |
+
$item->save();
|
| 1064 |
+
$order->add_item( $item );
|
| 1065 |
+
}
|
| 1066 |
}
|
| 1067 |
}
|
| 1068 |
}
|
| 1082 |
|
| 1083 |
return $order;
|
| 1084 |
}
|
| 1085 |
+
|
| 1086 |
+
/**
|
| 1087 |
+
* Logs
|
| 1088 |
+
*
|
| 1089 |
+
* @since 3.1.0
|
| 1090 |
+
* @version 3.1.0
|
| 1091 |
+
*
|
| 1092 |
+
* @param string $message
|
| 1093 |
+
*/
|
| 1094 |
+
public function log( $message ) {
|
| 1095 |
+
if ( $this->logging ) {
|
| 1096 |
+
WC_Stripe::log( 'Apple Pay: ' . $message );
|
| 1097 |
+
}
|
| 1098 |
+
}
|
| 1099 |
}
|
| 1100 |
|
| 1101 |
new WC_Stripe_Apple_Pay();
|
includes/settings-stripe.php
CHANGED
|
@@ -85,14 +85,6 @@ return apply_filters( 'wc_stripe_settings',
|
|
| 85 |
'default' => 'no',
|
| 86 |
'desc_tip' => true,
|
| 87 |
),
|
| 88 |
-
'allow_remember_me' => array(
|
| 89 |
-
'title' => __( 'Allow Remember Me', 'woocommerce-gateway-stripe' ),
|
| 90 |
-
'label' => __( 'Enable Remember Me', 'woocommerce-gateway-stripe' ),
|
| 91 |
-
'type' => 'checkbox',
|
| 92 |
-
'description' => __( 'If enabled, this option shows a "Remember Me" checkbox which when checked by the customer will persist their details.', 'woocommerce-gateway-stripe' ),
|
| 93 |
-
'default' => 'yes',
|
| 94 |
-
'desc_tip' => true,
|
| 95 |
-
),
|
| 96 |
'stripe_checkout_locale' => array(
|
| 97 |
'title' => __( 'Stripe Checkout locale', 'woocommerce-gateway-stripe' ),
|
| 98 |
'type' => 'select',
|
| 85 |
'default' => 'no',
|
| 86 |
'desc_tip' => true,
|
| 87 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
'stripe_checkout_locale' => array(
|
| 89 |
'title' => __( 'Stripe Checkout locale', 'woocommerce-gateway-stripe' ),
|
| 90 |
'type' => 'select',
|
languages/woocommerce-gateway-stripe.pot
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
msgid ""
|
| 2 |
msgstr ""
|
| 3 |
"Project-Id-Version: WooCommerce Stripe Gateway\n"
|
| 4 |
-
"POT-Creation-Date: 2017-03-
|
| 5 |
-
"PO-Revision-Date: 2017-03-
|
| 6 |
"Last-Translator: \n"
|
| 7 |
"Language-Team: \n"
|
| 8 |
"Language: en_US\n"
|
|
@@ -21,8 +21,8 @@ msgstr ""
|
|
| 21 |
|
| 22 |
#: includes/class-wc-gateway-stripe-addons.php:106
|
| 23 |
#: includes/class-wc-gateway-stripe-addons.php:153
|
| 24 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 25 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 26 |
#: includes/legacy/class-wc-gateway-stripe.php:446
|
| 27 |
#, php-format
|
| 28 |
msgid ""
|
|
@@ -79,39 +79,39 @@ msgstr ""
|
|
| 79 |
msgid "Unable to verify domain - missing secret key."
|
| 80 |
msgstr ""
|
| 81 |
|
| 82 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 83 |
#, php-format
|
| 84 |
msgid "Unable to verify domain - %s"
|
| 85 |
msgstr ""
|
| 86 |
|
| 87 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 88 |
msgid "Unable to create domain association folder to domain root."
|
| 89 |
msgstr ""
|
| 90 |
|
| 91 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 92 |
msgid "Unable to copy domain association file to domain root."
|
| 93 |
msgstr ""
|
| 94 |
|
| 95 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 96 |
msgid "Your domain has been verified with Apple Pay!"
|
| 97 |
msgstr ""
|
| 98 |
|
| 99 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 100 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 101 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 102 |
#: includes/legacy/class-wc-gateway-stripe.php:481
|
| 103 |
#, php-format
|
| 104 |
msgid "Error: %s"
|
| 105 |
msgstr ""
|
| 106 |
|
| 107 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 108 |
#, php-format
|
| 109 |
msgid ""
|
| 110 |
"Apple Pay domain verification failed. Please check the %1$slog%2$s to see "
|
| 111 |
-
"the issue."
|
| 112 |
msgstr ""
|
| 113 |
|
| 114 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 115 |
#: includes/legacy/class-wc-gateway-stripe.php:165
|
| 116 |
#, php-format
|
| 117 |
msgid ""
|
|
@@ -120,133 +120,133 @@ msgid ""
|
|
| 120 |
"has a valid SSL certificate - Stripe will only work in test mode."
|
| 121 |
msgstr ""
|
| 122 |
|
| 123 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 124 |
msgid "Add Card"
|
| 125 |
msgstr ""
|
| 126 |
|
| 127 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 128 |
msgid "The card number is not a valid credit card number."
|
| 129 |
msgstr ""
|
| 130 |
|
| 131 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 132 |
msgid "The card's expiration month is invalid."
|
| 133 |
msgstr ""
|
| 134 |
|
| 135 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 136 |
msgid "The card's expiration year is invalid."
|
| 137 |
msgstr ""
|
| 138 |
|
| 139 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 140 |
msgid "The card's security code is invalid."
|
| 141 |
msgstr ""
|
| 142 |
|
| 143 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 144 |
msgid "The card number is incorrect."
|
| 145 |
msgstr ""
|
| 146 |
|
| 147 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 148 |
msgid "The card has expired."
|
| 149 |
msgstr ""
|
| 150 |
|
| 151 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 152 |
msgid "The card's security code is incorrect."
|
| 153 |
msgstr ""
|
| 154 |
|
| 155 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 156 |
msgid "The card's zip code failed validation."
|
| 157 |
msgstr ""
|
| 158 |
|
| 159 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 160 |
msgid "The card was declined."
|
| 161 |
msgstr ""
|
| 162 |
|
| 163 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 164 |
msgid "There is no card on a customer that is being charged."
|
| 165 |
msgstr ""
|
| 166 |
|
| 167 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 168 |
msgid "An error occurred while processing the card."
|
| 169 |
msgstr ""
|
| 170 |
|
| 171 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 172 |
msgid "Could not find payment information."
|
| 173 |
msgstr ""
|
| 174 |
|
| 175 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 176 |
msgid ""
|
| 177 |
"This is not a valid live key. Live keys start with \"sk_live_\" and "
|
| 178 |
"\"pk_live_\"."
|
| 179 |
msgstr ""
|
| 180 |
|
| 181 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 182 |
msgid ""
|
| 183 |
"This is not a valid test key. Test keys start with \"sk_test_\" and "
|
| 184 |
"\"pk_test_\"."
|
| 185 |
msgstr ""
|
| 186 |
|
| 187 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 188 |
msgid "Re-verify Domain"
|
| 189 |
msgstr ""
|
| 190 |
|
| 191 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 192 |
msgid "Missing Secret Key. Please set the secret key field above and re-try."
|
| 193 |
msgstr ""
|
| 194 |
|
| 195 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 196 |
#: includes/legacy/class-wc-gateway-stripe.php:296
|
| 197 |
msgid "Please accept the terms and conditions first"
|
| 198 |
msgstr ""
|
| 199 |
|
| 200 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 201 |
#: includes/legacy/class-wc-gateway-stripe.php:297
|
| 202 |
msgid "Please fill in required checkout fields first"
|
| 203 |
msgstr ""
|
| 204 |
|
| 205 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 206 |
#: includes/class-wc-stripe-payment-request.php:95
|
| 207 |
msgid "Sorry, we're not accepting prepaid cards at this time."
|
| 208 |
msgstr ""
|
| 209 |
|
| 210 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 211 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 212 |
#, php-format
|
| 213 |
msgid "%1$s - Order %2$s"
|
| 214 |
msgstr ""
|
| 215 |
|
| 216 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 217 |
msgid "Customer Name"
|
| 218 |
msgstr ""
|
| 219 |
|
| 220 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 221 |
msgid "Customer Email"
|
| 222 |
msgstr ""
|
| 223 |
|
| 224 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 225 |
msgid "Invalid payment method. Please input a new card number."
|
| 226 |
msgstr ""
|
| 227 |
|
| 228 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 229 |
#: includes/legacy/class-wc-gateway-stripe.php:434
|
| 230 |
msgid "Please enter your card details to make a payment."
|
| 231 |
msgstr ""
|
| 232 |
|
| 233 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 234 |
#: includes/legacy/class-wc-gateway-stripe.php:435
|
| 235 |
msgid ""
|
| 236 |
"Developers: Please make sure that you are including jQuery and there are no "
|
| 237 |
"JavaScript errors on the page."
|
| 238 |
msgstr ""
|
| 239 |
|
| 240 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 241 |
msgid "This card is no longer available and has been removed."
|
| 242 |
msgstr ""
|
| 243 |
|
| 244 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 245 |
#, php-format
|
| 246 |
msgid "Stripe charge complete (Charge ID: %s)"
|
| 247 |
msgstr ""
|
| 248 |
|
| 249 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 250 |
#: includes/legacy/class-wc-gateway-stripe.php:526
|
| 251 |
#, php-format
|
| 252 |
msgid ""
|
|
@@ -254,13 +254,13 @@ msgid ""
|
|
| 254 |
"cancel to remove the pre-authorization."
|
| 255 |
msgstr ""
|
| 256 |
|
| 257 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 258 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 259 |
#: includes/legacy/class-wc-gateway-stripe.php:540
|
| 260 |
msgid "There was a problem adding the card."
|
| 261 |
msgstr ""
|
| 262 |
|
| 263 |
-
#: includes/class-wc-gateway-stripe.php:
|
| 264 |
#, php-format
|
| 265 |
msgid "Refunded %1$s - Refund ID: %2$s - Reason: %3$s"
|
| 266 |
msgstr ""
|
|
@@ -269,56 +269,54 @@ msgstr ""
|
|
| 269 |
msgid "There was a problem connecting to the payment gateway."
|
| 270 |
msgstr ""
|
| 271 |
|
| 272 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 273 |
-
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 277 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 278 |
-
#: includes/class-wc-stripe-apple-pay.php:431
|
| 279 |
-
#: includes/class-wc-stripe-apple-pay.php:494
|
| 280 |
-
#: includes/class-wc-stripe-apple-pay.php:542
|
| 281 |
msgid "Cheatin’ huh?"
|
| 282 |
msgstr ""
|
| 283 |
|
| 284 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 285 |
-
|
|
|
|
| 286 |
msgstr ""
|
| 287 |
|
| 288 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 289 |
-
|
| 290 |
-
msgid "Unable to find shipping method for address."
|
| 291 |
msgstr ""
|
| 292 |
|
| 293 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 294 |
-
|
| 295 |
-
#: includes/class-wc-stripe-payment-request.php:348
|
| 296 |
-
msgid "Tax"
|
| 297 |
msgstr ""
|
| 298 |
|
| 299 |
#: includes/class-wc-stripe-apple-pay.php:580
|
| 300 |
-
|
|
|
|
| 301 |
msgstr ""
|
| 302 |
|
| 303 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 304 |
-
|
|
|
|
|
|
|
| 305 |
msgstr ""
|
| 306 |
|
| 307 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 308 |
msgid "Shipping"
|
| 309 |
msgstr ""
|
| 310 |
|
| 311 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 312 |
msgid "Discount"
|
| 313 |
msgstr ""
|
| 314 |
|
| 315 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 316 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 317 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 318 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 319 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 320 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 321 |
-
#: includes/class-wc-stripe-apple-pay.php:
|
| 322 |
#, php-format
|
| 323 |
msgid "Error %d: Unable to create order. Please try again."
|
| 324 |
msgstr ""
|
|
@@ -547,190 +545,176 @@ msgid ""
|
|
| 547 |
msgstr ""
|
| 548 |
|
| 549 |
#: includes/settings-stripe.php:89
|
| 550 |
-
msgid "Allow Remember Me"
|
| 551 |
-
msgstr ""
|
| 552 |
-
|
| 553 |
-
#: includes/settings-stripe.php:90
|
| 554 |
-
msgid "Enable Remember Me"
|
| 555 |
-
msgstr ""
|
| 556 |
-
|
| 557 |
-
#: includes/settings-stripe.php:92
|
| 558 |
-
msgid ""
|
| 559 |
-
"If enabled, this option shows a \"Remember Me\" checkbox which when checked "
|
| 560 |
-
"by the customer will persist their details."
|
| 561 |
-
msgstr ""
|
| 562 |
-
|
| 563 |
-
#: includes/settings-stripe.php:97
|
| 564 |
msgid "Stripe Checkout locale"
|
| 565 |
msgstr ""
|
| 566 |
|
| 567 |
-
#: includes/settings-stripe.php:
|
| 568 |
msgid ""
|
| 569 |
"Language to display in Stripe Checkout modal. Specify Auto to display "
|
| 570 |
"Checkout in the user's preferred language, if available. English will be "
|
| 571 |
"used by default."
|
| 572 |
msgstr ""
|
| 573 |
|
| 574 |
-
#: includes/settings-stripe.php:
|
| 575 |
msgid "Auto"
|
| 576 |
msgstr ""
|
| 577 |
|
| 578 |
-
#: includes/settings-stripe.php:
|
| 579 |
msgid "Simplified Chinese"
|
| 580 |
msgstr ""
|
| 581 |
|
| 582 |
-
#: includes/settings-stripe.php:
|
| 583 |
msgid "Danish"
|
| 584 |
msgstr ""
|
| 585 |
|
| 586 |
-
#: includes/settings-stripe.php:
|
| 587 |
msgid "Dutch"
|
| 588 |
msgstr ""
|
| 589 |
|
| 590 |
-
#: includes/settings-stripe.php:
|
| 591 |
msgid "English"
|
| 592 |
msgstr ""
|
| 593 |
|
| 594 |
-
#: includes/settings-stripe.php:
|
| 595 |
msgid "Finnish"
|
| 596 |
msgstr ""
|
| 597 |
|
| 598 |
-
#: includes/settings-stripe.php:
|
| 599 |
msgid "French"
|
| 600 |
msgstr ""
|
| 601 |
|
| 602 |
-
#: includes/settings-stripe.php:
|
| 603 |
msgid "German"
|
| 604 |
msgstr ""
|
| 605 |
|
| 606 |
-
#: includes/settings-stripe.php:
|
| 607 |
msgid "Italian"
|
| 608 |
msgstr ""
|
| 609 |
|
| 610 |
-
#: includes/settings-stripe.php:
|
| 611 |
msgid "Japanese"
|
| 612 |
msgstr ""
|
| 613 |
|
| 614 |
-
#: includes/settings-stripe.php:
|
| 615 |
msgid "Norwegian"
|
| 616 |
msgstr ""
|
| 617 |
|
| 618 |
-
#: includes/settings-stripe.php:
|
| 619 |
msgid "Spanish"
|
| 620 |
msgstr ""
|
| 621 |
|
| 622 |
-
#: includes/settings-stripe.php:
|
| 623 |
msgid "Swedish"
|
| 624 |
msgstr ""
|
| 625 |
|
| 626 |
-
#: includes/settings-stripe.php:
|
| 627 |
msgid "Bitcoin Currency"
|
| 628 |
msgstr ""
|
| 629 |
|
| 630 |
-
#: includes/settings-stripe.php:
|
| 631 |
msgid "Enable Bitcoin Currency"
|
| 632 |
msgstr ""
|
| 633 |
|
| 634 |
-
#: includes/settings-stripe.php:
|
| 635 |
msgid ""
|
| 636 |
"If enabled, an option to accept bitcoin will show on the checkout modal. "
|
| 637 |
"Note: Stripe Checkout needs to be enabled and store currency must be set to "
|
| 638 |
"USD."
|
| 639 |
msgstr ""
|
| 640 |
|
| 641 |
-
#: includes/settings-stripe.php:
|
| 642 |
msgid "Stripe Checkout Image"
|
| 643 |
msgstr ""
|
| 644 |
|
| 645 |
-
#: includes/settings-stripe.php:
|
| 646 |
msgid ""
|
| 647 |
"Optionally enter the URL to a 128x128px image of your brand or product. e.g. "
|
| 648 |
"<code>https://yoursite.com/wp-content/uploads/2013/09/yourimage.jpg</code>"
|
| 649 |
msgstr ""
|
| 650 |
|
| 651 |
-
#: includes/settings-stripe.php:
|
| 652 |
msgid "Payment Request API"
|
| 653 |
msgstr ""
|
| 654 |
|
| 655 |
-
#: includes/settings-stripe.php:
|
| 656 |
msgid "Enable Payment Request API"
|
| 657 |
msgstr ""
|
| 658 |
|
| 659 |
-
#: includes/settings-stripe.php:
|
| 660 |
msgid ""
|
| 661 |
"If enabled, users will be able to pay using the Payment Request API if "
|
| 662 |
"supported by the browser."
|
| 663 |
msgstr ""
|
| 664 |
|
| 665 |
-
#: includes/settings-stripe.php:
|
| 666 |
msgid "Apple Pay"
|
| 667 |
msgstr ""
|
| 668 |
|
| 669 |
-
#: includes/settings-stripe.php:
|
| 670 |
#, php-format
|
| 671 |
msgid ""
|
| 672 |
"Enable Apple Pay. %1$sBy using Apple Pay, you agree to %2$s and %3$s's terms "
|
| 673 |
"of service."
|
| 674 |
msgstr ""
|
| 675 |
|
| 676 |
-
#: includes/settings-stripe.php:
|
| 677 |
msgid "If enabled, users will be able to pay with Apple Pay."
|
| 678 |
msgstr ""
|
| 679 |
|
| 680 |
-
#: includes/settings-stripe.php:
|
| 681 |
msgid "Apple Pay Button Style"
|
| 682 |
msgstr ""
|
| 683 |
|
| 684 |
-
#: includes/settings-stripe.php:
|
| 685 |
msgid "Button Style"
|
| 686 |
msgstr ""
|
| 687 |
|
| 688 |
-
#: includes/settings-stripe.php:
|
| 689 |
msgid "Select the button style you would like to show."
|
| 690 |
msgstr ""
|
| 691 |
|
| 692 |
-
#: includes/settings-stripe.php:
|
| 693 |
msgid "Black"
|
| 694 |
msgstr ""
|
| 695 |
|
| 696 |
-
#: includes/settings-stripe.php:
|
| 697 |
msgid "White"
|
| 698 |
msgstr ""
|
| 699 |
|
| 700 |
-
#: includes/settings-stripe.php:
|
| 701 |
msgid "Apple Pay Button Language"
|
| 702 |
msgstr ""
|
| 703 |
|
| 704 |
-
#: includes/settings-stripe.php:
|
| 705 |
msgid ""
|
| 706 |
"Enter the 2 letter ISO code for the language you would like your Apple Pay "
|
| 707 |
"Button to display in. Reference available ISO codes here <code>http://www."
|
| 708 |
"w3schools.com/tags/ref_language_codes.asp</code>"
|
| 709 |
msgstr ""
|
| 710 |
|
| 711 |
-
#: includes/settings-stripe.php:
|
| 712 |
msgid "Saved Cards"
|
| 713 |
msgstr ""
|
| 714 |
|
| 715 |
-
#: includes/settings-stripe.php:
|
| 716 |
msgid "Enable Payment via Saved Cards"
|
| 717 |
msgstr ""
|
| 718 |
|
| 719 |
-
#: includes/settings-stripe.php:
|
| 720 |
msgid ""
|
| 721 |
"If enabled, users will be able to pay with a saved card during checkout. "
|
| 722 |
"Card details are saved on Stripe servers, not on your store."
|
| 723 |
msgstr ""
|
| 724 |
|
| 725 |
-
#: includes/settings-stripe.php:
|
| 726 |
msgid "Logging"
|
| 727 |
msgstr ""
|
| 728 |
|
| 729 |
-
#: includes/settings-stripe.php:
|
| 730 |
msgid "Log debug messages"
|
| 731 |
msgstr ""
|
| 732 |
|
| 733 |
-
#: includes/settings-stripe.php:
|
| 734 |
msgid "Save debug messages to the WooCommerce System Status log."
|
| 735 |
msgstr ""
|
| 736 |
|
| 1 |
msgid ""
|
| 2 |
msgstr ""
|
| 3 |
"Project-Id-Version: WooCommerce Stripe Gateway\n"
|
| 4 |
+
"POT-Creation-Date: 2017-03-30 12:28-0800\n"
|
| 5 |
+
"PO-Revision-Date: 2017-03-30 12:28-0800\n"
|
| 6 |
"Last-Translator: \n"
|
| 7 |
"Language-Team: \n"
|
| 8 |
"Language: en_US\n"
|
| 21 |
|
| 22 |
#: includes/class-wc-gateway-stripe-addons.php:106
|
| 23 |
#: includes/class-wc-gateway-stripe-addons.php:153
|
| 24 |
+
#: includes/class-wc-gateway-stripe.php:745
|
| 25 |
+
#: includes/class-wc-stripe-apple-pay.php:684
|
| 26 |
#: includes/legacy/class-wc-gateway-stripe.php:446
|
| 27 |
#, php-format
|
| 28 |
msgid ""
|
| 79 |
msgid "Unable to verify domain - missing secret key."
|
| 80 |
msgstr ""
|
| 81 |
|
| 82 |
+
#: includes/class-wc-gateway-stripe.php:306
|
| 83 |
#, php-format
|
| 84 |
msgid "Unable to verify domain - %s"
|
| 85 |
msgstr ""
|
| 86 |
|
| 87 |
+
#: includes/class-wc-gateway-stripe.php:331
|
| 88 |
msgid "Unable to create domain association folder to domain root."
|
| 89 |
msgstr ""
|
| 90 |
|
| 91 |
+
#: includes/class-wc-gateway-stripe.php:337
|
| 92 |
msgid "Unable to copy domain association file to domain root."
|
| 93 |
msgstr ""
|
| 94 |
|
| 95 |
+
#: includes/class-wc-gateway-stripe.php:351
|
| 96 |
msgid "Your domain has been verified with Apple Pay!"
|
| 97 |
msgstr ""
|
| 98 |
|
| 99 |
+
#: includes/class-wc-gateway-stripe.php:358
|
| 100 |
+
#: includes/class-wc-gateway-stripe.php:795
|
| 101 |
+
#: includes/class-wc-stripe-apple-pay.php:718
|
| 102 |
#: includes/legacy/class-wc-gateway-stripe.php:481
|
| 103 |
#, php-format
|
| 104 |
msgid "Error: %s"
|
| 105 |
msgstr ""
|
| 106 |
|
| 107 |
+
#: includes/class-wc-gateway-stripe.php:380
|
| 108 |
#, php-format
|
| 109 |
msgid ""
|
| 110 |
"Apple Pay domain verification failed. Please check the %1$slog%2$s to see "
|
| 111 |
+
"the issue. (Logging must be enabled to see recorded logs)"
|
| 112 |
msgstr ""
|
| 113 |
|
| 114 |
+
#: includes/class-wc-gateway-stripe.php:385
|
| 115 |
#: includes/legacy/class-wc-gateway-stripe.php:165
|
| 116 |
#, php-format
|
| 117 |
msgid ""
|
| 120 |
"has a valid SSL certificate - Stripe will only work in test mode."
|
| 121 |
msgstr ""
|
| 122 |
|
| 123 |
+
#: includes/class-wc-gateway-stripe.php:434
|
| 124 |
msgid "Add Card"
|
| 125 |
msgstr ""
|
| 126 |
|
| 127 |
+
#: includes/class-wc-gateway-stripe.php:481
|
| 128 |
msgid "The card number is not a valid credit card number."
|
| 129 |
msgstr ""
|
| 130 |
|
| 131 |
+
#: includes/class-wc-gateway-stripe.php:482
|
| 132 |
msgid "The card's expiration month is invalid."
|
| 133 |
msgstr ""
|
| 134 |
|
| 135 |
+
#: includes/class-wc-gateway-stripe.php:483
|
| 136 |
msgid "The card's expiration year is invalid."
|
| 137 |
msgstr ""
|
| 138 |
|
| 139 |
+
#: includes/class-wc-gateway-stripe.php:484
|
| 140 |
msgid "The card's security code is invalid."
|
| 141 |
msgstr ""
|
| 142 |
|
| 143 |
+
#: includes/class-wc-gateway-stripe.php:485
|
| 144 |
msgid "The card number is incorrect."
|
| 145 |
msgstr ""
|
| 146 |
|
| 147 |
+
#: includes/class-wc-gateway-stripe.php:486
|
| 148 |
msgid "The card has expired."
|
| 149 |
msgstr ""
|
| 150 |
|
| 151 |
+
#: includes/class-wc-gateway-stripe.php:487
|
| 152 |
msgid "The card's security code is incorrect."
|
| 153 |
msgstr ""
|
| 154 |
|
| 155 |
+
#: includes/class-wc-gateway-stripe.php:488
|
| 156 |
msgid "The card's zip code failed validation."
|
| 157 |
msgstr ""
|
| 158 |
|
| 159 |
+
#: includes/class-wc-gateway-stripe.php:489
|
| 160 |
msgid "The card was declined."
|
| 161 |
msgstr ""
|
| 162 |
|
| 163 |
+
#: includes/class-wc-gateway-stripe.php:490
|
| 164 |
msgid "There is no card on a customer that is being charged."
|
| 165 |
msgstr ""
|
| 166 |
|
| 167 |
+
#: includes/class-wc-gateway-stripe.php:491
|
| 168 |
msgid "An error occurred while processing the card."
|
| 169 |
msgstr ""
|
| 170 |
|
| 171 |
+
#: includes/class-wc-gateway-stripe.php:492
|
| 172 |
msgid "Could not find payment information."
|
| 173 |
msgstr ""
|
| 174 |
|
| 175 |
+
#: includes/class-wc-gateway-stripe.php:513
|
| 176 |
msgid ""
|
| 177 |
"This is not a valid live key. Live keys start with \"sk_live_\" and "
|
| 178 |
"\"pk_live_\"."
|
| 179 |
msgstr ""
|
| 180 |
|
| 181 |
+
#: includes/class-wc-gateway-stripe.php:514
|
| 182 |
msgid ""
|
| 183 |
"This is not a valid test key. Test keys start with \"sk_test_\" and "
|
| 184 |
"\"pk_test_\"."
|
| 185 |
msgstr ""
|
| 186 |
|
| 187 |
+
#: includes/class-wc-gateway-stripe.php:515
|
| 188 |
msgid "Re-verify Domain"
|
| 189 |
msgstr ""
|
| 190 |
|
| 191 |
+
#: includes/class-wc-gateway-stripe.php:516
|
| 192 |
msgid "Missing Secret Key. Please set the secret key field above and re-try."
|
| 193 |
msgstr ""
|
| 194 |
|
| 195 |
+
#: includes/class-wc-gateway-stripe.php:551
|
| 196 |
#: includes/legacy/class-wc-gateway-stripe.php:296
|
| 197 |
msgid "Please accept the terms and conditions first"
|
| 198 |
msgstr ""
|
| 199 |
|
| 200 |
+
#: includes/class-wc-gateway-stripe.php:552
|
| 201 |
#: includes/legacy/class-wc-gateway-stripe.php:297
|
| 202 |
msgid "Please fill in required checkout fields first"
|
| 203 |
msgstr ""
|
| 204 |
|
| 205 |
+
#: includes/class-wc-gateway-stripe.php:570
|
| 206 |
#: includes/class-wc-stripe-payment-request.php:95
|
| 207 |
msgid "Sorry, we're not accepting prepaid cards at this time."
|
| 208 |
msgstr ""
|
| 209 |
|
| 210 |
+
#: includes/class-wc-gateway-stripe.php:590
|
| 211 |
+
#: includes/class-wc-stripe-apple-pay.php:738
|
| 212 |
#, php-format
|
| 213 |
msgid "%1$s - Order %2$s"
|
| 214 |
msgstr ""
|
| 215 |
|
| 216 |
+
#: includes/class-wc-gateway-stripe.php:604
|
| 217 |
msgid "Customer Name"
|
| 218 |
msgstr ""
|
| 219 |
|
| 220 |
+
#: includes/class-wc-gateway-stripe.php:605
|
| 221 |
msgid "Customer Email"
|
| 222 |
msgstr ""
|
| 223 |
|
| 224 |
+
#: includes/class-wc-gateway-stripe.php:668
|
| 225 |
msgid "Invalid payment method. Please input a new card number."
|
| 226 |
msgstr ""
|
| 227 |
|
| 228 |
+
#: includes/class-wc-gateway-stripe.php:733
|
| 229 |
#: includes/legacy/class-wc-gateway-stripe.php:434
|
| 230 |
msgid "Please enter your card details to make a payment."
|
| 231 |
msgstr ""
|
| 232 |
|
| 233 |
+
#: includes/class-wc-gateway-stripe.php:734
|
| 234 |
#: includes/legacy/class-wc-gateway-stripe.php:435
|
| 235 |
msgid ""
|
| 236 |
"Developers: Please make sure that you are including jQuery and there are no "
|
| 237 |
"JavaScript errors on the page."
|
| 238 |
msgstr ""
|
| 239 |
|
| 240 |
+
#: includes/class-wc-gateway-stripe.php:762
|
| 241 |
msgid "This card is no longer available and has been removed."
|
| 242 |
msgstr ""
|
| 243 |
|
| 244 |
+
#: includes/class-wc-gateway-stripe.php:853 woocommerce-gateway-stripe.php:470
|
| 245 |
#, php-format
|
| 246 |
msgid "Stripe charge complete (Charge ID: %s)"
|
| 247 |
msgstr ""
|
| 248 |
|
| 249 |
+
#: includes/class-wc-gateway-stripe.php:864
|
| 250 |
#: includes/legacy/class-wc-gateway-stripe.php:526
|
| 251 |
#, php-format
|
| 252 |
msgid ""
|
| 254 |
"cancel to remove the pre-authorization."
|
| 255 |
msgstr ""
|
| 256 |
|
| 257 |
+
#: includes/class-wc-gateway-stripe.php:878
|
| 258 |
+
#: includes/class-wc-gateway-stripe.php:887
|
| 259 |
#: includes/legacy/class-wc-gateway-stripe.php:540
|
| 260 |
msgid "There was a problem adding the card."
|
| 261 |
msgstr ""
|
| 262 |
|
| 263 |
+
#: includes/class-wc-gateway-stripe.php:939
|
| 264 |
#, php-format
|
| 265 |
msgid "Refunded %1$s - Refund ID: %2$s - Reason: %3$s"
|
| 266 |
msgstr ""
|
| 269 |
msgid "There was a problem connecting to the payment gateway."
|
| 270 |
msgstr ""
|
| 271 |
|
| 272 |
+
#: includes/class-wc-stripe-apple-pay.php:192
|
| 273 |
+
#: includes/class-wc-stripe-apple-pay.php:416
|
| 274 |
+
#: includes/class-wc-stripe-apple-pay.php:470
|
| 275 |
+
#: includes/class-wc-stripe-apple-pay.php:559
|
| 276 |
+
#: includes/class-wc-stripe-apple-pay.php:622
|
| 277 |
+
#: includes/class-wc-stripe-apple-pay.php:670
|
|
|
|
|
|
|
|
|
|
| 278 |
msgid "Cheatin’ huh?"
|
| 279 |
msgstr ""
|
| 280 |
|
| 281 |
+
#: includes/class-wc-stripe-apple-pay.php:265
|
| 282 |
+
#: includes/class-wc-stripe-apple-pay.php:821
|
| 283 |
+
msgid "Sub-Total"
|
| 284 |
msgstr ""
|
| 285 |
|
| 286 |
+
#: includes/class-wc-stripe-apple-pay.php:404
|
| 287 |
+
msgid "Or"
|
|
|
|
| 288 |
msgstr ""
|
| 289 |
|
| 290 |
+
#: includes/class-wc-stripe-apple-pay.php:503
|
| 291 |
+
msgid "Please enter a valid postcode/ZIP."
|
|
|
|
|
|
|
| 292 |
msgstr ""
|
| 293 |
|
| 294 |
#: includes/class-wc-stripe-apple-pay.php:580
|
| 295 |
+
#: includes/class-wc-stripe-apple-pay.php:603
|
| 296 |
+
msgid "Unable to find shipping method for address."
|
| 297 |
msgstr ""
|
| 298 |
|
| 299 |
+
#: includes/class-wc-stripe-apple-pay.php:650
|
| 300 |
+
#: includes/class-wc-stripe-apple-pay.php:835
|
| 301 |
+
#: includes/class-wc-stripe-payment-request.php:348
|
| 302 |
+
msgid "Tax"
|
| 303 |
msgstr ""
|
| 304 |
|
| 305 |
+
#: includes/class-wc-stripe-apple-pay.php:843
|
| 306 |
msgid "Shipping"
|
| 307 |
msgstr ""
|
| 308 |
|
| 309 |
+
#: includes/class-wc-stripe-apple-pay.php:851
|
| 310 |
msgid "Discount"
|
| 311 |
msgstr ""
|
| 312 |
|
| 313 |
+
#: includes/class-wc-stripe-apple-pay.php:869
|
| 314 |
+
#: includes/class-wc-stripe-apple-pay.php:876
|
| 315 |
+
#: includes/class-wc-stripe-apple-pay.php:878
|
| 316 |
+
#: includes/class-wc-stripe-apple-pay.php:901
|
| 317 |
+
#: includes/class-wc-stripe-apple-pay.php:933
|
| 318 |
+
#: includes/class-wc-stripe-apple-pay.php:965
|
| 319 |
+
#: includes/class-wc-stripe-apple-pay.php:989
|
| 320 |
#, php-format
|
| 321 |
msgid "Error %d: Unable to create order. Please try again."
|
| 322 |
msgstr ""
|
| 545 |
msgstr ""
|
| 546 |
|
| 547 |
#: includes/settings-stripe.php:89
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 548 |
msgid "Stripe Checkout locale"
|
| 549 |
msgstr ""
|
| 550 |
|
| 551 |
+
#: includes/settings-stripe.php:92
|
| 552 |
msgid ""
|
| 553 |
"Language to display in Stripe Checkout modal. Specify Auto to display "
|
| 554 |
"Checkout in the user's preferred language, if available. English will be "
|
| 555 |
"used by default."
|
| 556 |
msgstr ""
|
| 557 |
|
| 558 |
+
#: includes/settings-stripe.php:96
|
| 559 |
msgid "Auto"
|
| 560 |
msgstr ""
|
| 561 |
|
| 562 |
+
#: includes/settings-stripe.php:97
|
| 563 |
msgid "Simplified Chinese"
|
| 564 |
msgstr ""
|
| 565 |
|
| 566 |
+
#: includes/settings-stripe.php:98
|
| 567 |
msgid "Danish"
|
| 568 |
msgstr ""
|
| 569 |
|
| 570 |
+
#: includes/settings-stripe.php:99
|
| 571 |
msgid "Dutch"
|
| 572 |
msgstr ""
|
| 573 |
|
| 574 |
+
#: includes/settings-stripe.php:100
|
| 575 |
msgid "English"
|
| 576 |
msgstr ""
|
| 577 |
|
| 578 |
+
#: includes/settings-stripe.php:101
|
| 579 |
msgid "Finnish"
|
| 580 |
msgstr ""
|
| 581 |
|
| 582 |
+
#: includes/settings-stripe.php:102
|
| 583 |
msgid "French"
|
| 584 |
msgstr ""
|
| 585 |
|
| 586 |
+
#: includes/settings-stripe.php:103
|
| 587 |
msgid "German"
|
| 588 |
msgstr ""
|
| 589 |
|
| 590 |
+
#: includes/settings-stripe.php:104
|
| 591 |
msgid "Italian"
|
| 592 |
msgstr ""
|
| 593 |
|
| 594 |
+
#: includes/settings-stripe.php:105
|
| 595 |
msgid "Japanese"
|
| 596 |
msgstr ""
|
| 597 |
|
| 598 |
+
#: includes/settings-stripe.php:106
|
| 599 |
msgid "Norwegian"
|
| 600 |
msgstr ""
|
| 601 |
|
| 602 |
+
#: includes/settings-stripe.php:107
|
| 603 |
msgid "Spanish"
|
| 604 |
msgstr ""
|
| 605 |
|
| 606 |
+
#: includes/settings-stripe.php:108
|
| 607 |
msgid "Swedish"
|
| 608 |
msgstr ""
|
| 609 |
|
| 610 |
+
#: includes/settings-stripe.php:112
|
| 611 |
msgid "Bitcoin Currency"
|
| 612 |
msgstr ""
|
| 613 |
|
| 614 |
+
#: includes/settings-stripe.php:113
|
| 615 |
msgid "Enable Bitcoin Currency"
|
| 616 |
msgstr ""
|
| 617 |
|
| 618 |
+
#: includes/settings-stripe.php:115
|
| 619 |
msgid ""
|
| 620 |
"If enabled, an option to accept bitcoin will show on the checkout modal. "
|
| 621 |
"Note: Stripe Checkout needs to be enabled and store currency must be set to "
|
| 622 |
"USD."
|
| 623 |
msgstr ""
|
| 624 |
|
| 625 |
+
#: includes/settings-stripe.php:120
|
| 626 |
msgid "Stripe Checkout Image"
|
| 627 |
msgstr ""
|
| 628 |
|
| 629 |
+
#: includes/settings-stripe.php:121
|
| 630 |
msgid ""
|
| 631 |
"Optionally enter the URL to a 128x128px image of your brand or product. e.g. "
|
| 632 |
"<code>https://yoursite.com/wp-content/uploads/2013/09/yourimage.jpg</code>"
|
| 633 |
msgstr ""
|
| 634 |
|
| 635 |
+
#: includes/settings-stripe.php:127
|
| 636 |
msgid "Payment Request API"
|
| 637 |
msgstr ""
|
| 638 |
|
| 639 |
+
#: includes/settings-stripe.php:128
|
| 640 |
msgid "Enable Payment Request API"
|
| 641 |
msgstr ""
|
| 642 |
|
| 643 |
+
#: includes/settings-stripe.php:130
|
| 644 |
msgid ""
|
| 645 |
"If enabled, users will be able to pay using the Payment Request API if "
|
| 646 |
"supported by the browser."
|
| 647 |
msgstr ""
|
| 648 |
|
| 649 |
+
#: includes/settings-stripe.php:135
|
| 650 |
msgid "Apple Pay"
|
| 651 |
msgstr ""
|
| 652 |
|
| 653 |
+
#: includes/settings-stripe.php:136
|
| 654 |
#, php-format
|
| 655 |
msgid ""
|
| 656 |
"Enable Apple Pay. %1$sBy using Apple Pay, you agree to %2$s and %3$s's terms "
|
| 657 |
"of service."
|
| 658 |
msgstr ""
|
| 659 |
|
| 660 |
+
#: includes/settings-stripe.php:138
|
| 661 |
msgid "If enabled, users will be able to pay with Apple Pay."
|
| 662 |
msgstr ""
|
| 663 |
|
| 664 |
+
#: includes/settings-stripe.php:143
|
| 665 |
msgid "Apple Pay Button Style"
|
| 666 |
msgstr ""
|
| 667 |
|
| 668 |
+
#: includes/settings-stripe.php:144
|
| 669 |
msgid "Button Style"
|
| 670 |
msgstr ""
|
| 671 |
|
| 672 |
+
#: includes/settings-stripe.php:146
|
| 673 |
msgid "Select the button style you would like to show."
|
| 674 |
msgstr ""
|
| 675 |
|
| 676 |
+
#: includes/settings-stripe.php:150
|
| 677 |
msgid "Black"
|
| 678 |
msgstr ""
|
| 679 |
|
| 680 |
+
#: includes/settings-stripe.php:151
|
| 681 |
msgid "White"
|
| 682 |
msgstr ""
|
| 683 |
|
| 684 |
+
#: includes/settings-stripe.php:155
|
| 685 |
msgid "Apple Pay Button Language"
|
| 686 |
msgstr ""
|
| 687 |
|
| 688 |
+
#: includes/settings-stripe.php:156
|
| 689 |
msgid ""
|
| 690 |
"Enter the 2 letter ISO code for the language you would like your Apple Pay "
|
| 691 |
"Button to display in. Reference available ISO codes here <code>http://www."
|
| 692 |
"w3schools.com/tags/ref_language_codes.asp</code>"
|
| 693 |
msgstr ""
|
| 694 |
|
| 695 |
+
#: includes/settings-stripe.php:162
|
| 696 |
msgid "Saved Cards"
|
| 697 |
msgstr ""
|
| 698 |
|
| 699 |
+
#: includes/settings-stripe.php:163
|
| 700 |
msgid "Enable Payment via Saved Cards"
|
| 701 |
msgstr ""
|
| 702 |
|
| 703 |
+
#: includes/settings-stripe.php:165
|
| 704 |
msgid ""
|
| 705 |
"If enabled, users will be able to pay with a saved card during checkout. "
|
| 706 |
"Card details are saved on Stripe servers, not on your store."
|
| 707 |
msgstr ""
|
| 708 |
|
| 709 |
+
#: includes/settings-stripe.php:170
|
| 710 |
msgid "Logging"
|
| 711 |
msgstr ""
|
| 712 |
|
| 713 |
+
#: includes/settings-stripe.php:171
|
| 714 |
msgid "Log debug messages"
|
| 715 |
msgstr ""
|
| 716 |
|
| 717 |
+
#: includes/settings-stripe.php:173
|
| 718 |
msgid "Save debug messages to the WooCommerce System Status log."
|
| 719 |
msgstr ""
|
| 720 |
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: automattic, woothemes, mikejolley, akeda, royho, mattyza, slash1an
|
|
| 3 |
Tags: credit card, stripe, woocommerce
|
| 4 |
Requires at least: 4.4
|
| 5 |
Tested up to: 4.7.2
|
| 6 |
-
Stable tag: 3.1.
|
| 7 |
License: GPLv3
|
| 8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
| 9 |
|
|
@@ -95,6 +95,16 @@ If you get stuck, you can ask for help in the Plugin Forum.
|
|
| 95 |
|
| 96 |
== Changelog ==
|
| 97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
= 3.1.3 =
|
| 99 |
* Fix - When using Stripe Checkout, add payment method was disabled.
|
| 100 |
* Fix - Possible non object type when using preview pages.
|
|
@@ -157,6 +167,12 @@ If you get stuck, you can ask for help in the Plugin Forum.
|
|
| 157 |
|
| 158 |
== Upgrade Notice ==
|
| 159 |
|
| 160 |
-
= 3.1.
|
| 161 |
-
*
|
| 162 |
-
* Fix -
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
Tags: credit card, stripe, woocommerce
|
| 4 |
Requires at least: 4.4
|
| 5 |
Tested up to: 4.7.2
|
| 6 |
+
Stable tag: 3.1.4
|
| 7 |
License: GPLv3
|
| 8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
| 9 |
|
| 95 |
|
| 96 |
== Changelog ==
|
| 97 |
|
| 98 |
+
= 3.1.4 =
|
| 99 |
+
* Tweak - If Apple Pay is not enabled, prevent Apple Pay Init.
|
| 100 |
+
* Fix - Update for WooCommerce 3.0 compatibility.
|
| 101 |
+
* Fix - Apple Pay on product detail page causes qty issue when using normal add to cart.
|
| 102 |
+
* Fix - A partial workaround for UK/CA postal codes issue for shipping methods that support partial postal code estimates.
|
| 103 |
+
* Fix - Stripe checkout did not validate properly formatted email address.
|
| 104 |
+
* Fix - Error messages were not able to translate when validating checkout form.
|
| 105 |
+
* Fix - Prevent payment gateway title logic ( Apple Pay ) from hijacking other payment methods.
|
| 106 |
+
* Remove - Stripe Checkout allow remember me setting as it is redundant to saved card setting.
|
| 107 |
+
|
| 108 |
= 3.1.3 =
|
| 109 |
* Fix - When using Stripe Checkout, add payment method was disabled.
|
| 110 |
* Fix - Possible non object type when using preview pages.
|
| 167 |
|
| 168 |
== Upgrade Notice ==
|
| 169 |
|
| 170 |
+
= 3.1.4 =
|
| 171 |
+
* Tweak - If Apple Pay is not enabled, prevent Apple Pay Init.
|
| 172 |
+
* Fix - Update for WooCommerce 3.0 compatibility.
|
| 173 |
+
* Fix - Apple Pay on product detail page causes qty issue when using normal add to cart.
|
| 174 |
+
* Fix - A partial workaround for UK/CA postal codes issue for shipping methods that support partial postal code estimates.
|
| 175 |
+
* Fix - Stripe checkout did not validate properly formatted email address.
|
| 176 |
+
* Fix - Error messages were not able to translate when validating checkout form.
|
| 177 |
+
* Fix - Prevent payment gateway title logic ( Apple Pay ) from hijacking other payment methods.
|
| 178 |
+
* Remove - Stripe Checkout allow remember me setting as it is redundant to saved card setting.
|
woocommerce-gateway-stripe.php
CHANGED
|
@@ -5,7 +5,7 @@
|
|
| 5 |
* Description: Take credit card payments on your store using Stripe.
|
| 6 |
* Author: WooCommerce
|
| 7 |
* Author URI: https://woocommerce.com/
|
| 8 |
-
* Version: 3.1.
|
| 9 |
* Text Domain: woocommerce-gateway-stripe
|
| 10 |
* Domain Path: /languages
|
| 11 |
*
|
|
@@ -32,7 +32,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
| 32 |
/**
|
| 33 |
* Required minimums and constants
|
| 34 |
*/
|
| 35 |
-
define( 'WC_STRIPE_VERSION', '3.1.
|
| 36 |
define( 'WC_STRIPE_MIN_PHP_VER', '5.6.0' );
|
| 37 |
define( 'WC_STRIPE_MIN_WC_VER', '2.5.0' );
|
| 38 |
define( 'WC_STRIPE_MAIN_FILE', __FILE__ );
|
|
@@ -269,8 +269,8 @@ if ( ! class_exists( 'WC_Stripe' ) ) :
|
|
| 269 |
|
| 270 |
$plugin_links = array(
|
| 271 |
'<a href="' . $setting_link . '">' . __( 'Settings', 'woocommerce-gateway-stripe' ) . '</a>',
|
| 272 |
-
'<a href="https://docs.
|
| 273 |
-
'<a href="
|
| 274 |
);
|
| 275 |
return array_merge( $plugin_links, $links );
|
| 276 |
}
|
| 5 |
* Description: Take credit card payments on your store using Stripe.
|
| 6 |
* Author: WooCommerce
|
| 7 |
* Author URI: https://woocommerce.com/
|
| 8 |
+
* Version: 3.1.4
|
| 9 |
* Text Domain: woocommerce-gateway-stripe
|
| 10 |
* Domain Path: /languages
|
| 11 |
*
|
| 32 |
/**
|
| 33 |
* Required minimums and constants
|
| 34 |
*/
|
| 35 |
+
define( 'WC_STRIPE_VERSION', '3.1.4' );
|
| 36 |
define( 'WC_STRIPE_MIN_PHP_VER', '5.6.0' );
|
| 37 |
define( 'WC_STRIPE_MIN_WC_VER', '2.5.0' );
|
| 38 |
define( 'WC_STRIPE_MAIN_FILE', __FILE__ );
|
| 269 |
|
| 270 |
$plugin_links = array(
|
| 271 |
'<a href="' . $setting_link . '">' . __( 'Settings', 'woocommerce-gateway-stripe' ) . '</a>',
|
| 272 |
+
'<a href="https://docs.woocommerce.com/document/stripe/">' . __( 'Docs', 'woocommerce-gateway-stripe' ) . '</a>',
|
| 273 |
+
'<a href="https://woocommerce.com/contact-us/">' . __( 'Support', 'woocommerce-gateway-stripe' ) . '</a>',
|
| 274 |
);
|
| 275 |
return array_merge( $plugin_links, $links );
|
| 276 |
}
|
