[Node.js][Stripe] 使用 Node.js 注册 Stripe(客户信息)
因为需要从 Lambda 使用在线支付服务 Stripe,所以我做了一个备忘录。
请参考下方链接。
-
- npm package (stripe)
- API Reference
用法
请您根据需要适当修改样例代码,因为它没有包含错误处理的部分。
顾客的建立
您是第一个客户,请从Stripe仪表板获取API密钥。使用测试私钥或正式私钥,只需更改API密钥即可轻松切换生产环境和测试环境,非常方便。
var stripe = require('stripe')('STRIPE_API_KEY_HERE');
var userData = {ID: '', email: 'customer@example.com'};
// stripe customer の存在チェック
stripe.customers.retrieve(userData.id, function(err, customer) {
if (!customer || customer.deleted) {
// stripe customer が存在しない時は stripe にcustomerを登録
var params = {
email: userData.email
};
stripe.customers.create(params, function(err,customer){
userData.ID = customer.id;
console.log(customer);
});
}
});
{
"id": "cus_xxxxxxxxxxxxxx",
"object": "customer",
"account_balance": 0,
"created": 1480587682,
"currency": "jpy",
"default_source": null,
"delinquent": false,
"description": null,
"discount": null,
"email": "customer@example.com",
"livemode": false,
"metadata": {
},
"shipping": null,
"sources": {
"object": "list",
"data": [
],
"has_more": false,
"total_count": 0,
"url": "/v1/customers/cus_xxxxxxxxxxxxxx/sources"
},
"subscriptions": {
"object": "list",
"data": [
],
"has_more": false,
"total_count": 0,
"url": "/v1/customers/cus_xxxxxxxxxxxxxx/subscriptions"
}
}
请将客户使用的信用卡进行注册。
npm包的描述中写着只需要将卡片信息传递给stripe.customers.createSource(),但这样是不行的。
首先,要使用stripe.tokens.create()创建一个令牌(token),然后将该令牌传递给stripe.customers.createSource()。
var stripe = require('stripe')('STRIPE_API_KEY_HERE');
var userData = {ID: 'cus_xxxxxxxxxxxxxx', card: {ID: '', last4: ''});
var cardParams = {
card: {
exp_month: 10,
exp_year: 2018,
number: '4242424242424242',
cvc: 100
}
};
// カードの存在チェック
stripe.customers.retrieveCard(userData.ID, userData.card.ID, function(err, card){
if (!card || card.deleted) {
// カードが登録されていなければ token を作ってから、customers.createSource() で登録
stripe.tokens.create(cardParams, function(err,token){
userData.card.ID = token.card.id;
userData.card.last4 = token.card.last4;
var params = {
source: token.id
};
stripe.customers.createSource(userData.ID, params, function(err, card){
console.log(card);
});
});
} else {
// カードが登録されていたら有効期限を更新
userData.card.ID = card.id;
userData.card.last4 = card.last4;
var params = {
exp_month: cardParams.card.exp_month,
exp_year: cardParams.card.exp_year
}
stripe.customers.updateCard(userData.ID, card.id, params, function(err, card){
console.log(card);
});
}
});
{
"id": "card_xxxxxxxxxxxxxxxxxxxxxxxx",
"object": "card",
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Visa",
"country": "US",
"customer": "cus_xxxxxxxxxxxxxx",
"cvc_check": null,
"dynamic_last4": null,
"exp_month": 8,
"exp_year": 2017,
"funding": "credit",
"last4": "4242",
"metadata": {
},
"name": null,
"tokenization_method": null
}