🌐 ホスト型チェックアウトページの統合
HaloPay のホスト型チェックアウトページと統合します。顧客は HaloPay がホストするチェックアウトページにリダイレクトされます。フロントエンドの作業を最小限に抑えた最もシンプルな統合です。
📦 ステップ 1: 支払い注文の作成
支払い注文を送信し、支払いアドレスを受け取る
**POST** https://api.pay.halochat.io/api/entrust/pre-create
受信アドレス/QRコードと注文情報を返します
Headers
| 名前 | タイプ | 説明 |
|---|---|---|
| X-Sign* | String | hmacSHA256 (body (json string)+timestamp+appKey)。署名ガイド。 |
| X-Timestamp* | String | 秒単位のタイムスタンプ (10桁)。リクエストは2分間有効です。 |
| X-Appid* | String | merchantの一意の認証情報。**アプリ管理ページ**で確認できます。 |
| content-type* | String | application/json |
リクエスト Body
| 名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| out_trade_no | String | はい | マーチャントシステムの注文ID。各注文の固有ID |
| symbol | String | はい | 法定通貨のシンボル |
| amount | String | はい | 金額(小数点以下2桁に四捨五入) |
| name | String | いいえ | 製品名 |
| image | String | いいえ | 製品の画像URL |
| describe | String | いいえ | 製品の説明 |
| time_expire | String | いいえ | 有効期限(秒)、0 はデフォルトを示します |
| callback_url | String | いいえ | コールバック URL |
リクエスト Body の例
{
"out_trade_no": "uz54NEW9TVhLSIDHUSYB4aEFupKoE7I8",
"symbol": "USD",
"amount": "15",
"name": "PRODUCT_NAME",
"image": "https://callback.com/logo.png",
"describe": "CHECKOUT_DESCRIPTION",
"time_expire": 1773750780,
"callback_url": "https://callback.com/"
}
レスポンス (成功 200)
Header
| 名前 | 値 | 必須 | タイプ | 説明 |
|---|---|---|---|---|
| X-Appid | h3j6k9m2n... | Y | String | マーチャントの固有の認証情報。AppManage ページ で見つけてください。 |
| X-Timestamp | 1677152490 | Y | String | 秒単位のタイムスタンプ (10桁)。リクエストは2分間有効です。 |
| X-Sign | e0b78d93... | Y | String | hmacSHA256 (body (json string)+timestamp+appKey)。署名ガイド。 |
Body
{
"code": 0,
"msg": "success",
"data": {
"url": "https://checkout.pay.halochat.io/202603172021145994e1572e91672b34",
"time_expire": 1773750780,
"trade_no": "202603172021145994e1572e91672b34"
}
}
パラメーター
| 名前 | 値 | 必須 | タイプ | 説明 |
|---|---|---|---|---|
| code | 0 | true | Integer | |
| message | success | true | String | |
| data | true | Object | ||
| data.url | https://checkout.pay.halochat.io/202603172021145994e1572e91672b34 | true | String | 支払いに使用されるウェブページのアドレス |
| data.time_expire | 1773754032 | true | Integer | 支払い期限 |
| data.trade_no | 202603172021145994e1572e91672b34 | true | String | HaloPay 注文 ID |
レスポンス (失敗 200)
{
"code": 10003,
"msg": "Params Error: Invalid amount",
"data": null
}
| 名前 | 値 | 必須 | タイプ | 説明 |
|---|---|---|---|---|
| code | 10003 | true | Number | |
| msg | Service error, please try again | true | String | |
| data | true | Object |
注記
セキュリティ対策として、返されるデータに署名します(これによれば { code: 0 } のみに署名すべきですが、返される body 全体に署名します)。さらに、レスポンスの header に Appid、Sign、Timestamp を返します。署名方法は hmacSHA256 (body (json string)+timestamp+appKey) です。署名の検証に失敗した場合は、データが改ざんされていることを示しているため、データは慎重に取り扱ってください。
ヒント
HTTP の body は json 文字列です。HTTP の body 内のコンテンツを署名に追加してください。body のコンテンツが署名のコンテンツと一致することを確認してください。HaloPay がリクエストを受信するとすぐに、body のコンテンツが読み取られ、署名が検証されます。