有以下代码-工作良好..。但是..。由于DB是在收费之前更新为已支付的,而且如果费用被拒绝,则DB仍然被更新为已支付。
想要达到-
如果收费成功但未被拒绝,则向客户收取费用,然后将DB更新为已支付..。
不
把数据库更新为付费,然后向客户收费.
// Create connection
$conn = mysqli_connect($hostname, $username,$password, $database);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "UPDATE details SET PaymentStatus='PAID' WHERE MembershipNo ='12345'";
if (mysqli_query($conn, $sql)) {
// starting the session
require_once('config.php');
$token = $_POST['stripeToken'];
$email = $_POST['stripeEmail'];
$SOSamount = ($_SESSION['price']*100);
$FirstName = ($_SESSION['FirstName']);
$LastName = ($_SESSION['LastName']);
$customer = \Stripe\Customer::create(array(
'email' => $email,
'source' => $token,
'description' => "$FirstName $LastName - Membership"
));
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
'amount' => $amount,
'currency' => 'aud',
'description' => "Membership - $FirstName $LastName"
));
mysqli_close($conn);发布于 2018-01-19 11:14:35
您应该将对Stripe的API的所有调用包装在一个try/catch块中,以处理可能的错误。
您可以在Stripe的API参考中找到更多信息:
基本上,您的代码应该如下所示:
try {
$customer = \Stripe\Customer::create(...);
$charge = \Stripe\Charge::create(...);
} catch(\Stripe\Error\Card $e) {
// The card was declined, display an error message to your customer
// and end execution
} catch (Exception $e) {
// Another error happened, display an error message to your customer
// and end execution
}
// The charge was completed successfully, update your DBhttps://stackoverflow.com/questions/48335038
复制相似问题