首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条纹支付与PHP的集成

条纹支付与PHP的集成
EN

Stack Overflow用户
提问于 2018-01-19 06:04:26
回答 1查看 296关注 0票数 0

有以下代码-工作良好..。但是..。由于DB是在收费之前更新为已支付的,而且如果费用被拒绝,则DB仍然被更新为已支付。

想要达到-

如果收费成功但未被拒绝,则向客户收取费用,然后将DB更新为已支付..。

把数据库更新为付费,然后向客户收费.

代码语言:javascript
复制
// 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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-19 11:14:35

您应该将对Stripe的API的所有调用包装在一个try/catch块中,以处理可能的错误。

您可以在Stripe的API参考中找到更多信息:

基本上,您的代码应该如下所示:

代码语言:javascript
复制
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 DB
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48335038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档