データモデルの理解
Card Products
こちらを読む感じだと、Card Productはクレカ商品を指します(なんとかカードってCMでやってるような感じのもの)。
物理カードやバーチャルのカードについて、動作や機能を定義することができます。Card Productで指定することが可能な属性は、カードがATMやオンラインで使用できるかどうか、また、現在有効であるかどうかを設定できます。物理カードの場合、Card Productは、カードの券面デザインを指定することができます。オプションとして、認証制御やベロシティ制御をCard Productに関連付けることで、関連するカードの使用場所や使用方法を制限することができます。
Cards
カードです。Card Productによって生成、管理できます。
作ってみる
チュートリアルではCurlで叩いてますが、Python SDKを使ってみます。
カードホルダであるユーザを作成(ダッシュボード)
ダッシュボードに記載があるHello Worldなcurlを実行してください。返却されたtokenをこの後使うのでメモしておいてください。
SDKの準備
私はpipでインストールしました。
pip install marqeta
基本的な使い方は以下の通りです。
from marqeta import Client
base_url = "ダッシュボードから取得"
application_token = "ダッシュボードから取得"
access_token = "ダッシュボードから取得"
timeout = 60 # seconds
client = Client(base_url, application_token, access_token, timeout)
Card Productトークンの取得
サンドボックスではすでにいくつかCard Productが作られています。その中から"Reloadable Card"という名前のCard Productのトークンを取得します。
card_products = client.card_products.list() # 25個しか取得できないという制限がある模様。25を超える場合、streamメソッド等を利用すること。
card_product_token = [x for x in card_products if x.name == 'Reloadable Card'][0].token
カードの作成
カードユーザ向けにカードを発行します。
先ほど作ったユーザに向けにカードを作成します。
data = {
"user_token": "a4e3decd-8540-4940-aebc-9b64b2e93e24",
"card_product_token": card_product_token}
client.cards.create(data)
カードの利用
商店のIDであるMID(merchant ID)を指定して、$10を擬似的に送ってみます。
シミュレータ実行はSDKでは用意されていないため、こちらからcurlを生成し呼び出します。
https://www.marqeta.com/docs/developer-guides/core-api-quick-start
作ったカードのトークンは、Pythonコード内でcreated_card.token
で取得できます。
ダッシュボードを確認するとtransactionが作成されていました。
Authorization Control、Velocity Controlを作成するとトランザクションが流れそうです。一旦カードが作れて使えそうなことがわかったのでこの記事は、ここまでとします。