使用付款系统(条带)

时间:2015-04-22 11:07:51

标签: javascript php jquery payment-gateway stripe-payments

我想实现以下目标:

  • 使用生成的令牌创建客户帐户
  • 验证客户是否有足够的帐户余额
  • 记录帐户余额
  • 向客户收费

截至目前,这是我能够实现的目标:

  • 生成令牌
  • 向客户收费

至关重要的是,我可以在充电之前检查客户端是否有足够的余额,因为如果我不得不回到他们并再次询问他们的cc信息,那么用户体验很差,因为我不是能够事先验证他们是否有足够的资金。

因此,我还想在生成令牌之前验证客户是否有足够的资金,例如,如果金额为5k且客户只有3k,那么将不生成任何帐户,并且会出现错误以便客户可以输入正确的信息:

function handleCall(token) { 
   var $form = $('#payment-form');
    if (!appendedStripeToken) { 
        // Insert the token into the form so it gets submitted to the server
$form.append($('<input type="hidden" id="courseToken" name="stripeToken" />').val(token));
        appendedStripeToken = true; 
        phpCall(); 

    } 
}

function onSubmit() {
    var $form = $('#payment-form'); // TODO: give your html-form-tag an "id" attribute and type this id in this line. IMPORTANT: Don't replace the '#'!

    // Disable the submit button to prevent repeated clicks
  // TODO: give your html-submit-input-tag an "id" attribute

    Stripe.card.createToken($form, stripeResponseHandler);
}

我如何生成令牌;

$stripChargeValid = true;
try {
 $charge = \Stripe\Charge::create(array(
      'customer' => $customer->id,
      'amount'   => $amount,
      'currency' => 'cad',
      'description'=>  $courseTitle

  ));
} catch(\Stripe\Error\Card $e) {
  // The card has been declined
  $stripChargeValid = false;
  echo "failed";

}

重要的是,如果客户有足够的资金,我只会尝试收费

1 个答案:

答案 0 :(得分:0)

Stripe.js没有验证银行卡的有效性。它只是确保字段正确(有效的到期日期,通过Luhn algorithm的卡号等)。

在您的情况下,最好的解决方案是在服务器上创建费用并检查它是否成功。如果失败,您将向您的客户返回错误,因为您现在肯定在做。

遗憾的是,在创建卡片令牌时无法提前知道。即使是Stripe Checkout,也只能通过运行$ 0 / $ 1授权来确保该卡有效,但不会授权全额。