dongye4192 2014-10-08 02:11
浏览 29
已采纳

条纹将金额设置为$ variable

I am working with stripe payment and I am trying to set the amount to a variable. I see there's a lot of questions in regards to this out there, but I haven't been able to find he answer.

On the top of the page I query my database for the a number and do some basic math to set the amount. I echo the cost just to make sure it's working and it is. Here's the code for that

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;

I then try to assign the cost to another variable amount inside some if statement and exception and I try to echo the amount but I get nothing.

// Set the order amount somehow:
        $amount  = $cost; //  in cents
        echo $amount;
        $email       = "info@intelycare.com";
        $description = "Jane Doe"; //customer

When I echo $amount nothing shows. Here the full code for the page. I could use some help with this.

<?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       = "info@intelycare.com";
            $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>
  • 写回答

1条回答 默认 最新

  • dounianxie2058 2014-10-14 00:25
    关注

    I reached out to Stripe and they gave me couple recommendations, here's a solution to the problem hopefully it benefits someone else. I am able to pass a variable amount for stripe payment. Below is my charge.php file, I am not handling errors yet but I will include it later.

    <?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;
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗