Node.js 如何从条带标记正确创建条带源

Node.js 如何从条带标记正确创建条带源,node.js,stripe-payments,stripe-connect,Node.js,Stripe Payments,Stripe Connect,我正在尝试从客户端接收的条带令牌创建条带源服务器端。当使用console.log()时,令牌是从客户端检索到的正确令牌,但我收到的错误消息引用了一个我甚至没有传递到条带源中的令牌 客户端js stripe.createToken(card).then(function(result) { if (result.error) { // Inform the user if there was an error. var erro

我正在尝试从客户端接收的条带令牌创建条带源服务器端。当使用console.log()时,令牌是从客户端检索到的正确令牌,但我收到的错误消息引用了一个我甚至没有传递到条带源中的令牌

客户端js

 stripe.createToken(card).then(function(result) {
          if (result.error) {
            // Inform the user if there was an error.
            var errorElement = document.getElementById('card-errors');
            errorElement.textContent = result.error.message;
          } else {
             document.getElementById('token').setAttribute('value',result.token.id);
             document.getElementById('type').setAttribute('value',result.token.type);
             myForm.submit();

          }
        });
在我的服务器上,我有以下内容

router.post("/purchase",middleware.isLoggedIn, function(req,res){
    let  tokenId = req.body.token;
    let type = req.body.type;
    console.log(tokenId);

        stripe.sources.create({
            token: tokenId,
            type: req.body.type
        }).then((source) => {
            console.log(source);
        }).catch((e) =>{
            console.log(tokenId);
            console.log(e);
        });
    });
});
我从conole.log(tokenId)语句中得到以下结果

tok_1CdT3H2eZvKYlo2CNGY0W0JJ
但是我从console.log(e)发出的错误消息指的是一个以“card”开头的令牌,它没有传递到promise中,这是我困惑的根源

    { Error: Invalid token id: card_1CdT3H2eZvKYlo2Cv1PzIBCv
    at Error._Error (/home/ec2-user/environment/node_modules/stripe/lib/Error.js:12:17)
    at Error.Constructor (/home/ec2-user/environment/node_modules/stripe/lib/utils.js:124:13)
    at Error.Constructor (/home/ec2-user/environment/node_modules/stripe/lib/utils.js:124:13)
    at Function.StripeError.generate (/home/ec2-user/environment/node_modules/stripe/lib/Error.js:57:12)
    at IncomingMessage.<anonymous> (/home/ec2-user/environment/node_modules/stripe/lib/StripeResource.js:170:39)
    at emitNone (events.js:91:20)
    at IncomingMessage.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)
  type: 'StripeInvalidRequestError',
  stack: 'Error: Invalid token id: card_1CdT3H2eZvKYlo2Cv1PzIBCv\n    at Error._Error (/home/ec2-user/environment/node_modules/stripe/lib/Error.js:12:17)\n    at Error.Constructor (/home/ec2-user/environment/node_modules/stripe/lib/utils.js:124:13)\n    at Error.Constructor (/home/ec2-user/environment/node_modules/stripe/lib/utils.js:124:13)\n    at Function.StripeError.generate (/home/ec2-user/environment/node_modules/stripe/lib/Error.js:57:12)\n    at IncomingMessage.<anonymous> (/home/ec2-user/environment/node_modules/stripe/lib/StripeResource.js:170:39)\n    at emitNone (events.js:91:20)\n     t IncomingMessage.emit (events.js:185:7)\n    at endReadableNT (_stream_readable.js:974:12)\n    at _combinedTickCallback (internal/process/next_tick.js:80:11)\n    at process._tickDomainCallback (internal/process/next_tick.js:128:9)',
  rawType: 'invalid_request_error',
  code: 'invalid_token_id',
  param: undefined,
  message: 'Invalid token id: card_1CdT3H2eZvKYlo2Cv1PzIBCv',
  detail: undefined,
  raw: 
   { code: 'invalid_token_id',
     message: 'Invalid token id: card_1CdT3H2eZvKYlo2Cv1PzIBCv',
     type: 'invalid_request_error',
     headers: 
      { server: 'nginx',
        date: 'Sat, 16 Jun 2018 01:18:04 GMT',
        'content-type': 'application/json',
        'content-length': '155',
        connection: 'close',
        'access-control-allow-credentials': 'true',
        'access-control-allow-methods': 'GET, POST, HEAD, OPTIONS, DELETE',
        'access-control-allow-origin': '*',
        'access-control-expose-headers': 'Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required',
        'access-control-max-age': '300',
        'cache-control': 'no-cache, no-store',
        'request-id': 'req_EfxhCBwQpauiVP',
        'stripe-version': '2017-08-15' },
     statusCode: 400,
     requestId: 'req_EfxhCBwQpauiVP' },
  headers: 
   { server: 'nginx',
     date: 'Sat, 16 Jun 2018 01:18:04 GMT',
     'content-type': 'application/json',
     'content-length': '155',
     connection: 'close',
     'access-control-allow-credentials': 'true',
     'access-control-allow-methods': 'GET, POST, HEAD, OPTIONS, DELETE',
     'access-control-allow-origin': '*',
     'access-control-expose-headers': 'Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required',
     'access-control-max-age': '300',
     'cache-control': 'no-cache, no-store',
     'request-id': 'req_EfxhCBwQpauiVP',
     'stripe-version': '2017-08-15' },
  requestId: 'req_EfxhCBwQpauiVP',
  statusCode: 400 }
{错误:无效令牌id:card_1CdT3H2eZvKYlo2Cv1PzIBCv
出现错误。_Error(/home/ec2 user/environment/node_modules/stripe/lib/Error.js:12:17)
构造函数(/home/ec2 user/environment/node_modules/stripe/lib/utils.js:124:13)
构造函数(/home/ec2 user/environment/node_modules/stripe/lib/utils.js:124:13)
在Function.StripeError.generate(/home/ec2 user/environment/node_modules/stripe/lib/Error.js:57:12)
在输入消息时。(/home/ec2 user/environment/node_modules/stripe/lib/StripeResource.js:170:39)
在emitNone(events.js:91:20)
在IncomingMessage.emit(events.js:185:7)
在endReadableNT(_stream_readable.js:974:12)
at _combinedTickCallback(内部/流程/下一步_tick.js:80:11)
在进程中。_tickDomainCallback(internal/process/next_tick.js:128:9)
类型:“StripeInvalidRequestError”,
堆栈:'Error:Invalid token id:card\u 1CdT3H2eZvKYlo2Cv1PzIBCv\n出错。\ u Error(/home/ec2 user/environment/node\modules/stripe/lib/Error.js:12:17)\n出错。构造函数(/home/ec2 user/environment/node\modules/stripe/lib/utils.js:124:13)\n出错。构造函数(/home/ec2 user/environment/node\modules/stripe/lib/utils.js:124:13)\n位于Function.StripeError.generate(/home/ec2 user/environment/node_modules/stripe/lib/Error.js:57:12)\n位于IncomingMessage(/home/ec2 user/environment/node_modules/stripe/lib/StripeResource.js:170:39)\n位于emitNone(events.js:91:20)\n位于IncomingMessage.emit(events.js:185:7)\n位于endReadableNT(\u stream\u readable.js:974:12)\n在_combinedTickCallback(internal/process/next_tick.js:80:11)\n在process._tickDomainCallback(internal/process/next_tick.js:128:9)',
rawType:'无效的\u请求\u错误',
代码:“无效的\u令牌\u id”,
参数:未定义,
消息:“无效的令牌id:card_1CdT3H2eZvKYlo2Cv1PzIBCv”,
细节:未定义,
原始:
{代码:'无效的\u令牌\u id',
消息:“无效的令牌id:card_1CdT3H2eZvKYlo2Cv1PzIBCv”,
类型:“无效的\u请求\u错误”,
标题:
{服务器:'nginx',
日期:“2018年6月16日星期六01:18:04 GMT”,
“内容类型”:“应用程序/json”,
“内容长度”:“155”,
连接:“关闭”,
“访问控制允许凭据”:“true”,
“访问控制允许方法”:“GET、POST、HEAD、OPTIONS、DELETE”,
“访问控制允许来源”:“*”,
“访问控制公开标头”:“请求Id,条带管理版本,X-Stripe-External-Auth-Required,X-Stripe-Privileged-Session-Required”,
“访问控制最大年龄”:“300”,
“缓存控制”:“无缓存,无存储”,
“请求id”:“请求EfxhCBwQpauiVP”,
“条带版本”:“2017-08-15”},
状态代码:400,
requestId:'req_EfxhCBwQpauiVP'},
标题:
{服务器:'nginx',
日期:“2018年6月16日星期六01:18:04 GMT”,
“内容类型”:“应用程序/json”,
“内容长度”:“155”,
连接:“关闭”,
“访问控制允许凭据”:“true”,
“访问控制允许方法”:“GET、POST、HEAD、OPTIONS、DELETE”,
“访问控制允许来源”:“*”,
“访问控制公开标头”:“请求Id,条带管理版本,X-Stripe-External-Auth-Required,X-Stripe-Privileged-Session-Required”,
“访问控制最大年龄”:“300”,
“缓存控制”:“无缓存,无存储”,
“请求id”:“请求EfxhCBwQpauiVP”,
“条带版本”:“2017-08-15”},
requestId:'req_EfxhCBwQpauiVP',
状态代码:400}

从技术上讲,您可以这样做,但直接创建源客户端而不是创建令牌可能会容易得多。元素可以,使用e
source
签出也可以

如果确实要在服务器端执行此操作,只需在创建卡源时在
令牌中传递令牌即可