【问题标题】:Working with payment system (stripe)使用支付系统(条纹)
【发布时间】:2015-04-22 11:07:50
【问题描述】:

我想实现以下目标:

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

到目前为止,我能做到的事情是这样的:

  • 生成令牌
  • 向客户收费

在向他们收费之前,我能够检查客户是否有足够的余额是至关重要的,因为如果我必须回到他们那里并再次询问他们的抄送信息,这是很糟糕的用户体验,因为我没有能够事先验证他们是否有足够的资金。

因此,我还想在生成令牌之前验证客户是否有足够的资金,例如如果金额为 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";

}

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

【问题讨论】:

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


    【解决方案1】:

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

    在您的情况下,最好的解决方案是在服务器上创建费用并检查它是否成功。如果它失败了,你会像你现在所做的那样向你的客户返回一个错误。

    很遗憾,在创建卡令牌时无法提前知道。甚至Stripe Checkout 也只是通过运行 $0/$1 授权而不是授权全部金额来确保卡有效。

    【讨论】:

    • 您能否详细说明服务器的收费情况?是向客户卡收费吗,它到底是做什么的,我将如何进行?在生成令牌之前,我想确保客户有足够的资金
    • Stripe.js 只创建一个卡令牌,您将其发送到您创建收费的服务器 (stripe.com/docs/api#create_charge) 并捕获错误以了解收费是否成功
    • 但我担心的是,当您创建费用时,您的客户是否会收取费用,因为我正在做的是我正在存储客户端令牌以便稍后向他们收费,但我只想存储令牌如果信用卡有效并且他们有足够的资金,因为它的用户体验很差,如果我不得不回去询问他们的 cc 信息,因为他们的卡由于可能被阻止的原因而被拒绝。就像在付款页面上,如果客户没有足够的资金,它会拒绝并要求他们输入一张新卡
    • 我注意到你提到 stripe.js 是他们接受它的另一种形式?
    • 不,我提到了 Stripe.js,因为那是你使用的。 Checkout 也是如此,了解卡是否有足够资金的唯一方法就是从卡中扣款
    猜你喜欢
    • 2021-08-02
    • 2017-09-14
    • 2020-06-01
    • 2020-12-30
    • 1970-01-01
    • 2021-12-09
    • 2021-11-19
    • 2021-10-08
    • 2016-08-02
    相关资源
    最近更新 更多