🌐 託管收銀台整合
整合 HaloPay 的託管收銀台。客戶將被重定向到由 HaloPay 託管的收銀台頁面。這是最簡單的整合方式,前端工作量極少。
📦 第 1 步:建立支付訂單
提交支付訂單並獲取支付地址
**POST** https://api.pay.halochat.io/api/entrust/pre-create
返回收款地址/QR code 及訂單資訊
Headers
| 名稱 | 類型 | 描述 |
|---|---|---|
| X-Sign* | String | hmacSHA256 (body (json string)+timestamp+appKey)。簽名指南。 |
| X-Timestamp* | String | 時間戳(秒,10位數)。請求有效期為兩分鐘。 |
| X-Appid* | String | 商家唯一憑證。請在 AppManage 頁面 尋找。 |
| content-type* | String | application/json |
請求 Body
| 名稱 | 類型 | 必填 | 描述 |
|---|---|---|---|
| out_trade_no | String | 是 | 商家系統中的訂單 ID。每筆訂單的唯一 ID |
| symbol | String | 是 | 法幣符號 |
| amount | String | 是 | 金額(四捨五入到小數點後兩位) |
| 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位數)。請求有效期為兩分鐘。 |
| 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 內容並驗證簽名。