riotjs上で、これ以上シンプルにできないほど切り詰めた
定期購読機能を実装してみた。
今回は、商品はひとつでおこなっているため
有名なapp.jsのサンプルのように
<template>に商品リストを埋め込み表示、選択することもなく
subscribeボタンだけです。
まず、index.htmlの下のほうに追加
<script src='https://js.stripe.com/v3/'>
</script>
- subscribeボタンの動作(onclick='{onsubscribe}')
すでに、定期購読なされていた場合、stripe上の請求書ページへ
でない場合、stripe上のカード支払いページへ
- onsubscribe()の実装
サブスクされているかは?
/customers/{uid}/subscriptions/{id}.status のみ みよ!!
trialingまたはactiveなsubscriptionがあるか確認します。
firestore('/customers/{uid}/subscriptions/').where(status==('trialing' or 'active')).Snapshot(ss=>if(ss.empty){処理1へ}else{処理2へ})
処理1
firestore('/products/XYZ/prices/ABC')
※今回、一つしか無いので、クエらない(ABC直指定)
このpriceID(= ABCのこと)を含んだcheckout値※を
/customers/{uid}/checkout_sessions/に追加後
そのdocIdを以下の関数の引数に渡し、終了!!
Stripe('公開鍵').redirectToCheckout({docId})
※checkout値 {[taxRates],price:priceID,callbackUrlなど、その他の情報}
処理2
cloud functionで、引数に'戻りURL'のみ※を渡し、
'ext-firestore-stripe-subscriptions-createPortalLink'をコール
戻り値として、請求ページのURLが来るので、そこへ飛ぶ
※ cloud function内では、引数contextよりuidを参照できるため
そのような情報は一切、渡さなくてもOKなのです。
今回は、以上です。
riotないの?この程度なら、想像におまかせします。w