Ответ 1
Отказ от ответственности: я работаю для Braintree:)
Мне жаль, что у вас возникли проблемы с вашей реализацией. Здесь может быть несколько ошибок:
- Если вы укажете
customerId
при создании токена клиента, он должен быть действительным. Вам не нужно включать идентификатор клиента при создании клиентского токена для клиентов в первый раз. Как правило, вы создаете создать клиента при обработке представления своей формы выписки, а затем сохраните этот идентификатор клиента в базе данных для использования позже. Я поговорю с нашей командой документации о разъяснении документации по этому поводу. -
res.write
берет строку или буфер. Поскольку вы писалиresponse.clientToken
, который былundefined
, потому что он был создан с недопустимым идентификатором клиента, вы получали ошибкуfirst argument must be a string or Buffer
.
Некоторые другие примечания:
- Если вы создаете токен с недопустимым
customerId
, или есть другая ошибка обработки вашего запроса,response.success
будет ложным, вы можете проверить ответ по причине его отказа. - Вы должны создать токен клиента в обработчике запросов HTTP, это позволит вам генерировать разные токены для разных клиентов и лучше обрабатывать любые проблемы, возникающие в результате вашего запроса.
Следующий код должен работать, если вы укажете допустимый customerId
http.createServer(function(req,res){
// a token needs to be generated on each request
// so we nest this inside the request handler
gateway.clientToken.generate({
// this needs to be a valid customer id
// customerId: "aCustomerId"
}, function (err, response) {
// error handling for connection issues
if (err) {
throw new Error(err);
}
if (response.success) {
clientToken = response.clientToken
res.writeHead(200, {'Content-Type': 'text/html'});
// you cannot pass an integer to res.write
// so we cooerce it to a string
res.write(clientToken);
res.end("<p>This is the end</p>");
} else {
// handle any issues in response from the Braintree gateway
res.writeHead(500, {'Content-Type': 'text/html'});
res.end('Something went wrong.');
}
});
}).listen(8000, '127.0.0.1');