🌐 호스팅 결제 페이지 연동
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 | 판매자의 고유 자격 증명. AppManage 페이지 에서 찾을 수 있습니다. |
| 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 내용을 읽고 서명을 검증합니다.