マーケティングチーム

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

             
SharefacebookX|twitterURLのコピー

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が開発しやすいことを実感しました。

    fincodeとは

    fincodeとは、GMOイプシロン株式会社が提供する、スピーディに導入できるオンライン決済サービスです。
    シンプルで統一性のあるAPIと充実の開発支援コンテンツを提供し、エンジニアファーストな設計を追求しています。
    fincodeが提供する決済画面のUIコンポーネント(JavaScript)をそのまま利用することで開発工数を削減し、簡単に決済を実装できます。
    決済を通じてEC/SaaS/プラットフォーム、スタートアップからエンタープライズまで様々なビジネスの成長を支えます。

    +FinTechによる新たな収益モデルの構築

    fincodeのプラットフォーム機能を実装することで、決済金額に対する利用料が得られる新たな収益モデルの構築が可能です。
    貴社のお客様(=テナント)へ提示する決済手数料に、「プラットフォーム利用料」を設定することで、差額が貴社の収益となります。

    「貴社プロダクト + FinTech~新たな収益モデル構築のご提案~」資料ダウンロード >

    fincodeが選ばれる理由

    • エンジニアファーストの設計/洗練されたUX
      オープンでアクセスしやすいWEBドキュメント、REST APIと複数開発言語に対応したAPIリファレンス。
      決済画面のUIも、Android/iOS対応のモバイルSDKにより、少ない開発工数で柔軟にカスタマイズ可能です。
    • 見えない手数料、ゼロへ
      初期費用・月額費用0円。
      さらに、義務化されたEMV 3-Dセキュア認証についても追加費用0円で導入できます。
      料金表に書かれていない見えない手数料はゼロ。カード決済は決済手数料のみでご利用いただけます。
    • 国際標準を日本品質で
      fincodeは日本国内で生まれ、日本のビジネス環境に合わせて設計された決済サービスです。
      海外発サービスでは難しい、日本ならではの細かな商習慣や感性まで理解して、日本の企業と共に成長していきます。

    運営会社

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

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

     

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

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

     

    あわせて読みたいおすすめの記事

    【Python】クレジットカード決済の実装方法(決済登録API+決済実行JS編)

    Python(Flask)でPayPay決済APIを実装する方法(決済登録API+決済実行API)

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

    関連事例