Stripe -Payments Flaskアプリに導入-

決済機能としてStripeを使います。

固定費用なしで、決済ごとに3.6%というのは楽でいいですね。

 

今回はFlaskアプリへの導入ですが、他のフレームワークでも同様に簡単に導入できると思います。

stripeライブラリを使用します。

 

環境

  • Python 3.6.3
  • Flask 0.12.2
  • stripe 1.75.3

 

アカウント登録

こちらからアカウント登録します。

 

メールアドレスの認証を行なったら、決済機能をつけたいサービスのURLや口座情報などを追加します。

 

左のメニューから「API」を選択し、テストデータを表示します。

(本番環境では本番データを使います)

 

published key(公開可能)とsecret key(シークレットキー)をメモしておきます。

 

とりあえずFlaskアプリに組み込んで挙動チェック

以下のページを参考に、Flaskに埋め込みます。

 

ほぼコピペで以下の赤枠に支払いボタンが実装されました。

 

クリックすると支払い画面が表示されます。

右上にちゃんと「TEST MODE」と表示されているので本番に移行し忘れることもなくて良いですね。

 

テスト用のカードナンバー「4242 4242 4242 4242」を入力して適当に決済のテストをしてみます。

(有効期限、CVCは適当で良いです)

 

Stripe側の管理画面を開き、左メニューの「支払い」を選択します。

すると、先ほどの決済が処理されていることがわかります。

(金額やメールアドレスはサンプルコードにハードコードされているので適宜修正する必要があります)

 

大まかな流れはわかりました。

一部固定の値になっていたりするので、適切に合わせていきます。

 

ユーザ作成

以下のようにstripe.Customer.create()コマンドで顧客を追加することができます。


import stripe
stripe.api_key = YOUR_SECRET_KEY
stripe.Customer.create()

 

Stripe側で確認するとこのようにID(cus_xxxx)だけの顧客アカウントが作成されています。

 

引数としてemailを指定すると、email情報を持ったアカウントが作成されます。


stripe.Customer.create(email='hoge@fuga.com')

 

他の引数など詳しくはこちらを参照。

 

ユーザ取得

idで取得する場合は以下のようにidを指定します。


stripe.Customer.retrieve('cus_BzqtJxCINog3es')
<Customer customer id=cus_BzqtJxCINog3es at 0x105786db8> JSON: {
  "account_balance": 0,
  "created": 1513951656,
  "currency": null,
  "default_source": null,
  "delinquent": false,
  "description": null,
  "discount": null,
  "email": "hoge@fuga.com",
  "id": "cus_BzqtJxCINog3es",
  "livemode": false,
  "metadata": {},
  "object": "customer",
  "shipping": null,
  "sources": {},
  "subscriptions": {}
}

 

emailなどの情報を取得するときは以下のように扱います。

stripe.Customer.retrieve('cus_BzqtJxCINog3es').email
'hoge@fuga.com'

 

詳しくはこちら。

 

ユーザ情報更新

まずretrieveで取得してから以下のように要素を更新し、save()メソッドを実行します。

customer = stripe.Customer.retrieve('cus_BzqtJxCINog3es')
customer.email = 'piyo@fuga.com'
customer.save()
<Customer customer id=cus_BzqtJxCINog3es at 0x105786db8> JSON: {
  "account_balance": 0,
  "created": 1513951656,
  "currency": null,
  "default_source": null,
  "delinquent": false,
  "description": null,
  "discount": null,
  "email": "piyo@fuga.com",
  "id": "cus_BzqtJxCINog3es",
  "livemode": false,
  "metadata": {},
  "object": "customer",
  "shipping": null,
  "sources": {},
  "subscriptions": {}
}

 

詳しくはこちら。

 

ユーザ検索

emailでユーザを検索したい場合は、以下のように工夫する必要があります。

 

公式がAPIを提供してくれるといいんですが、ちょっと面倒ですね。

 

参考

コメントを残す