【问题标题】:Unable to pass Stripe token to backend using Angular and Node无法使用 Angular 和 Node 将 Stripe 令牌传递给后端
【发布时间】:2015-05-25 01:44:00
【问题描述】:

我正在尝试使用 Angular Payments 模块在 Angular 中处理 Stripe 费用。我能够从 Stripe 获取令牌,但是当我尝试将令牌提交到我的 Express 服务器时,在客户端收到以下错误:

ReferenceError: 令牌未定义

关于如何解决这个问题的任何想法?

以下是相关代码:

控制器:

myApp.controller('PaymentFormCtrl',
  function($scope){
    $scope.handleStripe = function(status, response){
    console.log('response', status, response);
    if(response.error) {
      console.log('error');// there was an error. Fix it.
    } else {
      console.log('no error');
      token = response.id;
      return $http.post('http://localhost:8080/api/payments', payment);
    }
  };
});

表单的 HTML:

<form stripe-form="handleStripe" name="myForm">

  <div class="span3">
    <label for="">Card number</label>
    <input type="text" class="input-block-level" ng-model="number" payments-validate="card" payments-format="card" payments-type-model="type" ng-class="myForm.number.$card.type"/>
  </div>

  <div class="span1">
    <label for="">Expiry</label>
    <input type="text" class="input-block-level" ng-model="expiry" payments-validate="expiry" payments-format="expiry" />
  </div>

  <div class="span3">
    <label for="">Name on card </label>
    <input type="text" class="input-block-level">
  </div>

  <div class="span1">
    <label for="">CVC</label>
    <input type="text" class="input-block-level" ng-model="cvc" payments-validate="cvc" payments-format="cvc" payments-type-model="type"/>
  </div>

  <div class="span4">
    <button type="submit" class="btn btn-primary btn-large">Submit</button>
  </div>
</form>

服务器Javascript:

apiRouter.route('/payments')

.post(function(req, res) {

  var stripeToken = request.body.stripeToken;

  var charge = stripe.charges.create({
        amount: 1000, 
        currency: "usd",
        source: stripeToken,
        description: "payinguser@example.com"
    }, function (err, charge) {
        if (err && err.type === 'StripeCardError') {
        }
    });
});

【问题讨论】:

  • 变量声明可能有问题,具体取决于您是否在严格模式下运行它。快速测试,如果你把'token'改成'var token',你会得到同样的参考错误吗?
  • @Martyn Davies 当我改用var token 时,我收到以下错误:$http is not defined
  • 将 $http 和 $scope 一起传入你的函数,所以它是 function($scope, $http) {}

标签: angularjs node.js express stripe-payments


【解决方案1】:

要确定的一件事是,在服务器端,您的请求是 'req',但您正试图从

获取令牌

request.body.stripeToken,

应该是

req.body.stripeToken

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2018-08-06
    • 2014-12-17
    • 2017-04-12
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2022-01-16
    相关资源
    最近更新 更多