メインコンテンツまでスキップ

🔔 Webhook通知

Webhookを設定して通知を受け取るようにします。HaloPayは最終的な取引結果をmerchantに通知します。Webhook URLは**アプリ管理ページ**で設定できます。

以下のイベントが発生すると、merchantが設定したコールバックインターフェースにリクエストが送信されます:

  • ✅ 決済取引成功
  • ⏱️ 決済タイムアウト
  • 💡 決済不足
  • ✅ 出金成功
  • ❌ 出金失敗

コールバック頻度:5s、15s、30s、3m、10m、20m、30m、30m、30m、60m、3h、3h、3h、6h、6h。合計:24h3m50s

コールバックの内容は常に暗号化されています。詳細については、署名をご覧ください。

Webhook通知

ヘッダー

名前必須説明
X-Appidh3j6k9m2n...Ystringmerchantの一意の認証情報。**アプリ管理ページ**で確認できます。
X-Timestamp1700349280Ystring秒単位のタイムスタンプ(10桁)。リクエストは2分間有効です。
X-Signe0c6a719ebc366da...YstringhmacSHA256(body(json文字列)+timestamp+appKey)
X-EventTypePaidYstring取引ステータスコード

決済 Body

{
"appid": "ad4cyr8dpfs9j2u1",
"trade_no": "202603141449020ad66d22c5787af677",
"out_trade_no": "20250101xxxxxxxxxxxxx12221c",
"amount_collected": "5",
"amount": "5",
"token_amount": "4.998045",
"chain": "Tron",
"chain_id": 3448148188,
"type": "PAYMENT",
"currency_id": 75,
"txid": "008f81782daa47709d67bc2073ffff639035cfd17b7e4ad06f0d6ec24099c013",
"status": "PAID", (TO-BE-PAID/PAID/TIME-OUT)
"time": 1773471015
}
💡

顧客が全額支払わなくても、ステータスフィールドをTO-BE-PAIDに設定したコールバック通知を送ります。amount_collectedフィールドには、支払われたトークン数が表示されます。

決済の時間制限を超過すると、ステータスフィールドをTIME-OUTに設定したコールバックを送ります。amount_collectedフィールドにも支払われたトークン数が表示されます。

出金 Body

{
"appid": "ad4cyr8dpfs9j2u1",
"chain": "Tron",
"chain_id": 3448148188,
"contract": "TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf",
"currency_id": 75,
"status": "PAID", (PAID/FAIL)
"time": 1773473637,
"token_amount": "1",
"trade_no": "202603141533083d1eba01c48c2a873c",
"txid": "aa23e0aebd2e4c5b82786a5e8b1f414222c7c525a438b95e2cc7d67c81187a5d",
"type": "TRANSFER"
}

QRコード決済 Body

{
"appid": "1aiqfs0agrd3b9fm", (デフォルトでは支払いAPPIDと異なります。)
"trade_no": "2c8b150bf35abc59189e333c107247db",
"type": "QR_PAYMENT",
"chain": "Tron",
"chain_id": 3448148188,
"contract": "TRX",
"txid": "2cdf12e85ec73a61280daaf49c4f27686519407fa0dc7b7744596cad29cbd53c",
"currency_id": 75,
"from_address": "TSpjU4PUYzAyY88wyKEEMD7MryneC1WLeb",
"to_address": "TY1RJdyJh4y1tgmPFrnSaWFhM1HwqTvCQ1",
"token_amount": "11",
"status": "PAID", (PAID)
"time": 1773473913
}

パラメータ

フィールド説明
appidstringmerchantのAPPID
trade_nostring取引ID
out_trade_nostringmerchantの注文ID
amountstring取引金額(法定通貨金額)
token_amountstring取引金額(トークン)
chainstringチェーン名
chain_idintチェーンID
typestring取引タイプ(「PAYMENT/TRANSFER/QR_PAYMENT」)
currency_idintグローバル一意の通貨ID TokenList
txidstringオンチェーン取引ハッシュ
statusstring取引ステータス(TO-BE-PAID/PAID/TIME-OUT/FAIL)。注文が完全に支払われていない場合、TO-BE-PAIDコールバックがトリガーされます。
timeint最終オンチェーン時刻(失敗した場合、タイムアウト期間を返します)
amount_collectedstringユーザーが支払ったトークン数
contractstringトークンのコントラクトアドレス。主通貨はETH/TRX/BNB
from_addressstring決済ウォレットアドレス
to_addressstring受取ウォレットアドレス
💡

merchantは情報の安全を保証するために署名します。注文の処理に成功したら、HTTPレスポンスのボディに「Success」を返してください。処理に失敗した場合、HaloPayは再送信を試み、Webhookは最大15回までリトライします(コールバック頻度:5s、15s、30s、3m、10m、20m、30m、30m、30m、60m、3h、3h、3h、6h、6h、合計:24h3m50s)。

📌 例

Merchant Webhookサーバーへのリクエスト

POST /webhook/callback HTTP/1.1
Host: merchant.example.com
Content-Type: application/json
X-Appid: ad4cyr8dpfs9j2u1
X-Timestamp: 1773471015
X-Sign: e0c6a719ebc366da...
X-EventType: Paid

{
"appid": "ad4cyr8dpfs9j2u1",
"trade_no": "202603141449020ad66d22c5787af677",
"out_trade_no": "20250101xxxxxxxxxxxxx12221c",
"amount_collected": "5",
"amount": "5",
"token_amount": "4.998045",
"chain": "Tron",
"chain_id": 3448148188,
"type": "PAYMENT",
"currency_id": 75,
"txid": "008f81782daa47709d67bc2073ffff639035cfd17b7e4ad06f0d6ec24099c013",
"status": "PAID",
"time": 1773471015
}

Merchant Webhookサーバーからのレスポンス

HTTP/1.1 200 OK
Content-Type: text/plain

Success