2014-10-08 85 views
-1

我正在使用条纹付款,我正在尝试将金额设置为变量。我看到有很多关于这方面的问题,但我一直无法找到他的答案。

在页面顶部我查询我的数据库的数字,并做一些基本的数学设置金额。我回应成本只是为了确保它的工作,它是。下面是该

require_once('../stripe/lib/Stripe.php'); 
     require_once("../auth/config.class.php"); 
     require_once("../auth/auth.class.php"); 

     $config = new Config; 

     $dbh = new PDO("mysql:host={$config->dbhost};dbname={$config->dbname}", $config->dbuser,  $config->dbpass); 
     $auth = new Auth($dbh, $config); 

     $id= $_GET['rid']; 

     $query = $dbh->prepare("SELECT hours FROM svcrequest WHERE id=? "); 
     $query->execute(array($id));  
     $rslt = $query->fetch(PDO::FETCH_ASSOC); 
     $cost = ($rslt[hours] * 27)*100; 
     echo $cost; 

的代码,然后我尝试分配成本另一个变量里面的一些if语句和例外,我尝试呼应,但我什么也没得到。

// Set the order amount somehow: 
     $amount = $cost; // in cents 
     echo $amount; 
     $email  = "[email protected]"; 
     $description = "Jane Doe"; //customer 

当我echo $amount什么都没有显示。这里是页面的完整代码。我可以使用一些帮助。

<?php 
// Created by Larry Ullman, www.larryullman.com, @LarryUllman 
// Posted as part of the series "Processing Payments with Stripe" 
// http://www.larryullman.com/series/processing - payments - with - stripe/
// Last updated February 20, 2013 
// The class names are based upon Twitter Bootstrap (http://twitter.github.com/bootstrap /) 

// This page is used to make a purchase. 

// Every page needs the configuration file: 


// Uses sessions to test for duplicate submissions: 
session_start(); 

?><!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title> 
      IntelyCare 
     </title> 
     <script type="text/javascript" src="https://js.stripe.com/v2/"> </script> 
     <script src="http://code.jquery.com/jquery-1.11.1.min.js"> </script> 
     <script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"> </script> 
    </head> 
    <body> 
     <?php 
      require_once('../stripe/lib/Stripe.php'); 
      require_once("../auth/config.class.php"); 
      require_once("../auth/auth.class.php"); 

      $config = new Config; 

      $dbh = new PDO("mysql:host={$config->dbhost};dbname={$config->dbname}", $config->dbuser,  $config->dbpass); 
      $auth = new Auth($dbh, $config); 

      $id= $_GET['rid']; 

      $query = $dbh->prepare("SELECT hours FROM svcrequest WHERE id=? "); 
      $query->execute(array($id));  
      $rslt = $query->fetch(PDO::FETCH_ASSOC); 
      $cost = ($rslt[hours] * 27)*100; 
      echo $cost; 



     // Set the Stripe key: 
     // Uses STRIPE_PUBLIC_KEY from the config file. 
     echo '<script type="text/javascript">Stripe.setPublishableKey("' . STRIPE_PUBLIC_KEY . '");</script>'; 

     // Check for a form submission: 
     if($_SERVER['REQUEST_METHOD'] == 'POST') 
     { 

      // Stores errors: 
      $errors = array(); 

      // Need a payment token: 
      if(isset($_POST['stripeToken'])) 
      { 

       $token = $_POST['stripeToken']; 

       // Check for a duplicate submission, just in case: 
       // Uses sessions, you could use a cookie instead. 
       if(isset($_SESSION['token']) && ($_SESSION['token'] == $token)) 
       { 
        $errors['token'] = 'You have apparently resubmitted the form. Please do not do that.'; 
       } 
       else 
       { 
        // New submission. 
        $_SESSION['token'] = $token; 
       } 

      } 
      else 
      { 
       $errors['token'] = 'The order cannot be processed. Please make sure you have JavaScript enabled and try again.'; 
      } 

      // Set the order amount somehow: 
      $amount = $cost; // in cents 
      echo $amount; 
      $email  = "[email protected]"; 
      $description = "Jane Doe"; //customer 


      // Validate other form data! 

      // If no errors, process the order: 
      if(empty($errors)) 
      { 

       // create the charge on Stripe's servers - this will charge the user's card 
       try 
       { 



        // Include the Stripe library: 



        // set your secret key: remember to change this to your live secret key in production 
        // see your keys here https://manage.stripe.com/account 
        Stripe::setApiKey(STRIPE_PRIVATE_KEY); 

        // Charge the order: 
        // Create a Customer 
        $customer = Stripe_Customer::create(array(
          "card"  => $token, 
          "description"=> $description 
         ) 
        ); 
        // Charge the Customer instead of the card 
        Stripe_Charge::create(array(
          "amount" => $amount ,# amount in cents, again 
          "currency"=> "usd", 
          "customer"=> $customer->id 
         ) 
        ); 
        // Save the customer ID in your database so you can use it later 
        //saveStripeCustomerId($user, $customer->id); 

        // Later... 
        //$customerId = getStripeCustomerId($user); 

        $charge = Stripe_Charge::create(array(
          "amount" => $amount,// amount in cents, again 
          "currency"=> "usd", 
          "customer"=> $customer 
         ) 
        ); 

        // Check that it was paid: 
        if($charge->paid == true) 
        { 

         // Store the order in the database. 
         // Send the email. 
         // Celebrate! 

        } 
        else 
        { 
         // Charge was not paid! 
         echo '<div class="alert alert-error"><h4>Payment System Error!</h4>Your payment could NOT be processed (i.e., you have not been charged) because the payment system rejected the transaction. You can try again or use another card.</div>'; 
        } 

       } catch(Stripe_CardError $e) 
       { 
        // Card was declined. 
        $e_json = $e->getJsonBody(); 
        $err = $e_json['error']; 
        $errors['stripe'] = $err['message']; 
       } catch(Stripe_ApiConnectionError $e) 
       { 
        // Network problem, perhaps try again. 
       } catch(Stripe_InvalidRequestError $e) 
       { 
        // You screwed up in your programming. Shouldn't happen! 
       } catch(Stripe_ApiError $e) 
       { 
        // Stripe's servers are down! 
       } catch(Stripe_CardError $e) 
       { 
        // Something else that's not the customer's fault. 
       } 

      } // A user form submission error occurred, handled below. 

     } // Form submission. 




     ?> 

     <h1> 
      IntelyCare 
     </h1> 

     <form action="buy.php" method="POST" id="payment-form"> 

      <?php // Show PHP errors, if they exist: 
      if(isset($errors) && !empty($errors) && is_array($errors)) 
      { 
       echo '<div class="alert alert-error"><h4>Error!</h4>The following error(s) occurred:<ul>'; 
       foreach($errors as $e) 
       { 
        echo "<li>$e</li>"; 
       } 
       echo '</ul></div>'; 
      }?> 

      <div id="payment-errors"> 
      </div> 

      <span class="help-block"> 
       Form of Payment accepted: Mastercard, Visa, American Express, JCB, Discover, and Diners Club. 
      </span> 
      <br /> 
      <input type="text" name="clientid" value="<?php if(isset($_GET['rid'])) {echo $_GET['rid']; } ?>" > 
      <br /> 
      <label> Card Number </label> 
      <input type="text" size="20" autocomplete="off" class="card-number input-medium"> 
      <span class="help-block"> Enter the number without spaces or hyphens.  </span> 
      <label> CVC  </label> 
      <input type="text" size="4" autocomplete="off" class="card-cvc input-mini"> 
      <label> Expiration (MM/YYYY) </label> 
      <input type="text" size="2" class="card-expiry-month input-mini"> 
      <span>/ </span> 
      <input type="text" size="4" class="card-expiry-year input-mini"> 
      <button type="submit" class="btn" id="submitBtn"> 
       Submit Payment 
      </button> 

     </form> 

     <script src="../stripe/buy.js"> 
     </script> 

    </body> 
</html> 
+0

也许你可以在https://hackhands.com/上获得帮助。 – 2014-10-09 06:45:06

回答

0

我接触到了Stripe,他们给了我几个建议,这里有一个解决问题的方法,希望对别人有好处。我能够通过可变金额的条形支付。下面是我的charge.php文件,我没有处理错误,但我会在稍后加入它。

<?php 
require_once(dirname(__FILE__) . '/config.php'); 
require_once("../auth/config.class.php"); 
require_once("../auth/auth.class.php"); 

$config = new Config; 

$dbh = new PDO("mysql:host={$config->dbhost};dbname={$config->dbname}", $config->dbuser,  $config->dbpass); 
$auth = new Auth($dbh, $config); 

$id= $_GET['rid']; 

$query = $dbh->prepare("SELECT hours, cid FROM svcrequest WHERE id=? "); 
$query->execute(array($id));  
$rslt = $query->fetch(PDO::FETCH_ASSOC); 
$cost = ($rslt['hours'] * 23)*100; 
echo $cost; 
$cid = $rslt['cid']; 

$query = $dbh->prepare("SELECT email, fname, lname FROM client JOIN users ON client.uid = users.id WHERE uid =(SELECT uid FROM client WHERE id=?)"); 
$query->execute(array($cid)); 
$user =$query->fetch(PDO::FETCH_ASSOC); 
$email = ($user['email']); 
echo $email; 



$token = $_POST['stripeToken']; 





$customer = Stripe_Customer::create(array(
'email' => $email, 
'card' => $token 
)); 

$charge = Stripe_Charge::create(array(
'customer' => $customer->id, 
'amount' => $cost, 
'currency' => 'usd' 
)); 

echo '<h3>Charge today:</h3>' . $cost; 
?>