Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // stripe-functions.php
- <?php
- // Create Shortcode [wp-stripe]
- function wp_stripe_shortcode( $atts ){
- return wp_stripe_form_ex();
- }
- add_shortcode( 'wp-stripe', 'wp_stripe_shortcode' );
- // Create Charge
- function wp_stripe_charge($amount, $card, $description) {
- /*
- * Currency - All amounts must be denominated in USD when creating charges with Stripe the currency conversion happens automatically
- */
- $currency = 'usd';
- /*
- * Card - Token from stripe.js is provided (not individual card elements)
- */
- $charge = Stripe_Charge::create(array(
- 'card' => $card,
- 'amount' => $amount,
- 'currency' => $currency
- ));
- if ( $description ) {
- $charge['description'] = $description;
- }
- return $charge;
- }
- // 1) Capture POST, 2) Create Charge, 3) Store Transaction (Custom Post Type)
- function wp_stripe_charge_initiate() { //modified by hmoore
- $result = '';
- if ( isset($_POST['wp_stripe_form'] ) == '1') {
- $public = $_POST['wp_stripe_public'];
- $name = $_POST['wp_stripe_name'];
- $email = $_POST['wp_stripe_email'];
- $comment = $_POST['wp_stripe_comment'];
- $amount = $_POST['wp_stripe_amount'];
- if ( !$comment ) { $comment = __('No comment provided', 'wp-stripe'); }
- if ( !$name ) { $name = __('Anonymous', 'wp-stripe'); }
- $amount = $amount * 100;
- $card = $_POST['stripeToken'];
- $description = $name . ' - ' . email . ' - ' . $comment;
- if ( !$description ) {
- $description = __('This transaction has no additional details', 'wp-stripe');
- }
- // Create Charge
- try {
- $response = wp_stripe_charge($amount, $card, $description);
- $id = $response->id;
- $amount = ($response->amount)/100;
- $currency = $response->currency;
- $created = $response->created;
- $live = $response->livemode;
- $paid = $response->paid;
- $fee = $response->fee;
- $result ='<div class="wp-stripe-notification wp-stripe-success"> ' . __('Success, you just transferred ', 'wp-stripe') . '<span class="wp-stripe-currency">' . $currency . '</span> ' . $amount . ' !</div>';
- // Save Charge
- $new_post = array(
- 'ID' => '',
- 'post_type' => 'wp-stripe-trx',
- 'post_author' => 1,
- 'post_content' => $comment,
- 'post_title' => $id,
- 'post_status' => 'publish',
- );
- $post_id = wp_insert_post( $new_post );
- // Define Livemode
- if ( $live ) {
- $live = 'LIVE';
- } else {
- $live = 'TEST';
- }
- // Define Payment
- if ( $paid == 1 ) {
- $live = 'PAID';
- } else {
- $live = 'NOT PAID';
- }
- // Define Public
- if ( $public == 'public' ) {
- $public = 'YES';
- } else {
- $public = 'NO';
- }
- // Update Meta
- update_post_meta( $post_id, 'wp-stripe-public', $public);
- update_post_meta( $post_id, 'wp-stripe-name', $name);
- update_post_meta( $post_id, 'wp-stripe-email', $email);
- update_post_meta( $post_id, 'wp-stripe-live', $live);
- update_post_meta( $post_id, 'wp-stripe-date', $created);
- update_post_meta( $post_id, 'wp-stripe-amount', $amount);
- update_post_meta( $post_id, 'wp-stripe-currency', strtoupper($currency));
- update_post_meta( $post_id, 'wp-stripe-fee', $fee);
- update_post_meta( $post_id, 'wp-stripe-paid', $paid);
- // Error
- } catch (Exception $e) {
- $result = '<div class="wp-stripe-notification wp-stripe-failure">' . __('Oops, something went wrong', 'wp-stripe' ) . ' (' . $e->getMessage() . ')</div>';
- }
- }
- return $result;
- }
- ?>
- //stripe-display.php
- <?php
- function wp_stripe_js() {
- // Get API Key
- $options = get_option('wp_stripe_options');
- if ($options['stripe_api_switch']) {
- if ($options['stripe_api_switch'] == 'Yes') {
- $apikey = $options['stripe_test_api_publish'];
- } else {
- $apikey = $options['stripe_prod_api_publish'];
- }
- }
- // Generate Token
- ?>
- <script type="text/javascript">
- Stripe.setPublishableKey('<?php echo $apikey; ?>');
- function stripeResponseHandler(status, response) {
- if (response.error) {
- console.log(status);
- console.log(response);
- // re-enable the submit button
- jQuery('.stripe-submit-button').removeAttr("disabled");
- // show the errors on the form
- jQuery(".payment-errors").show().html(response.error.message);
- } else {
- var form$ = jQuery("#wp-stripe-payment-form");
- // token contains id, last4, and card type
- var token = response['id'];
- // insert the token into the form so it gets submitted to the server
- form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");
- // and submit
- form$.get(0).submit();
- }
- }
- jQuery(document).ready(function() {
- jQuery("#wp-stripe-payment-form").submit(function(event) {
- jQuery(".payment-errors").hide();
- // disable the submit button to prevent repeated clicks
- jQuery('.stripe-submit-button').attr("disabled", "disabled");
- var amount = jQuery('.wp-stripe-card-amount').val() * 100; //amount you want to charge in cents
- Stripe.createToken({
- number: jQuery('.card-number').val(),
- cvc: jQuery('.card-cvc').val(),
- exp_month: jQuery('.card-expiry-month').val(),
- exp_year: jQuery('.card-expiry-year').val()
- }, amount, stripeResponseHandler);
- // prevent the form from submitting with the default action
- return false;
- });
- });
- </script>
- <?php
- }
- function wp_stripe_form(){
- echo wp_stripe_form_ex(); //echo form html
- }
- function wp_stripe_form_ex() { //modified by hmoore 03-10-2012 to return the html instead of using echo
- $result = array();
- $result[] = '<!-- Start WP-Stripe --><div id="wp-stripe-wrap">';
- // Insert Stripe JS
- wp_stripe_js();
- $options = get_option('wp_stripe_options');
- // Display POST data again for non-sensitive data
- if (isset($_POST['wp_stripe_form']) == '1') {
- $stripe_post_name = $_POST['wp_stripe_name'];
- $stripe_post_email = $_POST['wp_stripe_email'];
- $stripe_post_comment = $_POST['wp_stripe_comment'];
- }
- $result[] = '<form action="" method="POST" id="wp-stripe-payment-form">';
- $result[] = '<h2 class="stripe-header">' . $options['stripe_header'] . '</h2>';
- $result[] = '<div class="wp-stripe-details">';
- $result[] = ' <div class="wp-stripe-notification wp-stripe-failure payment-errors" style="display:none"></div>';
- $result[] = wp_stripe_charge_initiate();
- $result[] = ' <div class="stripe-row">';
- $result[] = ' <div class="stripe-row-left">';
- $result[] = ' <label>' . __('Name', 'wp-stripe') . '</label>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row-right">';
- $result[] = ' <input type="text" name="wp_stripe_name" class="" value="' . $stripe_post_name . '"/>';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row">';
- $result[] = ' <div class="stripe-row-left">';
- $result[] = ' <label>' . __('E-mail', 'wp-stripe') . '</label>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row-right">';
- $result[] = ' <input type="text" name="wp_stripe__mail" value="' . $stripe_post__mail . '" />';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row">';
- $result[] = ' <div class="stripe-row-left">';
- $result[] = ' <label>' . __('Comment', 'wp-stripe') . '</label>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row-right">';
- $result[] = ' <textarea name="wp_stripe_comment">' . $stripe_post_comment . '</textarea>';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' <div class="wp-stripe-card">';
- $result[] = ' <div class="stripe-row">';
- $result[] = ' <div class="stripe-row-leftx">';
- $result[] = ' <label style="color:red"><strong>' . __('$50.00 will be charged to your credit card', 'wp-stripe') . ' </strong></label>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row-right">';
- $result[] = ' <input type="hidden" name="wp_stripe_amount" value="50.00" readonly="1" autocomplete="off" class="wp-stripe-card-amount" />';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row">';
- $result[] = ' <div class="stripe-row-left">';
- $result[] = ' <label>' . __('Card Number', 'wp-stripe') . ' *</label>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row-right">';
- $result[] = ' <input type="text" autocomplete="off" class="card-number" />';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row">';
- $result[] = ' <div class="stripe-row-left">';
- $result[] = ' <label>' . __('CVC Number', 'wp-stripe') . ' *</label>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row-right">';
- $result[] = ' <input type="text" autocomplete="off" class="card-cvc" />';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row">';
- $result[] = ' <div class="stripe-row-left">';
- $result[] = ' <label>' . __('Expiration', 'wp-stripe') . ' *</label>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row-right">';
- $result[] = ' <select class="card-expiry-month">';
- $result[] = ' <option value="1">01</option>';
- $result[] = ' <option value="2">02</option>';
- $result[] = ' <option value="3">03</option>';
- $result[] = ' <option value="4">04</option>';
- $result[] = ' <option value="5">05</option>';
- $result[] = ' <option value="6">06</option>';
- $result[] = ' <option value="7">07</option>';
- $result[] = ' <option value="8">08</option>';
- $result[] = ' <option value="9">09</option>';
- $result[] = ' <option value="10">10</option>';
- $result[] = ' <option value="11">11</option>';
- $result[] = ' <option value="12">12</option>';
- $result[] = ' </select>';
- $result[] = ' <span> / </span>';
- $result[] = ' <select class="card-expiry-year">';
- $year = date(Y, time());
- $num = 1;
- while ($num <= 7) {
- $result[] = '<option value="' . $year . '">' . $year . '</option>';
- $year++;
- $num++;
- }
- $result[] = '</select>';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' </div>';
- $result[] = ' <div class="stripe-row">';
- //$result[] = ' <input type="checkbox" name="wp_stripe_public" value="public" checked="checked" /> <label>' . __('Display on Website?', 'wp-stripe') . '</label>';
- $result[] = ' <input type="hidden" name="wp_stripe_public" value="public" />';
- //$result[] = ' <p class="stripe-display-comment">' . __('If you check this box, the name as you enter it (including the avatar from your e-mail) and comment will be shown in recent donations. Your e-mail address and donation amount will not be shown.', 'wp-stripe') . '</p>';
- $result[] = ' </div>';
- $result[] = ' <input type="hidden" name="wp_stripe_form" value="1"/>';
- $result[] = ' <button type="submit" class="stripe-submit-button">Submit $50.00 Payment</button>';
- $result[] = ' <div class="wp-stripe-poweredby">Payments powered by <a href="http://wordpress.org/extend/plugins/wp-stripe" target="_blank">WP-Stripe</a>. No card information is stored on this server.</div>';
- $result[] = '</form>';
- $result[] = '</div><!-- End WP-Stripe -->';
- return implode("\n", $result);
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement