WooCommerce Stripe Payment Gateway - Version 3.0.3

Version Description

  • Fix - Remove bitcoin icon when not using Stripe Checkout mode as it is not supported.
  • Fix - Failed payment order was not sending email to admin.
  • Fix - Saved card option was not being honored.
  • New - Filter for WC_Payment_Gateway_CC::wc_stripe_generate_payment_request return value.
  • New - Filter to disallow prepaid cards. "wc_stripe_allow_prepaid_card".
  • New - Filter to require billing address on Stripe Modal Checkout. "wc_stripe_checkout_require_billing_address".
  • New - Localized Stripe error messages.
Download this release

Release Info

Developer royho
Plugin Icon 128x128 WooCommerce Stripe Payment Gateway
Version 3.0.3
Comparing to
See all releases

Code changes from version 3.0.2 to 3.0.3

assets/js/stripe.js CHANGED
@@ -2,13 +2,14 @@
2
Stripe.setPublishableKey( wc_stripe_params.key );
3
4
jQuery( function( $ ) {
5
-
6
/* Open and close for legacy class */
7
- jQuery( "form.checkout, form#order_review" ).on('change', 'input[name="wc-stripe-payment-token"]', function() {
8
- if ( jQuery( '.stripe-legacy-payment-fields input[name="wc-stripe-payment-token"]:checked' ).val() == 'new' ) {
9
- jQuery( '.stripe-legacy-payment-fields #stripe-payment-data' ).slideDown( 200 );
10
} else {
11
- jQuery( '.stripe-legacy-payment-fields #stripe-payment-data' ).slideUp( 200 );
12
}
13
} );
14
@@ -20,12 +21,37 @@ jQuery( function( $ ) {
20
/**
21
* Initialize event handlers and UI state.
22
*/
23
- init: function( form ) {
24
- this.form = form;
25
26
- $( this.form )
27
.on(
28
- 'submit checkout_place_order_stripe',
29
this.onSubmit
30
);
31
@@ -64,8 +90,14 @@ jQuery( function( $ ) {
64
},
65
66
onError: function( e, responseObject ) {
67
$( '.woocommerce-error, .stripe_token' ).remove();
68
- $( '#stripe-card-number' ).closest( 'p' ).before( '<ul class="woocommerce_error woocommerce-error"><li>' + responseObject.response.error.message + '</li></ul>' );
69
wc_stripe_form.unblock();
70
},
71
@@ -79,26 +111,25 @@ jQuery( function( $ ) {
79
expires = $( '#stripe-card-expiry' ).payment( 'cardExpiryVal' ),
80
first_name = $( '#billing_first_name' ).length ? $( '#billing_first_name' ).val() : wc_stripe_params.billing_first_name,
81
last_name = $( '#billing_last_name' ).length ? $( '#billing_last_name' ).val() : wc_stripe_params.billing_last_name,
82
- address = {
83
-
84
- },
85
data = {
86
number : card,
87
cvc : cvc,
88
- exp_month: parseInt( expires['month'] ) || 0,
89
- exp_year : parseInt( expires['year'] ) || 0,
90
- name : first_name + ' ' + last_name
91
-
92
};
93
94
- if ( jQuery('#billing_address_1').length > 0 ) {
95
data.address_line1 = $( '#billing_address_1' ).val();
96
data.address_line2 = $( '#billing_address_2' ).val();
97
data.address_state = $( '#billing_state' ).val();
98
data.address_city = $( '#billing_city' ).val();
99
data.address_zip = $( '#billing_postcode' ).val();
100
data.address_country = $( '#billing_country' ).val();
101
- } else if ( data.address_line1 ) {
102
data.address_line1 = wc_stripe_params.billing_address_1;
103
data.address_line2 = wc_stripe_params.billing_address_2;
104
data.address_state = wc_stripe_params.billing_state;
@@ -107,7 +138,7 @@ jQuery( function( $ ) {
107
data.address_country = wc_stripe_params.billing_country;
108
}
109
110
- Stripe.createToken( data, wc_stripe_form.onStripeReponse );
111
112
// Prevent form submitting
113
return false;
@@ -118,10 +149,19 @@ jQuery( function( $ ) {
118
$( '.woocommerce-error, .stripe_token' ).remove();
119
},
120
121
- onStripeReponse: function( status, response ) {
122
if ( response.error ) {
123
$( document ).trigger( 'stripeError', { response: response } );
124
} else {
125
// token contains id, last4, and card type
126
var token = response['id'];
127
@@ -132,5 +172,5 @@ jQuery( function( $ ) {
132
}
133
};
134
135
- wc_stripe_form.init( $( "form.checkout, form#order_review, form#add_payment_method" ) );
136
} );
2
Stripe.setPublishableKey( wc_stripe_params.key );
3
4
jQuery( function( $ ) {
5
+ 'use strict';
6
+
7
/* Open and close for legacy class */
8
+ $( 'form.checkout, form#order_review' ).on( 'change', 'input[name="wc-stripe-payment-token"]', function() {
9
+ if ( 'new' === $( '.stripe-legacy-payment-fields input[name="wc-stripe-payment-token"]:checked' ).val() ) {
10
+ $( '.stripe-legacy-payment-fields #stripe-payment-data' ).slideDown( 200 );
11
} else {
12
+ $( '.stripe-legacy-payment-fields #stripe-payment-data' ).slideUp( 200 );
13
}
14
} );
15
21
/**
22
* Initialize event handlers and UI state.
23
*/
24
+ init: function() {
25
+ // checkout page
26
+ if ( $( 'form.woocommerce-checkout' ).length ) {
27
+ this.form = $( 'form.woocommerce-checkout' );
28
+ }
29
+
30
+ $( 'form.woocommerce-checkout' )
31
+ .on(
32
+ 'checkout_place_order_stripe',
33
+ this.onSubmit
34
+ );
35
+
36
+ // pay order page
37
+ if ( $( 'form#order_review' ).length ) {
38
+ this.form = $( 'form#order_review' );
39
+ }
40
+
41
+ $( 'form#order_review' )
42
+ .on(
43
+ 'submit',
44
+ this.onSubmit
45
+ );
46
47
+ // add payment method page
48
+ if ( $( 'form#add_payment_method' ).length ) {
49
+ this.form = $( 'form#add_payment_method' );
50
+ }
51
+
52
+ $( 'form#add_payment_method' )
53
.on(
54
+ 'submit',
55
this.onSubmit
56
);
57
90
},
91
92
onError: function( e, responseObject ) {
93
+ var message = responseObject.response.error.message;
94
+
95
+ if ( wc_stripe_params.hasOwnProperty( responseObject.response.error.code ) ) {
96
+ message = wc_stripe_params[ responseObject.response.error.code ];
97
+ }
98
+
99
$( '.woocommerce-error, .stripe_token' ).remove();
100
+ $( '#stripe-card-number' ).closest( 'p' ).before( '<ul class="woocommerce_error woocommerce-error"><li>' + message + '</li></ul>' );
101
wc_stripe_form.unblock();
102
},
103
111
expires = $( '#stripe-card-expiry' ).payment( 'cardExpiryVal' ),
112
first_name = $( '#billing_first_name' ).length ? $( '#billing_first_name' ).val() : wc_stripe_params.billing_first_name,
113
last_name = $( '#billing_last_name' ).length ? $( '#billing_last_name' ).val() : wc_stripe_params.billing_last_name,
114
data = {
115
number : card,
116
cvc : cvc,
117
+ exp_month: parseInt( expires['month'], 10 ) || 0,
118
+ exp_year : parseInt( expires['year'], 10 ) || 0
119
};
120
121
+ if ( first_name && last_name ) {
122
+ data.name = first_name + ' ' + last_name
123
+ }
124
+
125
+ if ( $( '#billing_address_1' ).length > 0 ) {
126
data.address_line1 = $( '#billing_address_1' ).val();
127
data.address_line2 = $( '#billing_address_2' ).val();
128
data.address_state = $( '#billing_state' ).val();
129
data.address_city = $( '#billing_city' ).val();
130
data.address_zip = $( '#billing_postcode' ).val();
131
data.address_country = $( '#billing_country' ).val();
132
+ } else if ( wc_stripe_params.billing_address_1 ) {
133
data.address_line1 = wc_stripe_params.billing_address_1;
134
data.address_line2 = wc_stripe_params.billing_address_2;
135
data.address_state = wc_stripe_params.billing_state;
138
data.address_country = wc_stripe_params.billing_country;
139
}
140
141
+ Stripe.createToken( data, wc_stripe_form.onStripeResponse );
142
143
// Prevent form submitting
144
return false;
149
$( '.woocommerce-error, .stripe_token' ).remove();
150
},
151
152
+ onStripeResponse: function( status, response ) {
153
if ( response.error ) {
154
$( document ).trigger( 'stripeError', { response: response } );
155
} else {
156
+ // check if we allow prepaid cards
157
+ if ( 'no' === wc_stripe_params.allow_prepaid_card && 'prepaid' === response.card.funding ) {
158
+ response.error = { message: wc_stripe_params.no_prepaid_card_msg };
159
+
160
+ $( document ).trigger( 'stripeError', { response: response } );
161
+
162
+ return false;
163
+ }
164
+
165
// token contains id, last4, and card type
166
var token = response['id'];
167
172
}
173
};
174
175
+ wc_stripe_form.init();
176
} );
assets/js/stripe.min.js ADDED
@@ -0,0 +1 @@
1
+ Stripe.setPublishableKey(wc_stripe_params.key),jQuery(function(a){"use strict";a("form.checkout, form#order_review").on("change",'input[name="wc-stripe-payment-token"]',function(){"new"===a('.stripe-legacy-payment-fields input[name="wc-stripe-payment-token"]:checked').val()?a(".stripe-legacy-payment-fields #stripe-payment-data").slideDown(200):a(".stripe-legacy-payment-fields #stripe-payment-data").slideUp(200)});var b={init:function(){a("form.woocommerce-checkout").length&&(this.form=a("form.woocommerce-checkout")),a("form.woocommerce-checkout").on("checkout_place_order_stripe",this.onSubmit),a("form#order_review").length&&(this.form=a("form#order_review")),a("form#order_review").on("submit",this.onSubmit),a("form#add_payment_method").length&&(this.form=a("form#add_payment_method")),a("form#add_payment_method").on("submit",this.onSubmit),a(document).on("change","#wc-stripe-cc-form :input",this.onCCFormChange).on("stripeError",this.onError)},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())},hasToken:function(){return 0<a("input.stripe_token").length},block:function(){b.form.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},unblock:function(){b.form.unblock()},onError:function(c,d){var e=d.response.error.message;wc_stripe_params.hasOwnProperty(d.response.error.code)&&(e=wc_stripe_params[d.response.error.code]),a(".woocommerce-error, .stripe_token").remove(),a("#stripe-card-number").closest("p").before('<ul class="woocommerce_error woocommerce-error"><li>'+e+"</li></ul>"),b.unblock()},onSubmit:function(c){if(b.isStripeChosen()&&!b.hasToken()){c.preventDefault(),b.block();var d=a("#stripe-card-number").val(),e=a("#stripe-card-cvc").val(),f=a("#stripe-card-expiry").payment("cardExpiryVal"),g=a("#billing_first_name").length?a("#billing_first_name").val():wc_stripe_params.billing_first_name,h=a("#billing_last_name").length?a("#billing_last_name").val():wc_stripe_params.billing_last_name,i={number:d,cvc:e,exp_month:parseInt(f.month,10)||0,exp_year:parseInt(f.year,10)||0};return g&&h&&(i.name=g+" "+h),a("#billing_address_1").length>0?(i.address_line1=a("#billing_address_1").val(),i.address_line2=a("#billing_address_2").val(),i.address_state=a("#billing_state").val(),i.address_city=a("#billing_city").val(),i.address_zip=a("#billing_postcode").val(),i.address_country=a("#billing_country").val()):wc_stripe_params.billing_address_1&&(i.address_line1=wc_stripe_params.billing_address_1,i.address_line2=wc_stripe_params.billing_address_2,i.address_state=wc_stripe_params.billing_state,i.address_city=wc_stripe_params.billing_city,i.address_zip=wc_stripe_params.billing_postcode,i.address_country=wc_stripe_params.billing_country),Stripe.createToken(i,b.onStripeResponse),!1}},onCCFormChange:function(){a(".woocommerce-error, .stripe_token").remove()},onStripeResponse:function(c,d){if(d.error)a(document).trigger("stripeError",{response:d});else{if("no"===wc_stripe_params.allow_prepaid_card&&"prepaid"===d.card.funding)return d.error={message:wc_stripe_params.no_prepaid_card_msg},a(document).trigger("stripeError",{response:d}),!1;var e=d.id;b.form.append("<input type='hidden' class='stripe_token' name='stripe_token' value='"+e+"'/>"),b.form.submit()}}};b.init()});
assets/js/stripe_checkout.js CHANGED
@@ -1,5 +1,6 @@
1
jQuery( function( $ ) {
2
-
3
/**
4
* Object to handle Stripe payment forms.
5
*/
@@ -109,7 +110,7 @@ jQuery( function( $ ) {
109
110
StripeCheckout.open({
111
key : wc_stripe_params.key,
112
- address : false,
113
amount : $data.data( 'amount' ),
114
name : $data.data( 'name' ),
115
description : $data.data( 'description' ),
@@ -117,9 +118,8 @@ jQuery( function( $ ) {
117
image : $data.data( 'image' ),
118
bitcoin : $data.data( 'bitcoin' ),
119
locale : $data.data( 'locale' ),
120
- refund_mispayments: true, // for bitcoin payments let Stripe handle refunds if too little is paid
121
email : $( '#billing_email' ).val() || $data.data( 'email' ),
122
- "panel-label" : $data.data( 'panel-label' ),
123
token : token_action,
124
closed : wc_stripe_form.onClose()
125
});
1
jQuery( function( $ ) {
2
+ 'use strict';
3
+
4
/**
5
* Object to handle Stripe payment forms.
6
*/
110
111
StripeCheckout.open({
112
key : wc_stripe_params.key,
113
+ billingAddress : 'yes' === wc_stripe_params.stripe_checkout_require_billing_address ? true : false,
114
amount : $data.data( 'amount' ),
115
name : $data.data( 'name' ),
116
description : $data.data( 'description' ),
118
image : $data.data( 'image' ),
119
bitcoin : $data.data( 'bitcoin' ),
120
locale : $data.data( 'locale' ),
121
email : $( '#billing_email' ).val() || $data.data( 'email' ),
122
+ panelLabel : $data.data( 'panel-label' ),
123
token : token_action,
124
closed : wc_stripe_form.onClose()
125
});
assets/js/stripe_checkout.min.js ADDED
@@ -0,0 +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")},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=b.form.find("input.stripe_token");if(b.stripe_submit&&d)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(a("#ship-to-different-address-checkbox").is(":checked")?$required_inputs=a(".woocommerce-billing-fields .validate-required, .woocommerce-shipping-fields .validate-required"):$required_inputs=a(".woocommerce-billing-fields .validate-required"),$required_inputs.length){var e=!1;if($required_inputs.each(function(){""===a(this).find("input.input-text, select").not(a("#account_password, #account_username")).val()&&(e=!0)}),e)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?!0:!1,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"),token:g,closed:b.onClose()}),!1}return!0}};b.init(a("form.checkout, form#order_review, form#add_payment_method"))});
includes/class-wc-gateway-stripe-addons.php CHANGED
@@ -78,9 +78,9 @@ class WC_Gateway_Stripe_Addons extends WC_Gateway_Stripe {
78
parent::save_source( $order, $source );
79
80
// Also store it on the subscriptions being purchased or paid for in the order
81
- if ( wcs_order_contains_subscription( $order->id ) ) {
82
$subscriptions = wcs_get_subscriptions_for_order( $order->id );
83
- } elseif ( wcs_order_contains_renewal( $order->id ) ) {
84
$subscriptions = wcs_get_subscriptions_for_renewal_order( $order->id );
85
} else {
86
$subscriptions = array();
@@ -117,7 +117,7 @@ class WC_Gateway_Stripe_Addons extends WC_Gateway_Stripe {
117
return new WP_Error( 'stripe_error', __( 'Customer not found', 'woocommerce-gateway-stripe' ) );
118
}
119
120
- WC_Stripe::log( "Info: Begin processing subscriotion payment for order {$order->id} for the amount of {$amount}" );
121
122
// Make the request
123
$request = $this->generate_payment_request( $order, $source );
@@ -255,27 +255,10 @@ class WC_Gateway_Stripe_Addons extends WC_Gateway_Stripe {
255
* @param $renewal_order WC_Order A WC_Order object created to record the renewal payment.
256
*/
257
public function scheduled_subscription_payment( $amount_to_charge, $renewal_order ) {
258
- // Define some callbacks if the first attempt fails.
259
- $retry_callbacks = array(
260
- 'remove_order_source_before_retry',
261
- 'remove_order_customer_before_retry',
262
- );
263
-
264
- while ( 1 ) {
265
- $response = $this->process_subscription_payment( $renewal_order, $amount_to_charge );
266
267
- if ( is_wp_error( $response ) ) {
268
- if ( 0 === sizeof( $retry_callbacks ) ) {
269
- $renewal_order->update_status( 'failed', sprintf( __( 'Stripe Transaction Failed (%s)', 'woocommerce-gateway-stripe' ), $response->get_error_message() ) );
270
- break;
271
- } else {
272
- $retry_callback = array_shift( $retry_callbacks );
273
- call_user_func( array( $this, $retry_callback ), $renewal_order );
274
- }
275
- } else {
276
- // Successful
277
- break;
278
- }
279
}
280
}
281
78
parent::save_source( $order, $source );
79
80
// Also store it on the subscriptions being purchased or paid for in the order
81
+ if ( function_exists( 'wcs_order_contains_subscription' ) && wcs_order_contains_subscription( $order->id ) ) {
82
$subscriptions = wcs_get_subscriptions_for_order( $order->id );
83
+ } elseif ( function_exists( 'wcs_order_contains_renewal' ) && wcs_order_contains_renewal( $order->id ) ) {
84
$subscriptions = wcs_get_subscriptions_for_renewal_order( $order->id );
85
} else {
86
$subscriptions = array();
117
return new WP_Error( 'stripe_error', __( 'Customer not found', 'woocommerce-gateway-stripe' ) );
118
}
119
120
+ WC_Stripe::log( "Info: Begin processing subscription payment for order {$order->id} for the amount of {$amount}" );
121
122
// Make the request
123
$request = $this->generate_payment_request( $order, $source );
255
* @param $renewal_order WC_Order A WC_Order object created to record the renewal payment.
256
*/
257
public function scheduled_subscription_payment( $amount_to_charge, $renewal_order ) {
258
+ $response = $this->process_subscription_payment( $renewal_order, $amount_to_charge );
259
260
+ if ( is_wp_error( $response ) ) {
261
+ $renewal_order->update_status( 'failed', sprintf( __( 'Stripe Transaction Failed (%s)', 'woocommerce-gateway-stripe' ), $response->get_error_message() ) );
262
}
263
}
264
includes/class-wc-gateway-stripe.php CHANGED
@@ -10,6 +10,76 @@ if ( ! defined( 'ABSPATH' ) ) {
10
*/
11
class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
12
13
/**
14
* Constructor
15
*/
@@ -27,7 +97,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
27
'subscription_reactivation',
28
'subscription_suspension',
29
'subscription_amount_changes',
30
- 'subscription_payment_method_change', // Subs 1.n compatibility
31
'subscription_payment_method_change_customer',
32
'subscription_payment_method_change_admin',
33
'subscription_date_changes',
@@ -36,7 +106,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
36
'tokenization',
37
);
38
39
- // Load the form fields
40
$this->init_form_fields();
41
42
// Load the settings.
@@ -68,14 +138,14 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
68
69
WC_Stripe_API::set_secret_key( $this->secret_key );
70
71
- // Hooks
72
add_action( 'wp_enqueue_scripts', array( $this, 'payment_scripts' ) );
73
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
74
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
75
}
76
77
/**
78
- * get_icon function.
79
*
80
* @access public
81
* @return string
@@ -94,7 +164,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
94
$icon .= '<img src="' . WC_HTTPS::force_https_url( WC()->plugin_url() . '/assets/images/icons/credit-cards/diners' . $ext ) . '" alt="Diners" width="32" ' . $style . ' />';
95
}
96
97
- if ( $this->bitcoin ) {
98
$icon .= '<img src="' . WC_HTTPS::force_https_url( plugins_url( '/assets/images/bitcoin' . $ext, WC_STRIPE_MAIN_FILE ) ) . '" alt="Bitcoin" width="32" ' . $style . ' />';
99
}
100
@@ -103,14 +173,18 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
103
104
/**
105
* Get Stripe amount to pay
106
- * @return float
107
*/
108
public function get_stripe_amount( $total, $currency = '' ) {
109
if ( ! $currency ) {
110
$currency = get_woocommerce_currency();
111
}
112
switch ( strtoupper( $currency ) ) {
113
- // Zero decimal currencies
114
case 'BIF' :
115
case 'CLP' :
116
case 'DJF' :
@@ -129,7 +203,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
129
$total = absint( $total );
130
break;
131
default :
132
- $total = round( $total, 2 ) * 100; // In cents
133
break;
134
}
135
return $total;
@@ -143,9 +217,9 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
143
return;
144
}
145
146
- // Show message if enabled and FORCE SSL is disabled and WordpressHTTPS plugin is not detected
147
if ( ( function_exists( 'wc_site_is_https' ) && ! wc_site_is_https() ) && ( 'no' === get_option( 'woocommerce_force_ssl_checkout' ) && ! class_exists( 'WordPressHTTPS' ) ) ) {
148
- echo '<div class="error"><p>' . sprintf( __( 'Stripe is enabled, but the <a href="%s">force SSL option</a> is disabled; your checkout may not be secure! Please enable SSL and ensure your server has a valid SSL certificate - Stripe will only work in test mode.', 'woocommerce-gateway-stripe' ), admin_url( 'admin.php?page=wc-settings&tab=checkout' ) ) . '</p></div>';
149
}
150
}
151
@@ -211,7 +285,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
211
*/
212
public function payment_fields() {
213
$user = wp_get_current_user();
214
- $display_tokenization = $this->supports( 'tokenization' ) && is_checkout() && $this->saved_cards && $user->ID;
215
216
if ( $user->ID ) {
217
$user_email = get_user_meta( $user->ID, 'billing_email', true );
@@ -249,7 +323,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
249
250
if ( ! $this->stripe_checkout ) {
251
$this->form();
252
-
253
if ( $display_tokenization ) {
254
$this->save_payment_method_checkbox();
255
}
@@ -266,12 +340,14 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
266
* @access public
267
*/
268
public function payment_scripts() {
269
if ( $this->stripe_checkout ) {
270
wp_enqueue_script( 'stripe', 'https://checkout.stripe.com/v2/checkout.js', '', '2.0', true );
271
- wp_enqueue_script( 'woocommerce_stripe', plugins_url( 'assets/js/stripe_checkout.js', WC_STRIPE_MAIN_FILE ), array( 'stripe' ), WC_STRIPE_VERSION, true );
272
} else {
273
wp_enqueue_script( 'stripe', 'https://js.stripe.com/v2/', '', '1.0', true );
274
- wp_enqueue_script( 'woocommerce_stripe', plugins_url( 'assets/js/stripe.js', WC_STRIPE_MAIN_FILE ), array( 'jquery-payment', 'stripe' ), WC_STRIPE_VERSION, true );
275
}
276
277
$stripe_params = array(
@@ -298,6 +374,24 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
298
}
299
}
300
301
wp_localize_script( 'woocommerce_stripe', 'wc_stripe_params', apply_filters( 'wc_stripe_params', $stripe_params ) );
302
}
303
@@ -328,12 +422,24 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
328
$post_data['source'] = $source->source;
329
}
330
331
- return $post_data;
332
}
333
334
/**
335
* Get payment source. This can be a new token or existing card.
336
- * @param bool $force_customer Should we force customer creation?
337
* @return object
338
*/
339
protected function get_source( $user_id, $force_customer = false ) {
@@ -344,7 +450,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
344
// New CC info was entered and we have a new token to process
345
if ( isset( $_POST['stripe_token'] ) ) {
346
$stripe_token = wc_clean( $_POST['stripe_token'] );
347
- $maybe_saved_card = ! isset( $_POST['wc-stripe-new-payment-method'] ) || ! empty( $_POST['wc-stripe-new-payment-method'] );
348
349
// This is true if the user wants to store the card to their account.
350
if ( ( $user_id && $this->saved_cards && $maybe_saved_card ) || $force_customer ) {
@@ -415,6 +521,14 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
415
416
/**
417
* Process the payment
418
*/
419
public function process_payment( $order_id, $retry = true, $force_customer = false ) {
420
try {
@@ -427,10 +541,10 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
427
throw new Exception( $error_msg );
428
}
429
430
- // Store source to order meta
431
$this->save_source( $order, $source );
432
433
- // Handle payment
434
if ( $order->get_total() > 0 ) {
435
436
if ( $order->get_total() * 100 < 50 ) {
@@ -439,7 +553,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
439
440
WC_Stripe::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" );
441
442
- // Make the request
443
$response = WC_Stripe_API::request( $this->generate_payment_request( $order, $source ) );
444
445
if ( is_wp_error( $response ) ) {
@@ -447,8 +561,8 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
447
if ( 'customer' === $response->get_error_code() && $retry ) {
448
delete_user_meta( get_current_user_id(), '_stripe_customer_id' );
449
return $this->process_payment( $order_id, false, $force_customer );
450
- // Source param wrong? The CARD may have been deleted on stripe's end. Remove token and show message.
451
- } elseif ( 'source' === $response->get_error_code() && $source->token_id ) {
452
$token = WC_Payment_Tokens::get( $source->token_id );
453
$token->delete();
454
throw new Exception( __( 'This card is no longer available and has been removed.', 'woocommerce-gateway-stripe' ) );
@@ -456,16 +570,16 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
456
throw new Exception( $response->get_error_code() . ': ' . $response->get_error_message() );
457
}
458
459
- // Process valid response
460
$this->process_response( $response, $order );
461
} else {
462
$order->payment_complete();
463
}
464
465
- // Remove cart
466
WC()->cart->empty_cart();
467
468
- // Return thank you page redirect
469
return array(
470
'result' => 'success',
471
'redirect' => $this->get_return_url( $order )
@@ -475,15 +589,23 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
475
wc_add_notice( $e->getMessage(), 'error' );
476
WC()->session->set( 'refresh_totals', true );
477
WC_Stripe::log( sprintf( __( 'Error: %s', 'woocommerce-gateway-stripe' ), $e->getMessage() ) );
478
return;
479
}
480
}
481
482
/**
483
* Save source to order.
484
*/
485
protected function save_source( $order, $source ) {
486
- // Store source in the order
487
if ( $source->customer ) {
488
update_post_meta( $order->id, '_stripe_customer_id', $source->customer );
489
}
@@ -511,7 +633,11 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
511
512
if ( $response->captured ) {
513
$order->payment_complete( $response->id );
514
- WC_Stripe::log( "Successful charge: $response->id" );
515
} else {
516
add_post_meta( $order->id, '_transaction_id', $response->id, true );
517
@@ -589,4 +715,19 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
589
return true;
590
}
591
}
592
}
10
*/
11
class WC_Gateway_Stripe extends WC_Payment_Gateway_CC {
12
13
+ /**
14
+ * Should we capture Credit cards
15
+ *
16
+ * @var bool
17
+ */
18
+ public $capture;
19
+
20
+ /**
21
+ * Checkout enabled
22
+ *
23
+ * @var bool
24
+ */
25
+ public $stripe_checkout;
26
+
27
+ /**
28
+ * Checkout Locale
29
+ *
30
+ * @var string
31
+ */
32
+ public $stripe_checkout_locale;
33
+
34
+ /**
35
+ * Credit card image
36
+ *
37
+ * @var string
38
+ */
39
+ public $stripe_checkout_image;
40
+
41
+ /**
42
+ * Should we store the users credit cards?
43
+ *
44
+ * @var bool
45
+ */
46
+ public $saved_cards;
47
+
48
+ /**
49
+ * API access secret key
50
+ *
51
+ * @var string
52
+ */
53
+ public $secret_key;
54
+
55
+ /**
56
+ * Api access publishable key
57
+ *
58
+ * @var string
59
+ */
60
+ public $publishable_key;
61
+
62
+ /**
63
+ * Do we accept bitcoin?
64
+ *
65
+ * @var bool
66
+ */
67
+ public $bitcoin;
68
+
69
+ /**
70
+ * Is test mode active?
71
+ *
72
+ * @var bool
73
+ */
74
+ public $testmode;
75
+
76
+ /**
77
+ * Logging enabled?
78
+ *
79
+ * @var bool
80
+ */
81
+ public $logging;
82
+
83
/**
84
* Constructor
85
*/
97
'subscription_reactivation',
98
'subscription_suspension',
99
'subscription_amount_changes',
100
+ 'subscription_payment_method_change', // Subs 1.n compatibility.
101
'subscription_payment_method_change_customer',
102
'subscription_payment_method_change_admin',
103
'subscription_date_changes',
106
'tokenization',
107
);
108
109
+ // Load the form fields.
110
$this->init_form_fields();
111
112
// Load the settings.
138
139
WC_Stripe_API::set_secret_key( $this->secret_key );
140
141
+ // Hooks.
142
add_action( 'wp_enqueue_scripts', array( $this, 'payment_scripts' ) );
143
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
144
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
145
}
146
147
/**
148
+ * Get_icon function.
149
*
150
* @access public
151
* @return string
164
$icon .= '<img src="' . WC_HTTPS::force_https_url( WC()->plugin_url() . '/assets/images/icons/credit-cards/diners' . $ext ) . '" alt="Diners" width="32" ' . $style . ' />';
165
}
166
167
+ if ( 'yes' === $this->bitcoin && 'yes' === $this->stripe_checkout ) {
168
$icon .= '<img src="' . WC_HTTPS::force_https_url( plugins_url( '/assets/images/bitcoin' . $ext, WC_STRIPE_MAIN_FILE ) ) . '" alt="Bitcoin" width="32" ' . $style . ' />';
169
}
170
173
174
/**
175
* Get Stripe amount to pay
176
+ *
177
+ * @param float $total Amount due.
178
+ * @param string $currency Accepted currency.
179
+ *
180
+ * @return float|int
181
*/
182
public function get_stripe_amount( $total, $currency = '' ) {
183
if ( ! $currency ) {
184
$currency = get_woocommerce_currency();
185
}
186
switch ( strtoupper( $currency ) ) {
187
+ // Zero decimal currencies.
188
case 'BIF' :
189
case 'CLP' :
190
case 'DJF' :
203
$total = absint( $total );
204
break;
205
default :
206
+ $total = round( $total, 2 ) * 100; // In cents.
207
break;
208
}
209
return $total;
217
return;
218
}
219
220
+ // Show message if enabled and FORCE SSL is disabled and WordpressHTTPS plugin is not detected.
221
if ( ( function_exists( 'wc_site_is_https' ) && ! wc_site_is_https() ) && ( 'no' === get_option( 'woocommerce_force_ssl_checkout' ) && ! class_exists( 'WordPressHTTPS' ) ) ) {
222
+ echo '<div class="error stripe-ssl-message"><p>' . sprintf( __( 'Stripe is enabled, but the <a href="%s">force SSL option</a> is disabled; your checkout may not be secure! Please enable SSL and ensure your server has a valid SSL certificate - Stripe will only work in test mode.', 'woocommerce-gateway-stripe' ), admin_url( 'admin.php?page=wc-settings&tab=checkout' ) ) . '</p></div>';
223
}
224
}
225
285
*/
286
public function payment_fields() {
287
$user = wp_get_current_user();
288
+ $display_tokenization = $this->supports( 'tokenization' ) && is_checkout() && $this->saved_cards;
289
290
if ( $user->ID ) {
291
$user_email = get_user_meta( $user->ID, 'billing_email', true );
323
324
if ( ! $this->stripe_checkout ) {
325
$this->form();
326
+
327
if ( $display_tokenization ) {
328
$this->save_payment_method_checkbox();
329
}
340
* @access public
341
*/
342
public function payment_scripts() {
343
+ $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
344
+
345
if ( $this->stripe_checkout ) {
346
wp_enqueue_script( 'stripe', 'https://checkout.stripe.com/v2/checkout.js', '', '2.0', true );
347
+ wp_enqueue_script( 'woocommerce_stripe', plugins_url( 'assets/js/stripe_checkout' . $suffix . '.js', WC_STRIPE_MAIN_FILE ), array( 'stripe' ), WC_STRIPE_VERSION, true );
348
} else {
349
wp_enqueue_script( 'stripe', 'https://js.stripe.com/v2/', '', '1.0', true );
350
+ wp_enqueue_script( 'woocommerce_stripe', plugins_url( 'assets/js/stripe' . $suffix . '.js', WC_STRIPE_MAIN_FILE ), array( 'jquery-payment', 'stripe' ), WC_STRIPE_VERSION, true );
351
}
352
353
$stripe_params = array(
374
}
375
}
376
377
+ $stripe_params['no_prepaid_card_msg'] = __( 'Sorry, we\'re not accepting prepaid cards at this time.', 'woocommerce-gateway-stripe' );
378
+ $stripe_params['allow_prepaid_card'] = apply_filters( 'wc_stripe_allow_prepaid_card', true ) ? 'yes' : 'no';
379
+ $stripe_params['stripe_checkout_require_billing_address'] = apply_filters( 'wc_stripe_checkout_require_billing_address', false ) ? 'yes' : 'no';
380
+
381
+ // localize error messages from Stripe
382
+ $stripe_params['invalid_number'] = __( 'The card number is not a valid credit card number.', 'woocommerce-gateway-stripe' );
383
+ $stripe_params['invalid_expiry_month'] = __( 'The card\'s expiration month is invalid.', 'woocommerce-gateway-stripe' );
384
+ $stripe_params['invalid_expiry_year'] = __( 'The card\'s expiration year is invalid.', 'woocommerce-gateway-stripe' );
385
+ $stripe_params['invalid_cvc'] = __( 'The card\'s security code is invalid.', 'woocommerce-gateway-stripe' );
386
+ $stripe_params['incorrect_number'] = __( 'The card number is incorrect.', 'woocommerce-gateway-stripe' );
387
+ $stripe_params['expired_card'] = __( 'The card has expired.', 'woocommerce-gateway-stripe' );
388
+ $stripe_params['incorrect_cvc'] = __( 'The card\'s security code is incorrect.', 'woocommerce-gateway-stripe' );
389
+ $stripe_params['incorrect_zip'] = __( 'The card\'s zip code failed validation.', 'woocommerce-gateway-stripe' );
390
+ $stripe_params['card_declined'] = __( 'The card was declined.', 'woocommerce-gateway-stripe' );
391
+ $stripe_params['missing'] = __( 'There is no card on a customer that is being charged.', 'woocommerce-gateway-stripe' );
392
+ $stripe_params['processing_error'] = __( 'An error occurred while processing the card.', 'woocommerce-gateway-stripe' );
393
+ $stripe_params['invalid_request_error'] = __( 'Could not find payment information.', 'woocommerce-gateway-stripe' );
394
+
395
wp_localize_script( 'woocommerce_stripe', 'wc_stripe_params', apply_filters( 'wc_stripe_params', $stripe_params ) );
396
}
397
422
$post_data['source'] = $source->source;
423
}
424
425
+ /**
426
+ * Filter the return value of the WC_Payment_Gateway_CC::generate_payment_request.
427
+ *
428
+ * @since 3.1.0
429
+ * @param array $post_data
430
+ * @param WC_Order $order
431
+ * @param object $source
432
+ */
433
+ return apply_filters( 'wc_stripe_generate_payment_request', $post_data, $order, $source );
434
}
435
436
/**
437
* Get payment source. This can be a new token or existing card.
438
+ *
439
+ * @param string $user_id
440
+ * @param bool $force_customer Should we force customer creation.
441
+ *
442
+ * @throws Exception When card was not added or for and invalid card.
443
* @return object
444
*/
445
protected function get_source( $user_id, $force_customer = false ) {
450
// New CC info was entered and we have a new token to process
451
if ( isset( $_POST['stripe_token'] ) ) {
452
$stripe_token = wc_clean( $_POST['stripe_token'] );
453
+ $maybe_saved_card = isset( $_POST['wc-stripe-new-payment-method'] ) && ! empty( $_POST['wc-stripe-new-payment-method'] );
454
455
// This is true if the user wants to store the card to their account.
456
if ( ( $user_id && $this->saved_cards && $maybe_saved_card ) || $force_customer ) {
521
522
/**
523
* Process the payment
524
+ *
525
+ * @param int $order_id Reference.
526
+ * @param bool $retry Should we retry on fail.
527
+ * @param bool $force_customer Force user creation.
528
+ *
529
+ * @throws Exception If payment will not be accepted.
530
+ *
531
+ * @return array|void
532
*/
533
public function process_payment( $order_id, $retry = true, $force_customer = false ) {
534
try {
541
throw new Exception( $error_msg );
542
}
543
544
+ // Store source to order meta.
545
$this->save_source( $order, $source );
546
547
+ // Handle payment.
548
if ( $order->get_total() > 0 ) {
549
550
if ( $order->get_total() * 100 < 50 ) {
553
554
WC_Stripe::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" );
555
556
+ // Make the request.
557
$response = WC_Stripe_API::request( $this->generate_payment_request( $order, $source ) );
558
559
if ( is_wp_error( $response ) ) {
561
if ( 'customer' === $response->get_error_code() && $retry ) {
562
delete_user_meta( get_current_user_id(), '_stripe_customer_id' );
563
return $this->process_payment( $order_id, false, $force_customer );
564
+ // Source param wrong? The CARD may have been deleted on stripe's end. Remove token and show message.
565
+ } elseif ( 'source' === $response->get_error_code() && $source->token_id ) {
566
$token = WC_Payment_Tokens::get( $source->token_id );
567
$token->delete();
568
throw new Exception( __( 'This card is no longer available and has been removed.', 'woocommerce-gateway-stripe' ) );
570
throw new Exception( $response->get_error_code() . ': ' . $response->get_error_message() );
571
}
572
573
+ // Process valid response.
574
$this->process_response( $response, $order );
575
} else {
576
$order->payment_complete();
577
}
578
579
+ // Remove cart.
580
WC()->cart->empty_cart();
581
582
+ // Return thank you page redirect.
583
return array(
584
'result' => 'success',
585
'redirect' => $this->get_return_url( $order )
589
wc_add_notice( $e->getMessage(), 'error' );
590
WC()->session->set( 'refresh_totals', true );
591
WC_Stripe::log( sprintf( __( 'Error: %s', 'woocommerce-gateway-stripe' ), $e->getMessage() ) );
592
+
593
+ if ( $order->has_status( array( 'pending', 'failed' ) ) ) {
594
+ $this->send_failed_order_email( $order_id );
595
+ }
596
+
597
return;
598
}
599
}
600
601
/**
602
* Save source to order.
603
+ *
604
+ * @param WC_Order $order For to which the source applies.
605
+ * @param stdClass $source Source information.
606
*/
607
protected function save_source( $order, $source ) {
608
+ // Store source in the order.
609
if ( $source->customer ) {
610
update_post_meta( $order->id, '_stripe_customer_id', $source->customer );
611
}
633
634
if ( $response->captured ) {
635
$order->payment_complete( $response->id );
636
+
637
+ $message = sprintf( __( 'Stripe charge complete (Charge ID: %s)', 'woocommerce-gateway-stripe' ), $response->id );
638
+ $order->add_order_note( $message );
639
+ WC_Stripe::log( 'Success: ' . $message );
640
+
641
} else {
642
add_post_meta( $order->id, '_transaction_id', $response->id, true );
643
715
return true;
716
}
717
}
718
+
719
+ /**
720
+ * Sends the failed order email to admin
721
+ *
722
+ * @version 3.1.0
723
+ * @since 3.1.0
724
+ * @param int $order_id
725
+ * @return null
726
+ */
727
+ public function send_failed_order_email( $order_id ) {
728
+ $emails = WC()->mailer()->get_emails();
729
+ if ( ! empty( $emails ) && ! empty( $order_id ) ) {
730
+ $emails['WC_Email_Failed_Order']->trigger( $order_id );
731
+ }
732
+ }
733
}
includes/class-wc-stripe-customer.php CHANGED
@@ -123,9 +123,12 @@ class WC_Stripe_Customer {
123
*/
124
public function create_customer( $args = array() ) {
125
if ( $user = $this->get_user() ) {
126
$defaults = array(
127
'email' => $user->user_email,
128
- 'description' => $user->display_name,
129
);
130
} else {
131
$defaults = array(
123
*/
124
public function create_customer( $args = array() ) {
125
if ( $user = $this->get_user() ) {
126
+ $billing_first_name = get_user_meta( $user->ID, 'billing_first_name', true );
127
+ $billing_last_name = get_user_meta( $user->ID, 'billing_last_name', true );
128
+
129
$defaults = array(
130
'email' => $user->user_email,
131
+ 'description' => $billing_first_name . ' ' . $billing_last_name,
132
);
133
} else {
134
$defaults = array(
includes/legacy/class-wc-gateway-stripe.php CHANGED
@@ -361,7 +361,7 @@ class WC_Gateway_Stripe extends WC_Payment_Gateway {
361
// New CC info was entered and we have a new token to process
362
if ( isset( $_POST['stripe_token'] ) ) {
363
$stripe_token = wc_clean( $_POST['stripe_token'] );
364
- $maybe_saved_card = ! isset( $_POST['wc-stripe-new-payment-method'] ) || ! empty( $_POST['wc-stripe-new-payment-method'] );
365
366
// This is true if the user wants to store the card to their account.
367
if ( ( $user_id && $this->saved_cards && $maybe_saved_card ) || $force_customer ) {
361
// New CC info was entered and we have a new token to process
362
if ( isset( $_POST['stripe_token'] ) ) {
363
$stripe_token = wc_clean( $_POST['stripe_token'] );
364
+ $maybe_saved_card = isset( $_POST['wc-stripe-new-payment-method'] ) && ! empty( $_POST['wc-stripe-new-payment-method'] );
365
366
// This is true if the user wants to store the card to their account.
367
if ( ( $user_id && $this->saved_cards && $maybe_saved_card ) || $force_customer ) {
languages/woocommerce-gateway-stripe.pot CHANGED
@@ -1,20 +1,27 @@
1
- # Copyright (C) 2016 WooCommerce Stripe Gateway
2
- # This file is distributed under the same license as the WooCommerce Stripe Gateway package.
3
msgid ""
4
msgstr ""
5
- "Project-Id-Version: WooCommerce Stripe Gateway 3.0.1\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/woocommerce-gateway-stripe\n"
7
- "POT-Creation-Date: 2016-06-08 11:48:25+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
12
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
- "Language-Team: LANGUAGE <LL@li.org>\n"
14
15
#: includes/class-wc-gateway-stripe-addons.php:104
16
#: includes/class-wc-gateway-stripe-addons.php:150
17
- #: includes/class-wc-gateway-stripe.php:437
18
#: includes/legacy/class-wc-gateway-stripe.php:446
19
msgid ""
20
"Sorry, the minimum allowed order total is 0.50 to use this payment method."
@@ -29,123 +36,189 @@ msgid "Unable to store payment details. Please try again."
29
msgstr ""
30
31
#: includes/class-wc-gateway-stripe-addons.php:218
32
- #: includes/class-wc-gateway-stripe-addons.php:269
33
msgid "Stripe Transaction Failed (%s)"
34
msgstr ""
35
36
- #: includes/class-wc-gateway-stripe-addons.php:400
37
- #: includes/class-wc-gateway-stripe-addons.php:405
38
msgid "Via %s card ending in %s"
39
msgstr ""
40
41
- #: includes/class-wc-gateway-stripe.php:18
42
#: includes/legacy/class-wc-gateway-stripe.php:18
43
msgid "Stripe"
44
msgstr ""
45
46
- #: includes/class-wc-gateway-stripe.php:19
47
#: includes/legacy/class-wc-gateway-stripe.php:19
48
msgid ""
49
"Stripe works by adding credit card fields on the checkout and then sending "
50
"the details to Stripe for verification."
51
msgstr ""
52
53
- #: includes/class-wc-gateway-stripe.php:61
54
#: includes/legacy/class-wc-gateway-stripe.php:60
55
msgid "Continue to payment"
56
msgstr ""
57
58
- #: includes/class-wc-gateway-stripe.php:65
59
#: includes/legacy/class-wc-gateway-stripe.php:64
60
msgid ""
61
"TEST MODE ENABLED. In test mode, you can use the card number "
62
"4242424242424242 with any CVC and a valid expiration date or check the "
63
"documentation \"<a href=\"%s\">Testing Stripe</a>\" for more card numbers."
64
msgstr ""
65
66
- #: includes/class-wc-gateway-stripe.php:148
67
#: includes/legacy/class-wc-gateway-stripe.php:165
68
msgid ""
69
"Stripe is enabled, but the <a href=\"%s\">force SSL option</a> is disabled; "
70
"your checkout may not be secure! Please enable SSL and ensure your server "
71
"has a valid SSL certificate - Stripe will only work in test mode."
72
msgstr ""
73
74
- #: includes/class-wc-gateway-stripe.php:188
75
msgid ""
76
"This is not a valid live key. Live keys start with \"sk_live_\" and "
77
"\"pk_live_\"."
78
msgstr ""
79
80
- #: includes/class-wc-gateway-stripe.php:199
81
msgid ""
82
"This is not a valid test key. Test keys start with \"sk_test_\" and "
83
"\"pk_test_\"."
84
msgstr ""
85
86
- #: includes/class-wc-gateway-stripe.php:224
87
msgid "Add Card"
88
msgstr ""
89
90
- #: includes/class-wc-gateway-stripe.php:235
91
#: includes/legacy/class-wc-gateway-stripe.php:262
92
msgid "%s"
93
msgstr ""
94
95
- #: includes/class-wc-gateway-stripe.php:279
96
#: includes/legacy/class-wc-gateway-stripe.php:296
97
msgid "Please accept the terms and conditions first"
98
msgstr ""
99
100
- #: includes/class-wc-gateway-stripe.php:280
101
#: includes/legacy/class-wc-gateway-stripe.php:297
102
msgid "Please fill in required checkout fields first"
103
msgstr ""
104
105
- #: includes/class-wc-gateway-stripe.php:314
106
#: includes/legacy/class-wc-gateway-stripe.php:331
107
msgid "%s - Order %s"
108
msgstr ""
109
110
- #: includes/class-wc-gateway-stripe.php:371
111
msgid "Invalid payment method. Please input a new card number."
112
msgstr ""
113
114
- #: includes/class-wc-gateway-stripe.php:425
115
#: includes/legacy/class-wc-gateway-stripe.php:434
116
msgid "Please enter your card details to make a payment."
117
msgstr ""
118
119
- #: includes/class-wc-gateway-stripe.php:426
120
#: includes/legacy/class-wc-gateway-stripe.php:435
121
msgid ""
122
"Developers: Please make sure that you are including jQuery and there are no "
123
"JavaScript errors on the page."
124
msgstr ""
125
126
- #: includes/class-wc-gateway-stripe.php:454
127
msgid "This card is no longer available and has been removed."
128
msgstr ""
129
130
- #: includes/class-wc-gateway-stripe.php:477
131
#: includes/legacy/class-wc-gateway-stripe.php:481
132
msgid "Error: %s"
133
msgstr ""
134
135
- #: includes/class-wc-gateway-stripe.php:522
136
#: includes/legacy/class-wc-gateway-stripe.php:526
137
msgid ""
138
"Stripe charge authorized (Charge ID: %s). Process order to take payment, or "
139
"cancel to remove the pre-authorization."
140
msgstr ""
141
142
- #: includes/class-wc-gateway-stripe.php:536
143
#: includes/legacy/class-wc-gateway-stripe.php:540
144
msgid "There was a problem adding the card."
145
msgstr ""
146
147
- #: includes/class-wc-gateway-stripe.php:586
148
#: includes/legacy/class-wc-gateway-stripe.php:590
149
msgid "Refunded %s - Refund ID: %s - Reason: %s"
150
msgstr ""
151
@@ -183,10 +256,12 @@ msgid "Default card updated."
183
msgstr ""
184
185
#: includes/legacy/class-wc-gateway-stripe.php:149
186
msgid "Stripe error: Please enter your secret key <a href=\"%s\">here</a>"
187
msgstr ""
188
189
#: includes/legacy/class-wc-gateway-stripe.php:153
190
msgid "Stripe error: Please enter your publishable key <a href=\"%s\">here</a>"
191
msgstr ""
192
@@ -201,6 +276,7 @@ msgid "Manage cards"
201
msgstr ""
202
203
#: includes/legacy/class-wc-gateway-stripe.php:229
204
msgid "%s card ending in %s (Expires %s/%s)"
205
msgstr ""
206
@@ -221,6 +297,7 @@ msgid "Expires"
221
msgstr ""
222
223
#: includes/legacy/templates/saved-cards.php:19
224
msgid "%s card ending in %s"
225
msgstr ""
226
@@ -229,6 +306,7 @@ msgid "(Default)"
229
msgstr ""
230
231
#: includes/legacy/templates/saved-cards.php:22
232
msgid "Expires %s/%s"
233
msgstr ""
234
@@ -257,7 +335,7 @@ msgid "This controls the title which the user sees during checkout."
257
msgstr ""
258
259
#: includes/settings-stripe.php:19
260
- msgid "Credit card (Stripe)"
261
msgstr ""
262
263
#: includes/settings-stripe.php:23
@@ -432,89 +510,75 @@ msgstr ""
432
msgid "Save debug messages to the WooCommerce System Status log."
433
msgstr ""
434
435
- #: woocommerce-gateway-stripe.php:173
436
msgid ""
437
"Stripe is almost ready. To get started, <a href=\"%s\">set your Stripe "
438
"account keys</a>."
439
msgstr ""
440
441
- #: woocommerce-gateway-stripe.php:184
442
msgid ""
443
"The plugin could not be activated. The minimum PHP version required for this "
444
"plugin is %1$s. You are running %2$s."
445
msgstr ""
446
447
- #: woocommerce-gateway-stripe.php:186
448
msgid ""
449
"The WooCommerce Stripe plugin has been deactivated. The minimum PHP version "
450
"required for this plugin is %1$s. You are running %2$s."
451
msgstr ""
452
453
- #: woocommerce-gateway-stripe.php:193
454
msgid ""
455
"The plugin could not be activated. The minimum WooCommerce version required "
456
"for this plugin is %1$s. You are running %2$s."
457
msgstr ""
458
459
- #: woocommerce-gateway-stripe.php:195
460
msgid ""
461
"The WooCommerce Stripe plugin has been deactivated. The minimum WooCommerce "
462
"version required for this plugin is %1$s. You are running %2$s."
463
msgstr ""
464
465
- #: woocommerce-gateway-stripe.php:202
466
msgid "The plugin could not be activated. cURL is not installed."
467
msgstr ""
468
469
- #: woocommerce-gateway-stripe.php:204
470
msgid ""
471
"The WooCommerce Stripe plugin has been deactivated. cURL is not installed."
472
msgstr ""
473
474
- #: woocommerce-gateway-stripe.php:219
475
msgid "Settings"
476
msgstr ""
477
478
- #: woocommerce-gateway-stripe.php:220
479
msgid "Docs"
480
msgstr ""
481
482
- #: woocommerce-gateway-stripe.php:221
483
msgid "Support"
484
msgstr ""
485
486
- #: woocommerce-gateway-stripe.php:314
487
msgid "Unable to capture charge!"
488
msgstr ""
489
490
- #: woocommerce-gateway-stripe.php:316
491
- msgid "Stripe charge complete (Charge ID: %s)"
492
- msgstr ""
493
-
494
- #: woocommerce-gateway-stripe.php:348
495
msgid "Unable to refund charge!"
496
msgstr ""
497
498
- #: woocommerce-gateway-stripe.php:350
499
msgid "Stripe charge refunded (Charge ID: %s)"
500
msgstr ""
501
-
502
- #. Plugin Name of the plugin/theme
503
- msgid "WooCommerce Stripe Gateway"
504
- msgstr ""
505
-
506
- #. Plugin URI of the plugin/theme
507
- msgid "https://wordpress.org/plugins/woocommerce-gateway-stripe/"
508
- msgstr ""
509
-
510
- #. Description of the plugin/theme
511
- msgid "Take credit card payments on your store using Stripe."
512
- msgstr ""
513
-
514
- #. Author of the plugin/theme
515
- msgid "Automattic"
516
- msgstr ""
517
-
518
- #. Author URI of the plugin/theme
519
- msgid "http://woothemes.com/"
520
- msgstr ""
1
msgid ""
2
msgstr ""
3
+ "Project-Id-Version: WooCommerce Stripe Gateway\n"
4
+ "POT-Creation-Date: 2016-09-24 08:19-0800\n"
5
+ "PO-Revision-Date: 2016-09-24 08:19-0800\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: en_US\n"
9
"MIME-Version: 1.0\n"
10
"Content-Type: text/plain; charset=UTF-8\n"
11
"Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 1.7.3\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
16
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
17
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
21
22
#: includes/class-wc-gateway-stripe-addons.php:104
23
#: includes/class-wc-gateway-stripe-addons.php:150
24
+ #: includes/class-wc-gateway-stripe.php:548
25
#: includes/legacy/class-wc-gateway-stripe.php:446
26
msgid ""
27
"Sorry, the minimum allowed order total is 0.50 to use this payment method."
36
msgstr ""
37
38
#: includes/class-wc-gateway-stripe-addons.php:218
39
+ #: includes/class-wc-gateway-stripe-addons.php:261
40
+ #, php-format
41
msgid "Stripe Transaction Failed (%s)"
42
msgstr ""
43
44
+ #: includes/class-wc-gateway-stripe-addons.php:383
45
+ #: includes/class-wc-gateway-stripe-addons.php:388
46
+ #, php-format
47
msgid "Via %s card ending in %s"
48
msgstr ""
49
50
+ #: includes/class-wc-gateway-stripe.php:88
51
#: includes/legacy/class-wc-gateway-stripe.php:18
52
msgid "Stripe"
53
msgstr ""
54
55
+ #: includes/class-wc-gateway-stripe.php:89
56
#: includes/legacy/class-wc-gateway-stripe.php:19
57
msgid ""
58
"Stripe works by adding credit card fields on the checkout and then sending "
59
"the details to Stripe for verification."
60
msgstr ""
61
62
+ #: includes/class-wc-gateway-stripe.php:131
63
#: includes/legacy/class-wc-gateway-stripe.php:60
64
msgid "Continue to payment"
65
msgstr ""
66
67
+ #: includes/class-wc-gateway-stripe.php:135
68
#: includes/legacy/class-wc-gateway-stripe.php:64
69
+ #, php-format
70
msgid ""
71
"TEST MODE ENABLED. In test mode, you can use the card number "
72
"4242424242424242 with any CVC and a valid expiration date or check the "
73
"documentation \"<a href=\"%s\">Testing Stripe</a>\" for more card numbers."
74
msgstr ""
75
76
+ #: includes/class-wc-gateway-stripe.php:222
77
#: includes/legacy/class-wc-gateway-stripe.php:165
78
+ #, php-format
79
msgid ""
80
"Stripe is enabled, but the <a href=\"%s\">force SSL option</a> is disabled; "
81
"your checkout may not be secure! Please enable SSL and ensure your server "
82
"has a valid SSL certificate - Stripe will only work in test mode."
83
msgstr ""
84
85
+ #: includes/class-wc-gateway-stripe.php:262
86
msgid ""
87
"This is not a valid live key. Live keys start with \"sk_live_\" and "
88
"\"pk_live_\"."
89
msgstr ""
90
91
+ #: includes/class-wc-gateway-stripe.php:273
92
msgid ""
93
"This is not a valid test key. Test keys start with \"sk_test_\" and "
94
"\"pk_test_\"."
95
msgstr ""
96
97
+ #: includes/class-wc-gateway-stripe.php:298
98
msgid "Add Card"
99
msgstr ""
100
101
+ #: includes/class-wc-gateway-stripe.php:309
102
#: includes/legacy/class-wc-gateway-stripe.php:262
103
+ #, php-format
104
msgid "%s"
105
msgstr ""
106
107
+ #: includes/class-wc-gateway-stripe.php:353
108
#: includes/legacy/class-wc-gateway-stripe.php:296
109
msgid "Please accept the terms and conditions first"
110
msgstr ""
111
112
+ #: includes/class-wc-gateway-stripe.php:354
113
#: includes/legacy/class-wc-gateway-stripe.php:297
114
msgid "Please fill in required checkout fields first"
115
msgstr ""
116
117
+ #: includes/class-wc-gateway-stripe.php:375
118
+ msgid "Sorry, we're not accepting prepaid cards at this time."
119
+ msgstr ""
120
+
121
+ #: includes/class-wc-gateway-stripe.php:379
122
+ msgid "The card number is not a valid credit card number."
123
+ msgstr ""
124
+
125
+ #: includes/class-wc-gateway-stripe.php:380
126
+ msgid "The card's expiration month is invalid."
127
+ msgstr ""
128
+
129
+ #: includes/class-wc-gateway-stripe.php:381
130
+ msgid "The card's expiration year is invalid."
131
+ msgstr ""
132
+
133
+ #: includes/class-wc-gateway-stripe.php:382
134
+ msgid "The card's security code is invalid."
135
+ msgstr ""
136
+
137
+ #: includes/class-wc-gateway-stripe.php:383
138
+ msgid "The card number is incorrect."
139
+ msgstr ""
140
+
141
+ #: includes/class-wc-gateway-stripe.php:384
142
+ msgid "The card has expired."
143
+ msgstr ""
144
+
145
+ #: includes/class-wc-gateway-stripe.php:385
146
+ msgid "The card's security code is incorrect."
147
+ msgstr ""
148
+
149
+ #: includes/class-wc-gateway-stripe.php:386
150
+ msgid "The card's zip code failed validation."
151
+ msgstr ""
152
+
153
+ #: includes/class-wc-gateway-stripe.php:387
154
+ msgid "The card was declined."
155
+ msgstr ""
156
+
157
+ #: includes/class-wc-gateway-stripe.php:388
158
+ msgid "There is no card on a customer that is being charged."
159
+ msgstr ""
160
+
161
+ #: includes/class-wc-gateway-stripe.php:389
162
+ msgid "An error occurred while processing the card."
163
+ msgstr ""
164
+
165
+ #: includes/class-wc-gateway-stripe.php:390
166
+ msgid "Could not find payment information."
167
+ msgstr ""
168
+
169
+ #: includes/class-wc-gateway-stripe.php:405
170
#: includes/legacy/class-wc-gateway-stripe.php:331
171
+ #, php-format
172
msgid "%s - Order %s"
173
msgstr ""
174
175
+ #: includes/class-wc-gateway-stripe.php:474
176
msgid "Invalid payment method. Please input a new card number."
177
msgstr ""
178
179
+ #: includes/class-wc-gateway-stripe.php:536
180
#: includes/legacy/class-wc-gateway-stripe.php:434
181
msgid "Please enter your card details to make a payment."
182
msgstr ""
183
184
+ #: includes/class-wc-gateway-stripe.php:537
185
#: includes/legacy/class-wc-gateway-stripe.php:435
186
msgid ""
187
"Developers: Please make sure that you are including jQuery and there are no "
188
"JavaScript errors on the page."
189
msgstr ""
190
191
+ #: includes/class-wc-gateway-stripe.php:565
192
msgid "This card is no longer available and has been removed."
193
msgstr ""
194
195
+ #: includes/class-wc-gateway-stripe.php:588
196
#: includes/legacy/class-wc-gateway-stripe.php:481
197
+ #, php-format
198
msgid "Error: %s"
199
msgstr ""
200
201
+ #: includes/class-wc-gateway-stripe.php:634 woocommerce-gateway-stripe.php:345
202
+ #, php-format
203
+ msgid "Stripe charge complete (Charge ID: %s)"
204
+ msgstr ""
205
+
206
+ #: includes/class-wc-gateway-stripe.php:645
207
#: includes/legacy/class-wc-gateway-stripe.php:526
208
+ #, php-format
209
msgid ""
210
"Stripe charge authorized (Charge ID: %s). Process order to take payment, or "
211
"cancel to remove the pre-authorization."
212
msgstr ""
213
214
+ #: includes/class-wc-gateway-stripe.php:659
215
#: includes/legacy/class-wc-gateway-stripe.php:540
216
msgid "There was a problem adding the card."
217
msgstr ""
218
219
+ #: includes/class-wc-gateway-stripe.php:709
220
#: includes/legacy/class-wc-gateway-stripe.php:590
221
+ #, php-format
222
msgid "Refunded %s - Refund ID: %s - Reason: %s"
223
msgstr ""
224
256
msgstr ""
257
258
#: includes/legacy/class-wc-gateway-stripe.php:149
259
+ #, php-format
260
msgid "Stripe error: Please enter your secret key <a href=\"%s\">here</a>"
261
msgstr ""
262
263
#: includes/legacy/class-wc-gateway-stripe.php:153
264
+ #, php-format
265
msgid "Stripe error: Please enter your publishable key <a href=\"%s\">here</a>"
266
msgstr ""
267
276
msgstr ""
277
278
#: includes/legacy/class-wc-gateway-stripe.php:229
279
+ #, php-format
280
msgid "%s card ending in %s (Expires %s/%s)"
281
msgstr ""
282
297
msgstr ""
298
299
#: includes/legacy/templates/saved-cards.php:19
300
+ #, php-format
301
msgid "%s card ending in %s"
302
msgstr ""
303
306
msgstr ""
307
308
#: includes/legacy/templates/saved-cards.php:22
309
+ #, php-format
310
msgid "Expires %s/%s"
311
msgstr ""
312
335
msgstr ""
336
337
#: includes/settings-stripe.php:19
338
+ msgid "Credit Card (Stripe)"
339
msgstr ""
340
341
#: includes/settings-stripe.php:23
510
msgid "Save debug messages to the WooCommerce System Status log."
511
msgstr ""
512
513
+ #: woocommerce-gateway-stripe.php:188
514
+ #, php-format
515
msgid ""
516
"Stripe is almost ready. To get started, <a href=\"%s\">set your Stripe "
517
"account keys</a>."
518
msgstr ""
519
520
+ #: woocommerce-gateway-stripe.php:199
521
+ #, php-format
522
msgid ""
523
"The plugin could not be activated. The minimum PHP version required for this "
524
"plugin is %1$s. You are running %2$s."
525
msgstr ""
526
527
+ #: woocommerce-gateway-stripe.php:201
528
+ #, php-format
529
msgid ""
530
"The WooCommerce Stripe plugin has been deactivated. The minimum PHP version "
531
"required for this plugin is %1$s. You are running %2$s."
532
msgstr ""
533
534
+ #: woocommerce-gateway-stripe.php:207
535
+ msgid "The plugin could not be activated. WooCommerce is not activated."
536
+ msgstr ""
537
+
538
+ #: woocommerce-gateway-stripe.php:212
539
+ #, php-format
540
msgid ""
541
"The plugin could not be activated. The minimum WooCommerce version required "
542
"for this plugin is %1$s. You are running %2$s."
543
msgstr ""
544
545
+ #: woocommerce-gateway-stripe.php:214
546
+ #, php-format
547
msgid ""
548
"The WooCommerce Stripe plugin has been deactivated. The minimum WooCommerce "
549
"version required for this plugin is %1$s. You are running %2$s."
550
msgstr ""
551
552
+ #: woocommerce-gateway-stripe.php:221
553
msgid "The plugin could not be activated. cURL is not installed."
554
msgstr ""
555
556
+ #: woocommerce-gateway-stripe.php:223
557
msgid ""
558
"The WooCommerce Stripe plugin has been deactivated. cURL is not installed."
559
msgstr ""
560
561
+ #: woocommerce-gateway-stripe.php:238
562
msgid "Settings"
563
msgstr ""
564
565
+ #: woocommerce-gateway-stripe.php:239
566
msgid "Docs"
567
msgstr ""
568
569
+ #: woocommerce-gateway-stripe.php:240
570
msgid "Support"
571
msgstr ""
572
573
+ #: woocommerce-gateway-stripe.php:343
574
msgid "Unable to capture charge!"
575
msgstr ""
576
577
+ #: woocommerce-gateway-stripe.php:377
578
msgid "Unable to refund charge!"
579
msgstr ""
580
581
+ #: woocommerce-gateway-stripe.php:379
582
+ #, php-format
583
msgid "Stripe charge refunded (Charge ID: %s)"
584
msgstr ""
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: automattic, woothemes, mikejolley, akeda, royho
3
Tags: credit card, stripe, woocommerce
4
Requires at least: 4.4
5
Tested up to: 4.5
6
- Stable tag: 3.0.2
7
License: GPLv3
8
License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
@@ -87,6 +87,15 @@ If you get stuck, you can ask for help in the Plugin Forum.
87
88
== Changelog ==
89
90
= 3.0.2 =
91
* Fix - Set empty array as default value for first argument in WC_Stripe_Customer::create_customer
92
* Tweak - Update default title to make it consistent with existing titles
@@ -100,4 +109,15 @@ If you get stuck, you can ask for help in the Plugin Forum.
100
* Refactor for WC 2.6 and above. Legacy support for 2.5.
101
* Improved saved card handling using tokenization API in WooCommerce.
102
103
- [See changelog for all versions](https://raw.githubusercontent.com/woothemes/woocommerce-gateway-stripe/master/CHANGELOG.txt).
3
Tags: credit card, stripe, woocommerce
4
Requires at least: 4.4
5
Tested up to: 4.5
6
+ Stable tag: 3.0.3
7
License: GPLv3
8
License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
87
88
== Changelog ==
89
90
+ = 3.0.3 =
91
+ * Fix - Remove bitcoin icon when not using Stripe Checkout mode as it is not supported.
92
+ * Fix - Failed payment order was not sending email to admin.
93
+ * Fix - Saved card option was not being honored.
94
+ * New - Filter for WC_Payment_Gateway_CC::wc_stripe_generate_payment_request return value.
95
+ * New - Filter to disallow prepaid cards. "wc_stripe_allow_prepaid_card".
96
+ * New - Filter to require billing address on Stripe Modal Checkout. "wc_stripe_checkout_require_billing_address".
97
+ * New - Localized Stripe error messages.
98
+
99
= 3.0.2 =
100
* Fix - Set empty array as default value for first argument in WC_Stripe_Customer::create_customer
101
* Tweak - Update default title to make it consistent with existing titles
109
* Refactor for WC 2.6 and above. Legacy support for 2.5.
110
* Improved saved card handling using tokenization API in WooCommerce.
111
112
+ [See changelog for all versions](https://raw.githubusercontent.com/woothemes/woocommerce-gateway-stripe/master/changelog.txt).
113
+
114
+ == Upgrade Notice ==
115
+
116
+ = 3.0.3 =
117
+ * Fix - Remove bitcoin icon when not using Stripe Checkout mode as it is not supported.
118
+ * Fix - Failed payment order was not sending email to admin.
119
+ * Fix - Saved card option was not being honored.
120
+ * New - Filter for WC_Payment_Gateway_CC::wc_stripe_generate_payment_request return value.
121
+ * New - Filter to disallow prepaid cards. "wc_stripe_allow_prepaid_card".
122
+ * New - Filter to require billing address on Stripe Modal Checkout. "wc_stripe_checkout_require_billing_address".
123
+ * New - Localized Stripe error messages.
woocommerce-gateway-stripe.php CHANGED
@@ -4,8 +4,8 @@
4
* Plugin URI: https://wordpress.org/plugins/woocommerce-gateway-stripe/
5
* Description: Take credit card payments on your store using Stripe.
6
* Author: Automattic
7
- * Author URI: http://woothemes.com/
8
- * Version: 3.0.2
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.0.2' );
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__ );
@@ -80,9 +80,22 @@ class WC_Stripe {
80
*/
81
private function __wakeup() {}
82
83
- /** @var whether or not we need to load code for / support subscriptions */
84
private $subscription_support_enabled = false;
85
86
/**
87
* Notices (array)
88
* @var array
@@ -134,32 +147,15 @@ class WC_Stripe {
134
);
135
}
136
137
- /**
138
- * The primary sanity check, automatically disable the plugin on activation if it doesn't
139
- * meet minimum requirements.
140
- *
141
- * Based on http://wptavern.com/how-to-prevent-wordpress-plugins-from-activating-on-sites-with-incompatible-hosting-environments
142
- */
143
- public static function activation_check() {
144
- $environment_warning = self::get_environment_warning( true );
145
- if ( $environment_warning ) {
146
- deactivate_plugins( plugin_basename( __FILE__ ) );
147
- wp_die( $environment_warning );
148
- }
149
- }
150
-
151
/**
152
* The backup sanity check, in case the plugin is activated in a weird way,
153
* or the environment changes after activation.
154
*/
155
public function check_environment() {
156
$environment_warning = self::get_environment_warning();
157
if ( $environment_warning && is_plugin_active( plugin_basename( __FILE__ ) ) ) {
158
- deactivate_plugins( plugin_basename( __FILE__ ) );
159
$this->add_admin_notice( 'bad_environment', 'error', $environment_warning );
160
- if ( isset( $_GET['activate'] ) ) {
161
- unset( $_GET['activate'] );
162
- }
163
}
164
165
// Check if secret key present. Otherwise prompt, via notice, to go to
@@ -172,7 +168,7 @@ class WC_Stripe {
172
173
if ( empty( $secret ) && ! ( isset( $_GET['page'], $_GET['section'] ) && 'wc-settings' === $_GET['page'] && 'stripe' === $_GET['section'] ) ) {
174
$setting_link = $this->get_setting_link();
175
- $this->add_admin_notice( 'prompt_connect', 'notice notice-warning', sprintf( __( 'Stripe is almost ready. To get started, <a href="%s">set your Stripe account keys</a>.', 'wwoocommerce-gateway-stripe' ), $setting_link ) );
176
}
177
}
178
@@ -180,30 +176,25 @@ class WC_Stripe {
180
* Checks the environment for compatibility problems. Returns a string with the first incompatibility
181
* found or false if the environment has no problems.
182
*/
183
- static function get_environment_warning( $during_activation = false ) {
184
if ( version_compare( phpversion(), WC_STRIPE_MIN_PHP_VER, '<' ) ) {
185
- if ( $during_activation ) {
186
- $message = __( 'The plugin could not be activated. The minimum PHP version required for this plugin is %1$s. You are running %2$s.', 'woocommerce-gateway-stripe', 'woocommerce-gateway-stripe' );
187
- } else {
188
- $message = __( 'The WooCommerce Stripe plugin has been deactivated. The minimum PHP version required for this plugin is %1$s. You are running %2$s.', 'woocommerce-gateway-stripe' );
189
- }
190
return sprintf( $message, WC_STRIPE_MIN_PHP_VER, phpversion() );
191
}
192
193
if ( version_compare( WC_VERSION, WC_STRIPE_MIN_WC_VER, '<' ) ) {
194
- if ( $during_activation ) {
195
- $message = __( 'The plugin could not be activated. The minimum WooCommerce version required for this plugin is %1$s. You are running %2$s.', 'woocommerce-gateway-stripe', 'woocommerce-gateway-stripe' );
196
- } else {
197
- $message = __( 'The WooCommerce Stripe plugin has been deactivated. The minimum WooCommerce version required for this plugin is %1$s. You are running %2$s.', 'woocommerce-gateway-stripe' );
198
- }
199
return sprintf( $message, WC_STRIPE_MIN_WC_VER, WC_VERSION );
200
}
201
202
if ( ! function_exists( 'curl_init' ) ) {
203
- if ( $during_activation ) {
204
- return __( 'The plugin could not be activated. cURL is not installed.', 'woocommerce-gateway-stripe' );
205
- }
206
- return __( 'The WooCommerce Stripe plugin has been deactivated. cURL is not installed.', 'woocommerce-gateway-stripe' );
207
}
208
209
return false;
@@ -261,6 +252,10 @@ class WC_Stripe {
261
$this->subscription_support_enabled = true;
262
}
263
264
if ( ! class_exists( 'WC_Payment_Gateway' ) ) {
265
return;
266
}
@@ -275,7 +270,13 @@ class WC_Stripe {
275
load_plugin_textdomain( 'woocommerce-gateway-stripe', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
276
add_filter( 'woocommerce_payment_gateways', array( $this, 'add_gateways' ) );
277
278
- if ( $this->subscription_support_enabled ) {
279
require_once( plugin_basename( 'includes/class-wc-gateway-stripe-addons.php' ) );
280
}
281
}
@@ -286,7 +287,7 @@ class WC_Stripe {
286
* @since 1.0.0
287
*/
288
public function add_gateways( $methods ) {
289
- if ( $this->subscription_support_enabled ) {
290
$methods[] = 'WC_Gateway_Stripe_Addons';
291
} else {
292
$methods[] = 'WC_Gateway_Stripe';
@@ -433,6 +434,5 @@ class WC_Stripe {
433
}
434
435
$GLOBALS['wc_stripe'] = WC_Stripe::get_instance();
436
- register_activation_hook( __FILE__, array( 'WC_Stripe', 'activation_check' ) );
437
438
}
4
* Plugin URI: https://wordpress.org/plugins/woocommerce-gateway-stripe/
5
* Description: Take credit card payments on your store using Stripe.
6
* Author: Automattic
7
+ * Author URI: https://woocommerce.com/
8
+ * Version: 3.0.3
9
* Text Domain: woocommerce-gateway-stripe
10
* Domain Path: /languages
11
*
32
/**
33
* Required minimums and constants
34
*/
35
+ define( 'WC_STRIPE_VERSION', '3.0.3' );
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__ );
80
*/
81
private function __wakeup() {}
82
83
+ /**
84
+ * Flag to indicate whether or not we need to load code for / support subscriptions.
85
+ *
86
+ * @var bool
87
+ */
88
private $subscription_support_enabled = false;
89
90
+ /**
91
+ * Flag to indicate whether or not we need to load support for pre-orders.
92
+ *
93
+ * @since 3.0.3
94
+ *
95
+ * @var bool
96
+ */
97
+ private $pre_order_enabled = false;
98
+
99
/**
100
* Notices (array)
101
* @var array
147
);
148
}
149
150
/**
151
* The backup sanity check, in case the plugin is activated in a weird way,
152
* or the environment changes after activation.
153
*/
154
public function check_environment() {
155
$environment_warning = self::get_environment_warning();
156
+
157
if ( $environment_warning && is_plugin_active( plugin_basename( __FILE__ ) ) ) {
158
$this->add_admin_notice( 'bad_environment', 'error', $environment_warning );
159
}
160
161
// Check if secret key present. Otherwise prompt, via notice, to go to
168
169
if ( empty( $secret ) && ! ( isset( $_GET['page'], $_GET['section'] ) && 'wc-settings' === $_GET['page'] && 'stripe' === $_GET['section'] ) ) {
170
$setting_link = $this->get_setting_link();
171
+ $this->add_admin_notice( 'prompt_connect', 'notice notice-warning', sprintf( __( 'Stripe is almost ready. To get started, <a href="%s">set your Stripe account keys</a>.', 'woocommerce-gateway-stripe' ), $setting_link ) );
172
}
173
}
174
176
* Checks the environment for compatibility problems. Returns a string with the first incompatibility
177
* found or false if the environment has no problems.
178
*/
179
+ static function get_environment_warning() {
180
if ( version_compare( phpversion(), WC_STRIPE_MIN_PHP_VER, '<' ) ) {
181
+ $message = __( 'WooCommerce Stripe - The minimum PHP version required for this plugin is %1$s. You are running %2$s.', 'woocommerce-gateway-stripe', 'woocommerce-gateway-stripe' );
182
+
183
return sprintf( $message, WC_STRIPE_MIN_PHP_VER, phpversion() );
184
}
185
+
186
+ if ( ! defined( 'WC_VERSION' ) ) {
187
+ return __( 'WooCommerce Stripe requires WooCommerce to be activated to work.', 'woocommerce-gateway-stripe' );
188
+ }
189
190
if ( version_compare( WC_VERSION, WC_STRIPE_MIN_WC_VER, '<' ) ) {
191
+ $message = __( 'WooCommerce Stripe - The minimum WooCommerce version required for this plugin is %1$s. You are running %2$s.', 'woocommerce-gateway-stripe', 'woocommerce-gateway-stripe' );
192
+
193
return sprintf( $message, WC_STRIPE_MIN_WC_VER, WC_VERSION );
194
}
195
196
if ( ! function_exists( 'curl_init' ) ) {
197
+ return __( 'WooCommerce Stripe - cURL is not installed.', 'woocommerce-gateway-stripe' );
198
}
199
200
return false;
252
$this->subscription_support_enabled = true;
253
}
254
255
+ if ( class_exists( 'WC_Pre_Orders_Order' ) ) {
256
+ $this->pre_order_enabled = true;
257
+ }
258
+
259
if ( ! class_exists( 'WC_Payment_Gateway' ) ) {
260
return;
261
}
270
load_plugin_textdomain( 'woocommerce-gateway-stripe', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
271
add_filter( 'woocommerce_payment_gateways', array( $this, 'add_gateways' ) );
272
273
+ $load_addons = (
274
+ $this->subscription_support_enabled
275
+ ||
276
+ $this->pre_order_enabled
277
+ );
278
+
279
+ if ( $load_addons ) {
280
require_once( plugin_basename( 'includes/class-wc-gateway-stripe-addons.php' ) );
281
}
282
}
287
* @since 1.0.0
288
*/
289
public function add_gateways( $methods ) {
290
+ if ( $this->subscription_support_enabled || $this->pre_order_enabled ) {
291
$methods[] = 'WC_Gateway_Stripe_Addons';
292
} else {
293
$methods[] = 'WC_Gateway_Stripe';
434
}
435
436
$GLOBALS['wc_stripe'] = WC_Stripe::get_instance();
437
438
}