javascript - 如何将 strip token 从 AngularJS 传递到 NodeJS 或修复错误 NodeJS 帖子?

标签 javascript angularjs node.js stripe-payments

我正在尝试设置 Stripe 付款但遇到错误: TypeError: 无法读取未定义的属性“id”
   位于/Users/andreykondratyuk/websites/tallllly/src/server/app.js:56:37
   位于 Layer.handle [作为 handle_request]...

形式:

<form stripe-form="stripeCallback" name="checkoutForm">
        <input ng-model="number" placeholder="Card Number" payments-format="card" payments-validate="card" name="card" />
        <input ng-model="expiry" placeholder="Expiration" payments-format="expiry" payments-validate="expiry" name="expiry" />
        <input ng-model="cvc" placeholder="CVC" payments-format="cvc" payments-validate="cvc" name="cvc" />
        <button type="submit">Submit</button>
        <div ng-if="checkoutForm.card.$invalid"> Error: invalid card number! </div>
      </form>

在 Controller 中

// Stripe Response Handler
       $scope.stripeCallback = function (code, result) {
         console.log(result);
          if (result.error) {
            window.alert('it failed! error: ' + result.error.message);
          } else {


  // Simple POST request example (passing data) :
    $http.post('/charge', result)
    .success(function(data, status, headers, config) {
      alert(data);
    })
    .error(function(data, status, headers, config) {
      alert(data);
    });
      }
  };

在后端app.js

app.post('/charge', function(req, res) {
console.log(req);
    var stripeToken = req.body.token.id;

    var charge = stripe.charges.create({
        amount: 10000, // amount in cents, again
        currency: "usd",
        card: stripeToken,
        description: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="197c74787075597c74787075377a7674" rel="noreferrer noopener nofollow">[email protected]</a>"
    }, function(err, charge) {
        if (err && err.type === 'StripeCardError') {
            console.log(JSON.stringify(err, null, 2));
        }
        res.send("completed payment!");
    });
});

我做错了什么?

最佳答案

token ID 在响应正文中为 id,stripe.js 调用没有返回 token 对象,请检查 docs .

所以在 Node 中你的行:

var stripeToken = req.body.token.id;

应该是:

var stripeToken = req.body.id;

关于javascript - 如何将 strip token 从 AngularJS 传递到 NodeJS 或修复错误 NodeJS 帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26926435/

相关文章:

javascript - 如何在 JS 中淡出图像?

javascript - 如何将变量从选项传递到我的 Controller ?

unit-testing - 在服务单元测试中使用 ngMock 模拟 $http 调用

javascript - Angular 1.3 中是否有更好的模式可以在每次修改 ng-repeat 中的项目时调用函数?

node.js - NodeJS 在计算质数时比 D 更快。如何?

javascript - 单击时将菜单附加到 DOM,随后的单击仅创建列表项

javascript - 从 Angular Controller 访问模板元素

javascript - Prism V2 访问 postgres 数据库被拒绝

node.js - 网页抓取认证 Node js

javascript - 建筑时 meteor 坠落