Как выполнить задачу в зависимости от ответа на ошибку Stripe API - PullRequest
0 голосов
/ 13 июня 2018

В настоящее время используется Stripe для обработки платежей, однако я хотел бы выполнить оператор SQL, который запретит пользователю, скажем, когда оценка риска Stripe равна highest.

Мой текущий код оплаты с использованием библиотеки PHP Stripe содержитсообщение об исключении базовой ошибки:

 <?php
require 'lib/Stripe.php';

if ($_POST) {
  Stripe::setApiKey($stripeSecretKey);
  $error = '';
  $success = '';

  try {
    if (empty($_POST['street']) || empty($_POST['city']) || empty($_POST['zip']))
      throw new Exception("Fill out all required fields.");
    if (!isset($_POST['stripeToken']))
      throw new Exception("The Stripe Token was not generated correctly");
    Stripe_Charge::create(array("amount" => $price * 100,
                                "currency" => "gbp",
                                "card" => $_POST['stripeToken'],
                                "description" => "User: " . $userUsername . " - " . $userEmail,
                                "receipt_email" => $userEmail));

    $success = '<div class="alert alert-success">
                <strong>Success!</strong> Your payment was successful, Redirecting...
                </div>';
                header('Refresh: 3; URL=https://urlhere');


  }
  catch (Exception $e) {
    $error = '<div class="alert alert-danger">
              <strong>Error!</strong> '.$e->getMessage().'
              </div>';
  }
}

if(!(empty($success)))

                $txid = generateTxid();
{
                $SQL = $odb -> prepare("INSERT INTO `payments` VALUES(NULL, :price, :planid, :userid, :payer, :transactionid, UNIX_TIMESTAMP())");
                $SQL -> execute(array(':price' => $price, ':planid' => $planID, ':userid' => $userID, ':payer' => $userEmail, ':transactionid' => $txid));


                $unit = $plan['unit'];
                $length = $plan['length'];
                $newExpire = strtotime("+{$length} {$unit}");
                $updateSQL = $odb -> prepare("UPDATE `users` SET `expire` = :expire, `membership` = :plan WHERE `ID` = :id");
                $updateSQL -> execute(array(':expire' => $newExpire, ':plan' => (int)$planID, ':id' => (int)$userID));
}
?>

Применительно к https://stripe.com/docs/api#charge_object я вижу, что на вкладке PHP есть объект outcome, который может быть использован в моем случае, но мы не знаем, какреализовать его.

1 Ответ

0 голосов
/ 13 июня 2018

Проверьте ответ от вашего создания заряда.Посмотрите на атрибут risk_level и напишите условие, которое что-то делает, когда условие выполнено.

$response = Stripe_Charge::create(...

Чтобы получить атрибут risk_level:

print $response->outcome->risk_level

PS вы должны проверить реакцию на зарядчтобы убедиться, что он успешен, а не просто предполагать, что он успешен, если не было сгенерировано исключение.Это может быть ожидание, которое не является исключением, но, к примеру, также не является успешным.

...