· 7 years ago · Jul 08, 2018, 11:44 AM
1<?php
2
3function pippin_stripe_process_payment() {
4 if(isset($_POST['action']) && $_POST['action'] == 'stripe' && wp_verify_nonce($_POST['stripe_nonce'], 'stripe-nonce')) {
5
6 global $stripe_options;
7
8 // load the stripe libraries
9 require_once(STRIPE_BASE_DIR . '/lib/Stripe.php');
10
11 // retrieve the token generated by stripe.js
12 $token = $_POST['stripeToken'];
13
14 // check if we are using test mode
15 if(isset($stripe_options['test_mode']) && $stripe_options['test_mode']) {
16 $secret_key = $stripe_options['test_secret_key'];
17 } else {
18 $secret_key = $stripe_options['live_secret_key'];
19 }
20
21 // attempt to charge the customer's card
22 try {
23 Stripe::setApiKey($secret_key);
24 $charge = Stripe_Customer::create(array(
25 'card' => $token,
26 'plan' => 'WPV-01'
27 )
28 );
29
30
31 // redirect on successful payment
32 $redirect = add_query_arg('payment', 'paid', $_POST['redirect']);
33
34 } catch (Exception $e) {
35 // redirect on failed payment
36 $redirect = add_query_arg('payment', 'failed', $_POST['redirect']);
37 }
38
39 // redirect back to our previous page with the added query variable
40 wp_redirect($redirect); exit;
41 }
42}
43add_action('init', 'pippin_stripe_process_payment');