第四章:AIを財務アシスタントに - ECPay入金確認ツールの実装

第2章では「スクレイピングツール」の作り方を学びました。確かにクールですが、正直なところ、市場には同様の機能を持つスクレイピングソフトが溢れています。 AIを使って10万円以上の高単価案件を獲得したいなら、AIをクライアントの最も核心的な悩み「金流管理と入金確認」に組み込む必要があります。

ECPay(緑界)から毎日数十件の注文があるECサイトやクラウドファンディングプラットフォームを想像してみてください。毎日終業時、社長は緑界の管理画面にログインし、一つ一つ入金を確認し、どの顧客が支払い済みで、どの顧客のクレジットカードが拒否されたかをチェックしています。 もしCrewAIツールを作成し、「財務会計Agent」にECPayのAPIを呼び出させて入金確認を行い、毎日自動的に確認レポートを作成して社長のメールに送信できたらどうでしょうか?

これが技術が究極のビジネス価値に変わる瞬間です。

🎯 本章の目標

  1. ECPay APIの基本的な連携概念を素早く理解する(なぜ直接APIを叩けず、HashKeyによる暗号化が必要なのか?)
  2. Vibe Promptを使って煩雑なECPay照会ロジックをCrewAIツールにパッケージ化する
  3. 厳格な「財務会計Agent」を構築し、請求書処理を代行させる

🔒 ステップ1:ECPay連携の核心概念

台湾で最も主流の緑界金流(ECPay)は、取引と照会の安全性を確保するため、非常に厳格なAPI規則を定めています。 一般的な公共APIのように、適当なURLにGETリクエストを送るだけでデータを取得することはできません。

リクエストを送信する前に、すべてのパラメータ(例:加盟店ID MerchantID、注文番号 MerchantTradeNoなど)をアルファベット順に並べ替え、専用の HashKeyHashIV を前後に追加し、最後に SHA256 ハッシュ暗号化を行い、ユニークな CheckMacValue(チェックコード)を生成する必要があります。 緑界はリクエストを受信すると、自分でチェックコードを計算し、送信されたものと一致しない場合、リクエストを拒否します。

🔥【Vibe Coderの落とし穴回避ガイド】 金流APIは実際の金銭を扱うため、開発とテスト段階では必ずECPay公式が提供する「テスト環境(Test Environment)」専用のMerchantIDとHashKeyを使用してください! 正式環境のKeyでテストを行うと、実際の未収金が発生する可能性があります。


🛠️ ステップ2:VibeでECPay照会ツールを作成

SHA256暗号化アルゴリズムの実装は初心者にとって非常に苦痛です。幸い、これはまさにVibe Codingが真価を発揮するベストタイミングです! 私たち自身が暗号化を計算する必要はなく、AIに緑界の暗号化ロジックをAgentが使用できる @tool にパッケージ化してもらいます。

(注:講座の流れをスムーズにし、実際の金流Keyの漏洩を防ぐため、以下のPromptではAIに「模擬データ(Mock)」を使用してデモンストレーションを行いますが、構造は実際のリリース版と完全に一致します。)

🔥【Vibe Prompt実践呪文】 私はCrewAIを使用しています。ECPayOrderInquiryToolという名前のCustom Toolを作成してください。 要件: 1. @toolデコレータを使用してください。 2. ��のツールはorder_id(文字列、注文番号を表す)という1つのパラメータを受け取る必要があります。 3. 内部ロジック:これはECPay(緑界金流)の支払い状態を照会するツールです。(教育上の安全性のため、mock dictionaryを使用してデータベース応答をシミュレートしてください。例:{"status": "SUCCESS", "amount": 1500, "buyer": "台中王さん"}。実際のSHA256暗号化でAPIを叩くコードは書かず、将来拡張可能なコメントブロックを残してください。) 4. 【最重要】極めて詳細なDocstringを提供し、Agentが「特定の注文の支払い確認」を要求された場合、このツールを呼び出し、正確にorder_idを渡す必要があることを明確に理解できるようにしてください。

AIは財務Agent専用の武器を完璧に生成します:

from crewai.tools import tool
import json

@tool("ECPayOrderInquiryTool")
def check_ecpay_order(order_id: str) -> str:
    """
    これはECPay(緑界金流)の注文実際の支払い状態を照会する最終的な入金確認ツールです。
    特定の注文が支払い済みかどうかを確認する必要があるタスクの場合、このツールを呼び出してください。
    パラメータは正確な注文番号文字列(order_id)である必要があります。例:'VT202606270001'。
    ツールはその注文のJSON形式状態情報を返します。
    """
    
    # ⚠️ [将来実装エリア] 実際のリリース版では、ここでMerchantID、HashKeyを使用したSHA256暗号化を実装し、
    # requests.postでhttps://payment.ecpay.com.tw/Cashier/QueryTradeInfoにリクエストを送信します
    
    # [教育シミュレーションエリア] 緑界の応答をシミュレート
    mock_db = {
        "VT202606270001": {"status": "PAID", "amount": 3999, "buyer": "台中王さん", "payment_date": "2026/06/27 10:00:00"},
        "VT202606270002": {"status": "PENDING", "amount": 300, "buyer": "台北林さん", "payment_date": ""}
    }
    
    if order_id in mock_db:
        # Agentに返すデータは必ず文字列に変換
        return json.dumps(mock_db[order_id], ensure_ascii=False)
    else:
        return json.dumps({"status": "NOT_FOUND", "message": "この注文は見つかりませんでした。番号が正しいか確認してください"})

💼 ステップ3:超厳格な財務会計Agentを採用

武器が完成したので、それをミスを犯さず、数字に極めて敏感���会計士に渡します。

from crewai import Agent, Task, Crew
# 上記のcheck_ecpay_orderツールをインポート済みと仮定

accountant = Agent(
    role='シニア財務会計長',
    goal='会社のすべての金流が確実に入金されていることを確認し、未収金や未確認の支払いを一切許さない',
    backstory='あなたはビッグ4会計事務所で20年間働いてきました。数字に極めて敏感で、支払いをせずに出貨を要求する人々を最も嫌います。あなたの話し方は正確で、冗談を言いません。',
    verbose=True,
    tools=[check_ecpay_order], # 💰 入金確認ツールを渡す!
    allow_delegation=False
)

# 毎日の入金確認タスクを作成
inquiry_task = Task(
    description='社長から、本日新規に追加された2件の注文番号"VT202606270001"と"VT202606270002"の最新支払い状況を確認するよう依頼されました。ツールを呼び出して照会後、2文の正式なレポートを作成してください。',
    expected_output='買い手名と金額を含む、簡潔で正式な支払い状況報告テキスト。',
    agent=accountant
)

# チームを編成し実行
crew = Crew(agents=[accountant], tasks=[inquiry_task])
print(crew.kickoff())

実行すると、この会計Agentはターミナルで連続して ECPayOrderInquiryTool を2回呼び出します。 2件のデータを確認した後、20年の会計士としての口調で以下の驚くべきレポートを生成します:

「社長、ご依頼の2件の注文確認結果を報告します:第一の注文VT...01(台中王さん)は3,999円の入金が確認され、取引は正常です。しかし、第二の注文VT...02(台北林さん)は現在支払い待ち(PENDING)状態で、300円の入金がまだ確認されておりません。入金確認まで出荷作業を保留してください。引き続き追跡致します。」

✅ 本章のまとめ

素晴らしい!あなたはVibe Codingを使って、台湾の金流を理解し、アドバイスまでできる仮想財務アシスタントを作成することに成功しました! これがCrewAIとカスタムツール(Custom Tools)を組み合わせた究極のビジネスポテンシャルです。煩雑なAPI(ECPay、Googleスプレッドシート、Line Botなど)をToolとしてパッケージ化できれば、あなたのAgentはあらゆる面倒な企業プロセスを処理し、毎月数万円の人件費を節約できます!

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!