Version Description
- New - Option to allow/disallow remember me on Stripe checkout modal.
- Fix - Paying for order incorrectly uses cart amount.
- Fix - Using WC function before checking exists causes fatal error.
Download this release
Release Info
| Developer | royho |
| Plugin | |
| Version | 3.0.7 |
| Comparing to | |
| See all releases | |
Code changes from version 3.0.6 to 3.0.7
- assets/js/stripe_checkout.js +2 -1
- assets/js/stripe_checkout.min.js +1 -1
- includes/class-wc-gateway-stripe-addons.php +5 -8
- includes/class-wc-gateway-stripe.php +44 -8
- includes/legacy/class-wc-gateway-stripe.php +2 -3
- includes/settings-stripe.php +20 -8
- readme.txt +11 -11
- woocommerce-gateway-stripe.php +48 -5
assets/js/stripe_checkout.js
CHANGED
|
@@ -113,7 +113,7 @@ jQuery( function( $ ) {
|
|
| 113 |
|
| 114 |
StripeCheckout.open({
|
| 115 |
key : wc_stripe_params.key,
|
| 116 |
-
billingAddress : 'yes' === wc_stripe_params.stripe_checkout_require_billing_address
|
| 117 |
amount : $data.data( 'amount' ),
|
| 118 |
name : $data.data( 'name' ),
|
| 119 |
description : $data.data( 'description' ),
|
|
@@ -123,6 +123,7 @@ jQuery( function( $ ) {
|
|
| 123 |
locale : $data.data( 'locale' ),
|
| 124 |
email : $( '#billing_email' ).val() || $data.data( 'email' ),
|
| 125 |
panelLabel : $data.data( 'panel-label' ),
|
|
|
|
| 126 |
token : token_action,
|
| 127 |
closed : wc_stripe_form.onClose()
|
| 128 |
});
|
| 113 |
|
| 114 |
StripeCheckout.open({
|
| 115 |
key : wc_stripe_params.key,
|
| 116 |
+
billingAddress : 'yes' === wc_stripe_params.stripe_checkout_require_billing_address,
|
| 117 |
amount : $data.data( 'amount' ),
|
| 118 |
name : $data.data( 'name' ),
|
| 119 |
description : $data.data( 'description' ),
|
| 123 |
locale : $data.data( 'locale' ),
|
| 124 |
email : $( '#billing_email' ).val() || $data.data( 'email' ),
|
| 125 |
panelLabel : $data.data( 'panel-label' ),
|
| 126 |
+
allowRememberMe : $data.data( 'allow-remember-me' ),
|
| 127 |
token : token_action,
|
| 128 |
closed : wc_stripe_form.onClose()
|
| 129 |
});
|
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
|
| 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"))});
|
includes/class-wc-gateway-stripe-addons.php
CHANGED
|
@@ -99,9 +99,9 @@ class WC_Gateway_Stripe_Addons extends WC_Gateway_Stripe {
|
|
| 99 |
* @param string $stripe_token (default: '')
|
| 100 |
* @param bool initial_payment
|
| 101 |
*/
|
| 102 |
-
public function process_subscription_payment( $order = '', $amount = 0 ) {
|
| 103 |
-
if ( $amount * 100 <
|
| 104 |
-
return new WP_Error( 'stripe_error', __( 'Sorry, the minimum allowed order total is
|
| 105 |
}
|
| 106 |
|
| 107 |
// Get source from order
|
|
@@ -146,8 +146,8 @@ class WC_Gateway_Stripe_Addons extends WC_Gateway_Stripe {
|
|
| 146 |
try {
|
| 147 |
$order = wc_get_order( $order_id );
|
| 148 |
|
| 149 |
-
if ( $order->get_total() * 100 <
|
| 150 |
-
throw new Exception( __( 'Sorry, the minimum allowed order total is
|
| 151 |
}
|
| 152 |
|
| 153 |
$source = $this->get_source( get_current_user_id(), true );
|
|
@@ -160,9 +160,6 @@ class WC_Gateway_Stripe_Addons extends WC_Gateway_Stripe {
|
|
| 160 |
// Store source to order meta
|
| 161 |
$this->save_source( $order, $source );
|
| 162 |
|
| 163 |
-
// Reduce stock levels
|
| 164 |
-
$order->reduce_order_stock();
|
| 165 |
-
|
| 166 |
// Remove cart
|
| 167 |
WC()->cart->empty_cart();
|
| 168 |
|
| 99 |
* @param string $stripe_token (default: '')
|
| 100 |
* @param bool initial_payment
|
| 101 |
*/
|
| 102 |
+
public function process_subscription_payment( $order = '', $amount = 0 ) {
|
| 103 |
+
if ( $amount * 100 < WC_Stripe::get_minimum_amount() ) {
|
| 104 |
+
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 ) ) );
|
| 105 |
}
|
| 106 |
|
| 107 |
// Get source from order
|
| 146 |
try {
|
| 147 |
$order = wc_get_order( $order_id );
|
| 148 |
|
| 149 |
+
if ( $order->get_total() * 100 < WC_Stripe::get_minimum_amount() ) {
|
| 150 |
+
throw new Exception( 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 ) ) );
|
| 151 |
}
|
| 152 |
|
| 153 |
$source = $this->get_source( get_current_user_id(), true );
|
| 160 |
// Store source to order meta
|
| 161 |
$this->save_source( $order, $source );
|
| 162 |
|
|
|
|
|
|
|
|
|
|
| 163 |
// Remove cart
|
| 164 |
WC()->cart->empty_cart();
|
| 165 |
|
includes/class-wc-gateway-stripe.php
CHANGED
|
@@ -66,6 +66,13 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 66 |
*/
|
| 67 |
public $bitcoin;
|
| 68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
/**
|
| 70 |
* Is test mode active?
|
| 71 |
*
|
|
@@ -127,6 +134,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 127 |
$this->publishable_key = $this->testmode ? $this->get_option( 'test_publishable_key' ) : $this->get_option( 'publishable_key' );
|
| 128 |
$this->bitcoin = 'USD' === strtoupper( get_woocommerce_currency() ) && 'yes' === $this->get_option( 'stripe_bitcoin' );
|
| 129 |
$this->logging = 'yes' === $this->get_option( 'logging' );
|
|
|
|
| 130 |
|
| 131 |
if ( $this->stripe_checkout ) {
|
| 132 |
$this->order_button_text = __( 'Continue to payment', 'woocommerce-gateway-stripe' );
|
|
@@ -248,11 +256,32 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 248 |
|
| 249 |
wc_enqueue_js( "
|
| 250 |
jQuery( function( $ ) {
|
| 251 |
-
$( '#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 252 |
if ( $( this ).is( ':checked' ) ) {
|
| 253 |
-
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image' ).closest( 'tr' ).show();
|
| 254 |
} else {
|
| 255 |
-
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image' ).closest( 'tr' ).hide();
|
| 256 |
}
|
| 257 |
}).change();
|
| 258 |
|
|
@@ -287,6 +316,13 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 287 |
public function payment_fields() {
|
| 288 |
$user = wp_get_current_user();
|
| 289 |
$display_tokenization = $this->supports( 'tokenization' ) && is_checkout() && $this->saved_cards;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 290 |
|
| 291 |
if ( $user->ID ) {
|
| 292 |
$user_email = get_user_meta( $user->ID, 'billing_email', true );
|
|
@@ -306,12 +342,13 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 306 |
data-panel-label="' . esc_attr( $pay_button_text ) . '"
|
| 307 |
data-description=""
|
| 308 |
data-email="' . esc_attr( $user_email ) . '"
|
| 309 |
-
data-amount="' . esc_attr( $this->get_stripe_amount(
|
| 310 |
data-name="' . esc_attr( get_bloginfo( 'name', 'display' ) ) . '"
|
| 311 |
data-currency="' . esc_attr( strtolower( get_woocommerce_currency() ) ) . '"
|
| 312 |
data-image="' . esc_attr( $this->stripe_checkout_image ) . '"
|
| 313 |
data-bitcoin="' . esc_attr( $this->bitcoin ? 'true' : 'false' ) . '"
|
| 314 |
-
data-locale="' . esc_attr( $this->stripe_checkout_locale ? $this->stripe_checkout_locale : 'en' ) . '"
|
|
|
|
| 315 |
|
| 316 |
if ( $this->description ) {
|
| 317 |
echo apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $this->description ) ) );
|
|
@@ -557,9 +594,8 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
|
|
| 557 |
|
| 558 |
// Handle payment.
|
| 559 |
if ( $order->get_total() > 0 ) {
|
| 560 |
-
|
| 561 |
-
|
| 562 |
-
throw new Exception( __( 'Sorry, the minimum allowed order total is 0.50 to use this payment method.', 'woocommerce-gateway-stripe' ) );
|
| 563 |
}
|
| 564 |
|
| 565 |
WC_Stripe::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" );
|
| 66 |
*/
|
| 67 |
public $bitcoin;
|
| 68 |
|
| 69 |
+
/**
|
| 70 |
+
* Alow Remember me setting for Stripe Checkout
|
| 71 |
+
*
|
| 72 |
+
* @var bool
|
| 73 |
+
*/
|
| 74 |
+
public $allow_remember_me;
|
| 75 |
+
|
| 76 |
/**
|
| 77 |
* Is test mode active?
|
| 78 |
*
|
| 134 |
$this->publishable_key = $this->testmode ? $this->get_option( 'test_publishable_key' ) : $this->get_option( 'publishable_key' );
|
| 135 |
$this->bitcoin = 'USD' === strtoupper( get_woocommerce_currency() ) && 'yes' === $this->get_option( 'stripe_bitcoin' );
|
| 136 |
$this->logging = 'yes' === $this->get_option( 'logging' );
|
| 137 |
+
$this->allow_remember_me = 'yes' === $this->get_option( 'allow_remember_me', 'no' );
|
| 138 |
|
| 139 |
if ( $this->stripe_checkout ) {
|
| 140 |
$this->order_button_text = __( 'Continue to payment', 'woocommerce-gateway-stripe' );
|
| 256 |
|
| 257 |
wc_enqueue_js( "
|
| 258 |
jQuery( function( $ ) {
|
| 259 |
+
$( document.body ).on( 'change', '#woocommerce_stripe_testmode', function() {
|
| 260 |
+
var test_secret_key = $( '#woocommerce_stripe_test_secret_key' ).parents( 'tr' ).eq( 0 ),
|
| 261 |
+
test_publishable_key = $( '#woocommerce_stripe_test_publishable_key' ).parents( 'tr' ).eq( 0 ),
|
| 262 |
+
live_secret_key = $( '#woocommerce_stripe_secret_key' ).parents( 'tr' ).eq( 0 ),
|
| 263 |
+
live_publishable_key = $( '#woocommerce_stripe_publishable_key' ).parents( 'tr' ).eq( 0 );
|
| 264 |
+
|
| 265 |
+
if ( $( this ).is( ':checked' ) ) {
|
| 266 |
+
test_secret_key.show();
|
| 267 |
+
test_publishable_key.show();
|
| 268 |
+
live_secret_key.hide();
|
| 269 |
+
live_publishable_key.hide();
|
| 270 |
+
} else {
|
| 271 |
+
test_secret_key.hide();
|
| 272 |
+
test_publishable_key.hide();
|
| 273 |
+
live_secret_key.show();
|
| 274 |
+
live_publishable_key.show();
|
| 275 |
+
}
|
| 276 |
+
} );
|
| 277 |
+
|
| 278 |
+
$( '#woocommerce_stripe_testmode' ).change();
|
| 279 |
+
|
| 280 |
+
$( '#woocommerce_stripe_stripe_checkout' ).change( function() {
|
| 281 |
if ( $( this ).is( ':checked' ) ) {
|
| 282 |
+
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image, #woocommerce_stripe_allow_remember_me' ).closest( 'tr' ).show();
|
| 283 |
} else {
|
| 284 |
+
$( '#woocommerce_stripe_stripe_checkout_locale, #woocommerce_stripe_stripe_bitcoin, #woocommerce_stripe_stripe_checkout_image, #woocommerce_stripe_allow_remember_me' ).closest( 'tr' ).hide();
|
| 285 |
}
|
| 286 |
}).change();
|
| 287 |
|
| 316 |
public function payment_fields() {
|
| 317 |
$user = wp_get_current_user();
|
| 318 |
$display_tokenization = $this->supports( 'tokenization' ) && is_checkout() && $this->saved_cards;
|
| 319 |
+
$total = WC()->cart->total;
|
| 320 |
+
|
| 321 |
+
// If paying from order, we need to get total from order not cart.
|
| 322 |
+
if ( isset( $_GET['pay_for_order'] ) && isset( $_GET['key'] ) ) {
|
| 323 |
+
$order = wc_get_order( wc_get_order_id_by_order_key( wc_clean( $_GET['key'] ) ) );
|
| 324 |
+
$total = $order->get_total();
|
| 325 |
+
}
|
| 326 |
|
| 327 |
if ( $user->ID ) {
|
| 328 |
$user_email = get_user_meta( $user->ID, 'billing_email', true );
|
| 342 |
data-panel-label="' . esc_attr( $pay_button_text ) . '"
|
| 343 |
data-description=""
|
| 344 |
data-email="' . esc_attr( $user_email ) . '"
|
| 345 |
+
data-amount="' . esc_attr( $this->get_stripe_amount( $total ) ) . '"
|
| 346 |
data-name="' . esc_attr( get_bloginfo( 'name', 'display' ) ) . '"
|
| 347 |
data-currency="' . esc_attr( strtolower( get_woocommerce_currency() ) ) . '"
|
| 348 |
data-image="' . esc_attr( $this->stripe_checkout_image ) . '"
|
| 349 |
data-bitcoin="' . esc_attr( $this->bitcoin ? 'true' : 'false' ) . '"
|
| 350 |
+
data-locale="' . esc_attr( $this->stripe_checkout_locale ? $this->stripe_checkout_locale : 'en' ) . '"
|
| 351 |
+
data-allow-remember-me="' . esc_attr( $this->allow_remember_me ? 'true' : 'false' ) . '">';
|
| 352 |
|
| 353 |
if ( $this->description ) {
|
| 354 |
echo apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $this->description ) ) );
|
| 594 |
|
| 595 |
// Handle payment.
|
| 596 |
if ( $order->get_total() > 0 ) {
|
| 597 |
+
if ( $order->get_total() * 100 < WC_Stripe::get_minimum_amount() ) {
|
| 598 |
+
throw new Exception( 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 ) ) );
|
|
|
|
| 599 |
}
|
| 600 |
|
| 601 |
WC_Stripe::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" );
|
includes/legacy/class-wc-gateway-stripe.php
CHANGED
|
@@ -441,9 +441,8 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway {
|
|
| 441 |
|
| 442 |
// Handle payment
|
| 443 |
if ( $order->get_total() > 0 ) {
|
| 444 |
-
|
| 445 |
-
|
| 446 |
-
throw new Exception( __( 'Sorry, the minimum allowed order total is 0.50 to use this payment method.', 'woocommerce-gateway-stripe' ) );
|
| 447 |
}
|
| 448 |
|
| 449 |
WC_Stripe::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" );
|
| 441 |
|
| 442 |
// Handle payment
|
| 443 |
if ( $order->get_total() > 0 ) {
|
| 444 |
+
if ( $order->get_total() * 100 < WC_Stripe::get_minimum_amount() ) {
|
| 445 |
+
throw new Exception( 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 ) ) );
|
|
|
|
| 446 |
}
|
| 447 |
|
| 448 |
WC_Stripe::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" );
|
includes/settings-stripe.php
CHANGED
|
@@ -34,29 +34,29 @@ return apply_filters( 'wc_stripe_settings',
|
|
| 34 |
'default' => 'yes',
|
| 35 |
'desc_tip' => true,
|
| 36 |
),
|
| 37 |
-
'
|
| 38 |
-
'title' => __( '
|
| 39 |
'type' => 'text',
|
| 40 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 41 |
'default' => '',
|
| 42 |
'desc_tip' => true,
|
| 43 |
),
|
| 44 |
-
'
|
| 45 |
-
'title' => __( '
|
| 46 |
'type' => 'text',
|
| 47 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 48 |
'default' => '',
|
| 49 |
'desc_tip' => true,
|
| 50 |
),
|
| 51 |
-
'
|
| 52 |
-
'title' => __( '
|
| 53 |
'type' => 'text',
|
| 54 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 55 |
'default' => '',
|
| 56 |
'desc_tip' => true,
|
| 57 |
),
|
| 58 |
-
'
|
| 59 |
-
'title' => __( '
|
| 60 |
'type' => 'text',
|
| 61 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 62 |
'default' => '',
|
|
@@ -78,6 +78,14 @@ return apply_filters( 'wc_stripe_settings',
|
|
| 78 |
'default' => 'no',
|
| 79 |
'desc_tip' => true,
|
| 80 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
'stripe_checkout_locale' => array(
|
| 82 |
'title' => __( 'Stripe Checkout locale', 'woocommerce-gateway-stripe' ),
|
| 83 |
'type' => 'select',
|
|
@@ -88,13 +96,17 @@ return apply_filters( 'wc_stripe_settings',
|
|
| 88 |
'options' => array(
|
| 89 |
'auto' => __( 'Auto', 'woocommerce-gateway-stripe' ),
|
| 90 |
'zh' => __( 'Simplified Chinese', 'woocommerce-gateway-stripe' ),
|
|
|
|
| 91 |
'nl' => __( 'Dutch', 'woocommerce-gateway-stripe' ),
|
| 92 |
'en' => __( 'English', 'woocommerce-gateway-stripe' ),
|
|
|
|
| 93 |
'fr' => __( 'French', 'woocommerce-gateway-stripe' ),
|
| 94 |
'de' => __( 'German', 'woocommerce-gateway-stripe' ),
|
| 95 |
'it' => __( 'Italian', 'woocommerce-gateway-stripe' ),
|
| 96 |
'ja' => __( 'Japanese', 'woocommerce-gateway-stripe' ),
|
|
|
|
| 97 |
'es' => __( 'Spanish', 'woocommerce-gateway-stripe' ),
|
|
|
|
| 98 |
),
|
| 99 |
),
|
| 100 |
'stripe_bitcoin' => array(
|
| 34 |
'default' => 'yes',
|
| 35 |
'desc_tip' => true,
|
| 36 |
),
|
| 37 |
+
'test_secret_key' => array(
|
| 38 |
+
'title' => __( 'Test Secret Key', 'woocommerce-gateway-stripe' ),
|
| 39 |
'type' => 'text',
|
| 40 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 41 |
'default' => '',
|
| 42 |
'desc_tip' => true,
|
| 43 |
),
|
| 44 |
+
'test_publishable_key' => array(
|
| 45 |
+
'title' => __( 'Test Publishable Key', 'woocommerce-gateway-stripe' ),
|
| 46 |
'type' => 'text',
|
| 47 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 48 |
'default' => '',
|
| 49 |
'desc_tip' => true,
|
| 50 |
),
|
| 51 |
+
'secret_key' => array(
|
| 52 |
+
'title' => __( 'Live Secret Key', 'woocommerce-gateway-stripe' ),
|
| 53 |
'type' => 'text',
|
| 54 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 55 |
'default' => '',
|
| 56 |
'desc_tip' => true,
|
| 57 |
),
|
| 58 |
+
'publishable_key' => array(
|
| 59 |
+
'title' => __( 'Live Publishable Key', 'woocommerce-gateway-stripe' ),
|
| 60 |
'type' => 'text',
|
| 61 |
'description' => __( 'Get your API keys from your stripe account.', 'woocommerce-gateway-stripe' ),
|
| 62 |
'default' => '',
|
| 78 |
'default' => 'no',
|
| 79 |
'desc_tip' => true,
|
| 80 |
),
|
| 81 |
+
'allow_remember_me' => array(
|
| 82 |
+
'title' => __( 'Allow Remember Me', 'woocommerce-gateway-stripe' ),
|
| 83 |
+
'label' => __( 'Enable Remember Me', 'woocommerce-gateway-stripe' ),
|
| 84 |
+
'type' => 'checkbox',
|
| 85 |
+
'description' => __( 'If enabled, this option shows a "Remember Me" checkbox which when checked by the customer will persist their details.', 'woocommerce-gateway-stripe' ),
|
| 86 |
+
'default' => 'yes',
|
| 87 |
+
'desc_tip' => true,
|
| 88 |
+
),
|
| 89 |
'stripe_checkout_locale' => array(
|
| 90 |
'title' => __( 'Stripe Checkout locale', 'woocommerce-gateway-stripe' ),
|
| 91 |
'type' => 'select',
|
| 96 |
'options' => array(
|
| 97 |
'auto' => __( 'Auto', 'woocommerce-gateway-stripe' ),
|
| 98 |
'zh' => __( 'Simplified Chinese', 'woocommerce-gateway-stripe' ),
|
| 99 |
+
'da' => __( 'Danish', 'woocommerce-gateway-stripe' ),
|
| 100 |
'nl' => __( 'Dutch', 'woocommerce-gateway-stripe' ),
|
| 101 |
'en' => __( 'English', 'woocommerce-gateway-stripe' ),
|
| 102 |
+
'fi' => __( 'Finnish', 'woocommerce-gateway-stripe' ),
|
| 103 |
'fr' => __( 'French', 'woocommerce-gateway-stripe' ),
|
| 104 |
'de' => __( 'German', 'woocommerce-gateway-stripe' ),
|
| 105 |
'it' => __( 'Italian', 'woocommerce-gateway-stripe' ),
|
| 106 |
'ja' => __( 'Japanese', 'woocommerce-gateway-stripe' ),
|
| 107 |
+
'no' => __( 'Norwegian', 'woocommerce-gateway-stripe' ),
|
| 108 |
'es' => __( 'Spanish', 'woocommerce-gateway-stripe' ),
|
| 109 |
+
'sv' => __( 'Swedish', 'woocommerce-gateway-stripe' ),
|
| 110 |
),
|
| 111 |
),
|
| 112 |
'stripe_bitcoin' => array(
|
readme.txt
CHANGED
|
@@ -2,8 +2,8 @@
|
|
| 2 |
Contributors: automattic, woothemes, mikejolley, akeda, royho, slash1andy, woosteve, spraveenitpro, mikedmoore, fernashes, shellbeezy, danieldudzic, mikaey, dsmithweb, fullysupportedphil, corsonr
|
| 3 |
Tags: credit card, stripe, woocommerce
|
| 4 |
Requires at least: 4.4
|
| 5 |
-
Tested up to: 4.
|
| 6 |
-
Stable tag: 3.0.
|
| 7 |
License: GPLv3
|
| 8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
| 9 |
|
|
@@ -87,6 +87,11 @@ If you get stuck, you can ask for help in the Plugin Forum.
|
|
| 87 |
|
| 88 |
== Changelog ==
|
| 89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
= 3.0.6 =
|
| 91 |
* Fix - When adding declined cards, fatal error is thrown.
|
| 92 |
* Fix - After a failed/declined process, valid cards are not accepted.
|
|
@@ -129,12 +134,7 @@ If you get stuck, you can ask for help in the Plugin Forum.
|
|
| 129 |
|
| 130 |
== Upgrade Notice ==
|
| 131 |
|
| 132 |
-
= 3.0.
|
| 133 |
-
*
|
| 134 |
-
* Fix -
|
| 135 |
-
* Fix -
|
| 136 |
-
* Fix - Account for all types of errors for proper localization.
|
| 137 |
-
* Fix - Correctly reference Stripe fees/net based on Stripe account locale.
|
| 138 |
-
* Fix - Bitcoin image not showing.
|
| 139 |
-
* New - Introduce "wc_gateway_stripe_process_payment_error" action hook.
|
| 140 |
-
* New - Introduce "wc_gateway_stripe_process_payment" action hook.
|
| 2 |
Contributors: automattic, woothemes, mikejolley, akeda, royho, slash1andy, woosteve, spraveenitpro, mikedmoore, fernashes, shellbeezy, danieldudzic, mikaey, dsmithweb, fullysupportedphil, corsonr
|
| 3 |
Tags: credit card, stripe, woocommerce
|
| 4 |
Requires at least: 4.4
|
| 5 |
+
Tested up to: 4.7.1
|
| 6 |
+
Stable tag: 3.0.7
|
| 7 |
License: GPLv3
|
| 8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
| 9 |
|
| 87 |
|
| 88 |
== Changelog ==
|
| 89 |
|
| 90 |
+
= 3.0.7 =
|
| 91 |
+
* New - Option to allow/disallow remember me on Stripe checkout modal.
|
| 92 |
+
* Fix - Paying for order incorrectly uses cart amount.
|
| 93 |
+
* Fix - Using WC function before checking exists causes fatal error.
|
| 94 |
+
|
| 95 |
= 3.0.6 =
|
| 96 |
* Fix - When adding declined cards, fatal error is thrown.
|
| 97 |
* Fix - After a failed/declined process, valid cards are not accepted.
|
| 134 |
|
| 135 |
== Upgrade Notice ==
|
| 136 |
|
| 137 |
+
= 3.0.7 =
|
| 138 |
+
* New - Option to allow/disallow remember me on Stripe checkout modal.
|
| 139 |
+
* Fix - Paying for order incorrectly uses cart amount.
|
| 140 |
+
* Fix - Using WC function before checking exists causes fatal error.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
woocommerce-gateway-stripe.php
CHANGED
|
@@ -3,13 +3,13 @@
|
|
| 3 |
* Plugin Name: WooCommerce Stripe Gateway
|
| 4 |
* Plugin URI: https://wordpress.org/plugins/woocommerce-gateway-stripe/
|
| 5 |
* Description: Take credit card payments on your store using Stripe.
|
| 6 |
-
* Author:
|
| 7 |
* Author URI: https://woocommerce.com/
|
| 8 |
-
* Version: 3.0.
|
| 9 |
* Text Domain: woocommerce-gateway-stripe
|
| 10 |
* Domain Path: /languages
|
| 11 |
*
|
| 12 |
-
* Copyright (c)
|
| 13 |
*
|
| 14 |
* This program is free software: you can redistribute it and/or modify
|
| 15 |
* it under the terms of the GNU General Public License as published by
|
|
@@ -32,7 +32,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
| 32 |
/**
|
| 33 |
* Required minimums and constants
|
| 34 |
*/
|
| 35 |
-
define( 'WC_STRIPE_VERSION', '3.0.
|
| 36 |
define( 'WC_STRIPE_MIN_PHP_VER', '5.3.0' );
|
| 37 |
define( 'WC_STRIPE_MIN_WC_VER', '2.5.0' );
|
| 38 |
define( 'WC_STRIPE_MAIN_FILE', __FILE__ );
|
|
@@ -224,7 +224,7 @@ class WC_Stripe {
|
|
| 224 |
* @return string Setting link
|
| 225 |
*/
|
| 226 |
public function get_setting_link() {
|
| 227 |
-
$use_id_as_section = version_compare( WC()->version, '2.6', '>=' );
|
| 228 |
|
| 229 |
$section_slug = $use_id_as_section ? 'stripe' : strtolower( 'WC_Gateway_Stripe' );
|
| 230 |
|
|
@@ -415,6 +415,49 @@ class WC_Stripe {
|
|
| 415 |
$stripe_customer->set_default_card( $token->get_token() );
|
| 416 |
}
|
| 417 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 418 |
|
| 419 |
/**
|
| 420 |
* What rolls down stairs
|
| 3 |
* Plugin Name: WooCommerce Stripe Gateway
|
| 4 |
* Plugin URI: https://wordpress.org/plugins/woocommerce-gateway-stripe/
|
| 5 |
* Description: Take credit card payments on your store using Stripe.
|
| 6 |
+
* Author: WooCommerce
|
| 7 |
* Author URI: https://woocommerce.com/
|
| 8 |
+
* Version: 3.0.7
|
| 9 |
* Text Domain: woocommerce-gateway-stripe
|
| 10 |
* Domain Path: /languages
|
| 11 |
*
|
| 12 |
+
* Copyright (c) 2017 WooCommerce
|
| 13 |
*
|
| 14 |
* This program is free software: you can redistribute it and/or modify
|
| 15 |
* it under the terms of the GNU General Public License as published by
|
| 32 |
/**
|
| 33 |
* Required minimums and constants
|
| 34 |
*/
|
| 35 |
+
define( 'WC_STRIPE_VERSION', '3.0.7' );
|
| 36 |
define( 'WC_STRIPE_MIN_PHP_VER', '5.3.0' );
|
| 37 |
define( 'WC_STRIPE_MIN_WC_VER', '2.5.0' );
|
| 38 |
define( 'WC_STRIPE_MAIN_FILE', __FILE__ );
|
| 224 |
* @return string Setting link
|
| 225 |
*/
|
| 226 |
public function get_setting_link() {
|
| 227 |
+
$use_id_as_section = function_exists( 'WC' ) ? version_compare( WC()->version, '2.6', '>=' ) : false;
|
| 228 |
|
| 229 |
$section_slug = $use_id_as_section ? 'stripe' : strtolower( 'WC_Gateway_Stripe' );
|
| 230 |
|
| 415 |
$stripe_customer->set_default_card( $token->get_token() );
|
| 416 |
}
|
| 417 |
}
|
| 418 |
+
|
| 419 |
+
/**
|
| 420 |
+
* Checks Stripe minimum order value authorized per currency
|
| 421 |
+
*/
|
| 422 |
+
public static function get_minimum_amount() {
|
| 423 |
+
|
| 424 |
+
// Check order amount
|
| 425 |
+
switch ( get_woocommerce_currency() ) {
|
| 426 |
+
case 'USD':
|
| 427 |
+
case 'CAD':
|
| 428 |
+
case 'EUR':
|
| 429 |
+
case 'CHF':
|
| 430 |
+
case 'AUD':
|
| 431 |
+
case 'SGD':
|
| 432 |
+
$minimum_amount = 50;
|
| 433 |
+
break;
|
| 434 |
+
case 'GBP':
|
| 435 |
+
$minimum_amount = 30;
|
| 436 |
+
break;
|
| 437 |
+
case 'DKK':
|
| 438 |
+
$minimum_amount = 250;
|
| 439 |
+
break;
|
| 440 |
+
case 'NOK':
|
| 441 |
+
case 'SEK':
|
| 442 |
+
$minimum_amount = 300;
|
| 443 |
+
break;
|
| 444 |
+
case 'JPY':
|
| 445 |
+
$minimum_amount = 5000;
|
| 446 |
+
break;
|
| 447 |
+
case 'MXN':
|
| 448 |
+
$minimum_amount = 1000;
|
| 449 |
+
break;
|
| 450 |
+
case 'HKD':
|
| 451 |
+
$minimum_amount = 400;
|
| 452 |
+
break;
|
| 453 |
+
default:
|
| 454 |
+
$minimum_amount = 50;
|
| 455 |
+
break;
|
| 456 |
+
}
|
| 457 |
+
|
| 458 |
+
return $minimum_amount;
|
| 459 |
+
|
| 460 |
+
}
|
| 461 |
|
| 462 |
/**
|
| 463 |
* What rolls down stairs
|
