[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
}
bannerAds