マーケティングチーム

【初心者向け】Pythonでfincodeの決済APIを実行する実装例(決済URL作成編)

Share facebookX|twitter

index

                 

    fincodeマーケティング担当です。

    この記事では、fincodeのテスト環境を使って、たった数十行のPythonコードでカード決済を開始できる「決済URL作成API」の実装について説明します。
    ※本記事の実装例は、非エンジニアが記述しているので、決済導入が初めてのエンジニアの方や、ビジネスサイドの方でも概要をイメージできる内容になっています。

    本実装例で実現できること

    本記事で紹介する「決済URL作成API」の実装を行うと、以下を実現できます。

    • fincodeが提供するリダイレクト型決済ページを発行し、その決済ページへのURLを出力
    • リダイレクト型決済ページから決済のテストを実行

    リダイレクト型決済とは

    リダイレクト型決済は、fincodeが提供する決済画面を使用して購入者が決済を行う方法です。
    ショップ自身で決済画面を構築することなく、fincodeの決済URLに購入者を誘導するだけで決済を行うことができます。

    「オンライン決済接続方式比較ガイド」資料ダウンロード >

    コード全文:最小構成で動くPythonサンプル

    Python
    import os, requests, json
    
    API_KEY = os.getenv("FINCODE_TEST_SECRET_KEY")
    BASE_URL = "https://api.test.fincode.jp"
    ENDPOINT = "/v1/sessions"
    SUCCESS_URL = "http://localhost:8000/success"
    
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "success_url": SUCCESS_URL,
        "transaction": {
            "pay_type": ["Card"],
            "amount": "1500"
        },
        "card": {
            "job_code": "CAPTURE",
            "tds_type": "2",
            "tds2_type": "2"
        }
    }
    
    try:
        resp = requests.post(f"{BASE_URL}{ENDPOINT}", headers=headers, json=data, timeout=20)
        resp.raise_for_status()
        print("OK:\n" + json.dumps(resp.json(), ensure_ascii=False, indent=2))
    except requests.exceptions.HTTPError:
        try:
            print(json.dumps(resp.json(), ensure_ascii=False, indent=2))
        except Exception:
            print(resp.text)

    コードの流れを分解して理解する

    ①認証キーの設定

    Python
    API_KEY = os.getenv("FINCODE_TEST_SECRET_KEY")

    ②リクエストヘッダーとリクエストボディ

    Python
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    • Authorizationヘッダーは “Bearer <キー>” の形式で送信します。
      fincodeではBearer認証(※2)またはBasic認証が使用できます。本記事ではBearer認証で実装しています。
    • ヘッダーでは認証とJSON形式の指定を行い、ボディには以下の内容を指定します。
    項目 内容 補足
    success_url 決済完了後の戻り先 ローカル開発時はlocalhostでもOK
    pay_type 利用する決済手段 今回は「Card」のみ
    amount 決済金額 文字列で送信(例: "1500"
    job_code 売上確定方法 「CAPTURE」=即時売上、「AUTH」=仮売上
    tds_type / tds2_type 3Dセキュア設定 「2」は3Dセキュア2.0対応

    ※カード決済以外の決済手段を追加する方法はAPIリファレンスをご参照ください。
    APIリファレンス >

    ③APIを実行

    Python
    resp = requests.post(f"{BASE_URL}{ENDPOINT}", headers=headers, json=data, timeout=20)
    • requests.post()で決済URL作成APIを呼び出します。
    • 成功すると、以下のようなJSONレスポンスが返ってきます。
    json
    {
        "id": "lk_**********************",
        "link_url": "https://secure.test.fincode.jp/v1/links/lk_**********************",
    }

    この link_url をブラウザで開くと、テスト用のリダイレクト型決済ページが表示されます。

    ④エラー時の挙動

    Python
    rexcept requests.exceptions.HTTPError:
        try:
            print(json.dumps(resp.json(), ensure_ascii=False, indent=2))
        except Exception:
            print(resp.text)
    

    APIキーが誤っているなどの理由でエラーが発生した場合、APIが返したエラーメッセージを整形して表示します。

    決済のテストを行う

    リダイレクト型決済ページにおいて、テストカードの番号を用いることで、カード決済のテストを行うことができます。
    テストカードの番号はこちらからご確認いただけます。

    カードの「有効期限、CVC、名前」は適当な内容で問題ないです。

    (※1)プログラムが動く環境(パソコンやサーバー)にあらかじめ登録しておく設定情報のことです。APIキーなどの秘密情報をコードに書かず、安全に管理するために使われます。
    (※2)APIキー(アクセストークン)をAPIリクエスト時に送ることで認証する方式です。認証に成功した場合のみリソースを参照・操作できます。

    想定質問(FAQ)

    Q1. timeout は削除しても動きますか?
    → 動作はしますが、サーバー応答が途絶えた際にプログラムが止まるリスクがあります。実運用では必須です。

    Q2. CAPTUREAUTH の違いは?
    CAPTUREは即時売上、AUTHは仮売上(後から確定)。

    Q3. Bearerを付け忘れると?
    → 認証エラー(401)が返ります。ヘッダーの形式 "Authorization": "Bearer <キー>" を必ず確認しましょう。

    Q4. 本番環境では何を変える?
    BASE_URLhttps://api.fincode.jp に変更し、本番用APIキーを設定します。

    おわりに

    本記事では、fincodeのテスト環境を使って、たった数十行のPythonコードでカード決済を開始できる「決済URL作成API」の実装について説明しました。

    非エンジニアであるマーケティング担当者でも数十行の簡単なコードで実装ができたので、fincodeが開発しやすいことを実感しました。

    運営会社

    会社名 GMOイプシロン株式会社(英文表記:GMO Epsilon, Inc.)
    設立年月日 2002年9月26日
    所在地 〒150-0043
    東京都渋谷区道玄坂1丁目14番6号 ヒューマックス渋谷ビル7F
    資本金 1億5百万円
    事業内容 オンライン販売の決済代行、代金回収代行及びそれらに付帯する業務
    主要株主 GMOペイメントゲートウェイ株式会社 (東証プライム上場:3769)
    グループ会社 GMOインターネットグループ

    東証プライム上場企業のGMOペイメントゲートウェイの連結会社として、プライバシーマーク認証やPCI DSS、ISMS準拠のセキュリティ基準で安心してご利用いただける環境を提供しています。

     

    事業規模によって決済手数料のご提案が可能です。
    見積依頼 >

    fincodeサービス概要の資料ダウンロードはこちらから
    資料請求 >

    この記事をShareする facebook X|twitter
    fincode byGMOはスタートアップが成功するために設計されたオンライン決済インフラです。直感的なAPIやローコードコンポーネントで工数少なく実装可能です。
    マーケティングチーム
    マーケティングチーム
    fincode byGMOのマーケティングチームです! リリース情報や業界情報などを発信していきます。

    関連事例