Advertisement
hmoore71

WP-Stripe Shortcode fix.

Mar 24th, 2012
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 13.30 KB | None | 0 0
  1. // stripe-functions.php
  2. <?php
  3.  
  4. // Create Shortcode [wp-stripe]
  5.  
  6. function wp_stripe_shortcode( $atts ){
  7.     return wp_stripe_form_ex();
  8. }
  9. add_shortcode( 'wp-stripe', 'wp_stripe_shortcode' );
  10.  
  11. // Create Charge
  12.  
  13. function wp_stripe_charge($amount, $card, $description) {
  14.  
  15.     /*
  16.      * Currency - All amounts must be denominated in USD when creating charges with Stripe the currency conversion happens automatically
  17.      */
  18.  
  19.     $currency = 'usd';
  20.  
  21.     /*
  22.      * Card - Token from stripe.js is provided (not individual card elements)
  23.      */
  24.  
  25.     $charge = Stripe_Charge::create(array(
  26.         'card' => $card,
  27.         'amount' => $amount,
  28.         'currency' => $currency
  29.     ));
  30.  
  31.     if ( $description ) {
  32.         $charge['description'] = $description;
  33.     }
  34.  
  35.     return $charge;
  36.  
  37. }
  38.  
  39. // 1) Capture POST, 2) Create Charge, 3) Store Transaction (Custom Post Type)
  40.  
  41. function wp_stripe_charge_initiate() { //modified by hmoore
  42.     $result = '';
  43.  
  44.     if ( isset($_POST['wp_stripe_form'] ) == '1') {
  45.  
  46.         $public = $_POST['wp_stripe_public'];
  47.         $name = $_POST['wp_stripe_name'];
  48.         $email = $_POST['wp_stripe_email'];
  49.         $comment = $_POST['wp_stripe_comment'];
  50.         $amount = $_POST['wp_stripe_amount'];
  51.         if ( !$comment ) { $comment = __('No comment provided', 'wp-stripe'); }
  52.         if ( !$name ) { $name = __('Anonymous', 'wp-stripe'); }
  53.  
  54.         $amount = $amount * 100;
  55.         $card = $_POST['stripeToken'];
  56.         $description = $name . ' - ' . email . ' - ' . $comment;
  57.  
  58.         if ( !$description ) {
  59.             $description = __('This transaction has no additional details', 'wp-stripe');
  60.         }
  61.  
  62.         // Create Charge
  63.  
  64.         try {
  65.  
  66.             $response = wp_stripe_charge($amount, $card, $description);
  67.  
  68.             $id = $response->id;
  69.             $amount = ($response->amount)/100;
  70.             $currency = $response->currency;
  71.             $created = $response->created;
  72.             $live = $response->livemode;
  73.             $paid = $response->paid;
  74.             $fee = $response->fee;
  75.  
  76.             $result ='<div class="wp-stripe-notification wp-stripe-success"> ' . __('Success, you just transferred ', 'wp-stripe') . '<span class="wp-stripe-currency">' . $currency . '</span> ' . $amount . ' !</div>';
  77.  
  78.             // Save Charge
  79.  
  80.             $new_post = array(
  81.                 'ID' => '',
  82.                 'post_type' => 'wp-stripe-trx',
  83.                 'post_author' => 1,
  84.                 'post_content' => $comment,
  85.                 'post_title' => $id,
  86.                 'post_status' => 'publish',
  87.             );
  88.  
  89.             $post_id = wp_insert_post( $new_post );
  90.  
  91.             // Define Livemode
  92.  
  93.             if ( $live ) {
  94.                 $live = 'LIVE';
  95.             } else {
  96.                 $live = 'TEST';
  97.             }
  98.  
  99.             // Define Payment
  100.  
  101.             if ( $paid == 1 ) {
  102.                 $live = 'PAID';
  103.             } else {
  104.                 $live = 'NOT PAID';
  105.             }
  106.  
  107.             // Define Public
  108.  
  109.             if ( $public == 'public' ) {
  110.                 $public = 'YES';
  111.             } else {
  112.                 $public = 'NO';
  113.             }
  114.  
  115.             // Update Meta
  116.  
  117.             update_post_meta( $post_id, 'wp-stripe-public', $public);
  118.             update_post_meta( $post_id, 'wp-stripe-name', $name);
  119.             update_post_meta( $post_id, 'wp-stripe-email', $email);
  120.  
  121.             update_post_meta( $post_id, 'wp-stripe-live', $live);
  122.             update_post_meta( $post_id, 'wp-stripe-date', $created);
  123.             update_post_meta( $post_id, 'wp-stripe-amount', $amount);
  124.             update_post_meta( $post_id, 'wp-stripe-currency', strtoupper($currency));
  125.             update_post_meta( $post_id, 'wp-stripe-fee', $fee);
  126.             update_post_meta( $post_id, 'wp-stripe-paid', $paid);
  127.  
  128.         // Error
  129.  
  130.         } catch (Exception $e) {
  131.             $result = '<div class="wp-stripe-notification wp-stripe-failure">' . __('Oops, something went wrong', 'wp-stripe' ) . ' (' . $e->getMessage() . ')</div>';
  132.         }
  133.  
  134.         }
  135.         return $result;
  136. }
  137.  
  138. ?>
  139. //stripe-display.php
  140. <?php
  141.  
  142. function wp_stripe_js() {
  143.  
  144.  
  145.     // Get API Key
  146.  
  147.     $options = get_option('wp_stripe_options');
  148.  
  149.     if ($options['stripe_api_switch']) {
  150.         if ($options['stripe_api_switch'] == 'Yes') {
  151.             $apikey = $options['stripe_test_api_publish'];
  152.         } else {
  153.             $apikey = $options['stripe_prod_api_publish'];
  154.         }
  155.     }
  156.     // Generate Token
  157.     ?>
  158.  
  159.     <script type="text/javascript">
  160.  
  161.         Stripe.setPublishableKey('<?php echo $apikey; ?>');
  162.  
  163.         function stripeResponseHandler(status, response) {
  164.             if (response.error) {
  165.                 console.log(status);
  166.                 console.log(response);
  167.                 // re-enable the submit button
  168.                 jQuery('.stripe-submit-button').removeAttr("disabled");
  169.                 // show the errors on the form
  170.                 jQuery(".payment-errors").show().html(response.error.message);
  171.             } else {
  172.                 var form$ = jQuery("#wp-stripe-payment-form");
  173.                 // token contains id, last4, and card type
  174.                 var token = response['id'];
  175.                 // insert the token into the form so it gets submitted to the server
  176.                 form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");
  177.  
  178.                 // and submit
  179.                 form$.get(0).submit();
  180.             }
  181.         }
  182.  
  183.         jQuery(document).ready(function() {
  184.             jQuery("#wp-stripe-payment-form").submit(function(event) {
  185.  
  186.                 jQuery(".payment-errors").hide();
  187.  
  188.                 // disable the submit button to prevent repeated clicks
  189.  
  190.                 jQuery('.stripe-submit-button').attr("disabled", "disabled");
  191.  
  192.                 var amount = jQuery('.wp-stripe-card-amount').val() * 100; //amount you want to charge in cents
  193.                 Stripe.createToken({
  194.                     number: jQuery('.card-number').val(),
  195.                     cvc: jQuery('.card-cvc').val(),
  196.                     exp_month: jQuery('.card-expiry-month').val(),
  197.                     exp_year: jQuery('.card-expiry-year').val()
  198.                 }, amount, stripeResponseHandler);
  199.  
  200.                 // prevent the form from submitting with the default action
  201.  
  202.                 return false;
  203.             });
  204.         });
  205.     </script>
  206.  
  207.     <?php
  208. }
  209. function wp_stripe_form(){
  210.     echo wp_stripe_form_ex(); //echo form html
  211. }
  212.  
  213. function wp_stripe_form_ex() { //modified by hmoore 03-10-2012 to return the html instead of using echo
  214.     $result = array();
  215.     $result[] = '<!-- Start WP-Stripe --><div id="wp-stripe-wrap">';
  216.  
  217.     // Insert Stripe JS
  218.  
  219.     wp_stripe_js();
  220.     $options = get_option('wp_stripe_options');
  221.     // Display POST data again for non-sensitive data
  222.  
  223.     if (isset($_POST['wp_stripe_form']) == '1') {
  224.  
  225.         $stripe_post_name = $_POST['wp_stripe_name'];
  226.         $stripe_post_email = $_POST['wp_stripe_email'];
  227.         $stripe_post_comment = $_POST['wp_stripe_comment'];
  228.     }
  229.     $result[] = '<form action="" method="POST" id="wp-stripe-payment-form">';
  230.     $result[] = '<h2 class="stripe-header">' . $options['stripe_header'] . '</h2>';
  231.     $result[] = '<div class="wp-stripe-details">';
  232.     $result[] = '        <div class="wp-stripe-notification wp-stripe-failure payment-errors" style="display:none"></div>';
  233.     $result[] = wp_stripe_charge_initiate();
  234.     $result[] = '        <div class="stripe-row">';
  235.     $result[] = '            <div class="stripe-row-left">';
  236.     $result[] = '                <label>' . __('Name', 'wp-stripe') . '</label>';
  237.     $result[] = '            </div>';
  238.     $result[] = '            <div class="stripe-row-right">';
  239.     $result[] = '                <input type="text" name="wp_stripe_name" class="" value="' . $stripe_post_name . '"/>';
  240.     $result[] = '            </div>';
  241.     $result[] = '        </div>';
  242.     $result[] = '        <div class="stripe-row">';
  243.     $result[] = '            <div class="stripe-row-left">';
  244.     $result[] = '                <label>' . __('E-mail', 'wp-stripe') . '</label>';
  245.     $result[] = '            </div>';
  246.     $result[] = '            <div class="stripe-row-right">';
  247.     $result[] = '                <input type="text" name="wp_stripe__mail" value="' . $stripe_post__mail . '" />';
  248.     $result[] = '            </div>';
  249.     $result[] = '        </div>';
  250.     $result[] = '        <div class="stripe-row">';
  251.     $result[] = '            <div class="stripe-row-left">';
  252.     $result[] = '                <label>' . __('Comment', 'wp-stripe') . '</label>';
  253.     $result[] = '             </div>';
  254.     $result[] = '            <div class="stripe-row-right">';
  255.     $result[] = '                <textarea name="wp_stripe_comment">' . $stripe_post_comment . '</textarea>';
  256.     $result[] = '            </div>';
  257.     $result[] = '         </div>';
  258.     $result[] = '    </div>';
  259.     $result[] = '    <div class="wp-stripe-card">';
  260.     $result[] = '        <div class="stripe-row">';
  261.     $result[] = '            <div class="stripe-row-leftx">';
  262.     $result[] = '                <label style="color:red"><strong>' . __('$50.00 will be charged to your credit card', 'wp-stripe') . ' </strong></label>';
  263.     $result[] = '            </div>';
  264.     $result[] = '            <div class="stripe-row-right">';
  265.     $result[] = '                <input type="hidden" name="wp_stripe_amount" value="50.00" readonly="1" autocomplete="off" class="wp-stripe-card-amount" />';
  266.     $result[] = '            </div>';
  267.     $result[] = '        </div>';
  268.     $result[] = '        <div class="stripe-row">';
  269.     $result[] = '            <div class="stripe-row-left">';
  270.     $result[] = '                 <label>' . __('Card Number', 'wp-stripe') . ' *</label>';
  271.     $result[] = '             </div>';
  272.     $result[] = '            <div class="stripe-row-right">';
  273.     $result[] = '                <input type="text" autocomplete="off" class="card-number" />';
  274.     $result[] = '             </div>';
  275.     $result[] = '        </div>';
  276.     $result[] = '        <div class="stripe-row">';
  277.     $result[] = '            <div class="stripe-row-left">';
  278.     $result[] = '                <label>' . __('CVC Number', 'wp-stripe') . ' *</label>';
  279.     $result[] = '            </div>';
  280.     $result[] = '            <div class="stripe-row-right">';
  281.     $result[] = '                <input type="text" autocomplete="off" class="card-cvc" />';
  282.     $result[] = '            </div>';
  283.     $result[] = '        </div>';
  284.     $result[] = '        <div class="stripe-row">';
  285.     $result[] = '            <div class="stripe-row-left">';
  286.     $result[] = '                <label>' . __('Expiration', 'wp-stripe') . ' *</label>';
  287.     $result[] = '            </div>';
  288.     $result[] = '            <div class="stripe-row-right">';
  289.     $result[] = '                <select class="card-expiry-month">';
  290.     $result[] = '                     <option value="1">01</option>';
  291.     $result[] = '                    <option value="2">02</option>';
  292.     $result[] = '                     <option value="3">03</option>';
  293.     $result[] = '                    <option value="4">04</option>';
  294.     $result[] = '                    <option value="5">05</option>';
  295.     $result[] = '                    <option value="6">06</option>';
  296.     $result[] = '                    <option value="7">07</option>';
  297.     $result[] = '                    <option value="8">08</option>';
  298.     $result[] = '                     <option value="9">09</option>';
  299.     $result[] = '                    <option value="10">10</option>';
  300.     $result[] = '                    <option value="11">11</option>';
  301.     $result[] = '                    <option value="12">12</option>';
  302.     $result[] = '                </select>';
  303.     $result[] = '                <span> / </span>';
  304.     $result[] = '                <select class="card-expiry-year">';
  305.  
  306.     $year = date(Y, time());
  307.     $num = 1;
  308.  
  309.     while ($num <= 7) {
  310.         $result[] = '<option value="' . $year . '">' . $year . '</option>';
  311.         $year++;
  312.         $num++;
  313.     }
  314.     $result[] = '</select>';
  315.     $result[] = '              </div>';
  316.     $result[] = '         </div>';
  317.     $result[] = '      </div>';
  318.     $result[] = '     <div class="stripe-row">';
  319.     //$result[] = '        <input type="checkbox" name="wp_stripe_public" value="public" checked="checked" /> <label>' . __('Display on Website?', 'wp-stripe') . '</label>';
  320.     $result[] = '        <input type="hidden" name="wp_stripe_public" value="public" />';
  321.     //$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>';
  322.     $result[] = '    </div>';
  323.     $result[] = '    <input type="hidden" name="wp_stripe_form" value="1"/>';
  324.     $result[] = '     <button type="submit" class="stripe-submit-button">Submit $50.00 Payment</button>';
  325.     $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>';
  326.     $result[] = '</form>';
  327.     $result[] = '</div><!-- End WP-Stripe -->';
  328.     return implode("\n", $result);
  329. }
  330. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement