3

I am using Stripe Payment. I have integrated the Stripe checkout system in my Php website. With Static prices it works good. But not I want to get Prices from My Database. And it shows on screen that it is charged. But in my strip account it is not sending money..

$charge = Stripe_Charge::create(array(
  "amount" => 999999, // I want here $price from my database.
  "currency" => "usd",
  "card" => $_POST['stripeToken'],
  "description" => 'This is Different Thing'
));

When i Add $price instead of static price 99999 it not sends money to my stripe payments. But when i add 99999 again , it start working. My Database is Okay All veriables and database connections are okay. Issue is only here.. How i can get it fixed.. If you want my full code..

include 'header.php';  //Connection File is in header.php
error_reporting(0);
try {

    require_once('Stripe/lib/Stripe.php');
    Stripe::setApiKey("sk_test_GkvxX3TWD6juGRLhZwP2LQ1x");

$req_id = $_REQUEST['order_id'];
$get_req = "SELECT * FROM `requests` WHERE `req_id` = '$req_id'";
$result = mysqli_query($dbc, $get_req);
while($row = mysqli_fetch_array($result)){
$req_id = $row['req_id'];
$request_title = $row['request_title'];
$username = $row['username'];
$user_id = $row['user_id'];
$price = $row['price'];
$request_time = $row['request_time'];
$req_date = $row['req_date'];
$category = $row['category'];
$sub_category = $row['sub_category'];
$from_address = $row['from_address'];
$to_address = $row['to_address'];
$from_state = $row['from_state'];
$to_state = $row['to_state'];
$from_city = $row['from_city'];
$to_city = $row['to_city'];
$req_desc = $row['req_desc'];
$status = $row['req_status'];

$paid = $row['paid'];

}

$charge = Stripe_Charge::create(array(
  "amount" => 999999,
  "currency" => "usd",
  "card" => $_POST['stripeToken'],
  "description" => 'This is Different Thing'
));


$status = "";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $errors = array();


    if (isset($_POST['stripeToken'])) {
        $token = $_POST['stripeToken'];
        echo 'Payment Done ';

$status = 1;



//print_r($token);
    } else {
        $errors['token'] = 'The order cannot be processed. You have not been charged.
                            Please confirm that you have JavaScript enabled and try again.';
echo "payment not successfully done.Please try again";
$status = 0;
    }
} // End of form submission conditional.




}
catch(Stripe_CardError $e) {

}

//catch the errors in any way you like

 catch (Stripe_InvalidRequestError $e) {
  // Invalid parameters were supplied to Stripe's API

} catch (Stripe_AuthenticationError $e) {
  // Authentication with Stripe's API failed
  // (maybe you changed API keys recently)

} catch (Stripe_ApiConnectionError $e) {
  // Network communication with Stripe failed
} catch (Stripe_Error $e) {

  // Display a very generic error to the user, and maybe send
  // yourself an email
} catch (Exception $e) {

  // Something else happened, completely unrelated to Stripe
}

if($status2 = 1){
$query = "UPDATE `requests` SET `req_status`='1', `paid`='1' WHERE `req_id`='$req_id'";
$result = mysqli_query($dbc,$query);
}else{ 


}

1 Answers1

0

I have not seen in your code, what the output of $price is. So, while I do not assume that $price, drawn from your database, is incorrectly prepared, it is as mentioned in the Stripe documentation, necessary to express the price in cents. Such that if you place this code

$findme = ".";
$pos = strpos($price, $findme);
$PosPlus = $pos+1;
$Part1=substr($price, 0, $pos);
$Part2=substr($price, $PosPlus);
$price = ($Part1.$Part2);

above the line you have,

$charge = Stripe_Charge::create(array(   //.....

your charge should succeed.

MountainMan
  • 753
  • 2
  • 10
  • 20