プランの一括作成
stripe.plans.create()
でプランを作成できるので、forEachとかでまわせば一気に複数のプランを投入できる。
var stripe_secret = "sk_test_XXXXXXX"
var stripe = require("stripe")(
stripe_secret
)
var plans = [{
amount: 5000,
interval: "month",
name: "[TypeA]Basic",
currency: "jpy",
id: "typea_basic",
metadata: {
'cat_description': '基本的なプランです。',
'cat_name': 'TypeAプラン',
'transfer': '50GB',
'site_limits': '1',
'short_name': 'Basic'
}
},{
amount: 50000,
interval: "month",
name: "[TypeA]Advanced",
currency: "jpy",
id: "typea_advaned",
metadata: {
'cat_description': 'ワンランク上のプランです。',
'cat_name': 'TypeAプラン',
'transfer': '100GB',
'site_limits': '2',
'short_name': 'Advanced'
}
},{
amount: 40000,
interval: "month",
name: "[TypeB]Advanced",
currency: "jpy",
id: "typeb_advaned",
metadata: {
'cat_description': 'ワンランク上、サイト数に特化したプランです。',
'cat_name': 'TypeBプラン',
'transfer': '50GB',
'site_limits': '10',
'short_name': 'Advanced'
}
}]
plans.forEach(function(plan,i){
stripe.plans.create(
plan,
function(err, customer) {
if (err) {
console.log(err)
}
}
)
})
プラン一覧を取得する
stripe.plans.list()
を使ってStripeに登録されているプラン情報を取得できる。
var stripe_secret = "sk_test_XXXXXXX"
var stripe = require("stripe")(
stripe_secret
)
stripe.plans.list(
{},
function(err, plans) {
if (err) {
console.log(err)
}
plans.data.forEach(function(plan, i){
console.log(plan.name)
price = plan.amount.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g , '$1,')
console.log(price + ' ' + plan.currency.toUpperCase())
console.log(plan.metadata.cat_description)
console.log('')
})
}
)
実行結果
$ node index.js
$ node index.js
[TypeA]Basic
5,000 JPY
基本的なプランです。
[TypeB]Advanced
40,000 JPY
ワンランク上、サイト数に特化したプランです。
[TypeA]Advanced
50,000 JPY
ワンランク上のプランです。
Tips:価格は「数字」+「通貨単位」で返ってくる
価格はplans.data[].amout
に金額が、plans.data[].currency
に通貨単位が入っています。
なので以下のようにしてやることで、40,000 JPY
のように表示できます。
price = plan.amount.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g , '$1,')
console.log(price + ' ' + plan.currency.toUpperCase())
作成時期で絞り込む
stripe.plan.list()
はプランの作成時期で絞り込むことができます。
stripe.plans.list(
{
created: {
gte: 1490092834
}
},
function(err, plans) {
if (err) {
console.log(err)
}
console.log(plans)
}
)
created
の中にはgt
,gte
,lt
,lte
の4つが使えます。
「新しいプランのみ登録可能にしたい場合」や「まだ申し込みさせたくないプランがある場合」などは、このcreated
を駆使すると良さそうです。
その他
planの中にmetadataとして追加情報を与えることができます。
「metadataの値で検索する」ということはできませんが、「一覧で表示して、そこから選んでもらう」というシンプルなモデルであればStripeのmetadataにプランの情報を詰め込んで管理するのも1つかなと思います。
検索したい場合は・・・
Stripen APIからplanのJSONを取得して、ElasticsearchやDynamoDBあたりにインデックスさせるバッチを裏側でまわしておくといいかなと思います。
個人的にはプランに関する情報は全てStripe側にもたせて、検索や比較などをさせたい時は都度APIから取った値を別サービスに放り込む形が二重管理になりにくくて良いかなという気がします。