🖼️ worldsxinpay直连支付格式
基本信息
- 接口地址:
/api/payment - 请求方式:
POST
📌 请求头(Headers)说明
支付接口请求时必须在 HTTP 头中携带以下参数,每个字段都很关键,用于安全校验和身份验证。
| 参数名 | 说明 | 必须 | 格式示例 |
|---|---|---|---|
| Content-Type | 请求内容类型,固定为 application/json,表示请求体是 JSON 格式 |
是 | application/json |
| X-API-Key | 商户 API 密钥,由支付平台分配。用于标识商户身份并进行接口权限验证。 | 是 | ABCD1234EFGH5678 |
| X-User-ID | 商户系统在支付平台注册的用户 ID,用于区分不同商户。 | 是 | 100001 |
| X-Signature | 请求签名,用于校验请求的完整性和防篡改。必须使用 HMAC-SHA256 算法结合商户 API Key 生成。 | 是 | 3f1c2b4a5e6d7f8g9h0i... |
⚡ 请求头详细说明
-
Content-Type
- 必须为
application/json - 如果填写错误(如
text/plain),服务器会拒绝请求
- 必须为
-
X-API-Key
- 商户唯一标识
- 请妥善保管,不要泄露
- 与商户后台生成的密钥对应
-
X-User-ID
- 与商户账户绑定,用于识别操作请求来源
- 需要和后台注册信息一致,否则会报 “用户不存在” 错误
-
X-Signature
- 签名算法:
- 将请求参数按字母升序排列
- 转为 JSON 字符串
- 使用 HMAC-SHA256 结合 API Key 生成签名
- 放入请求头
X-Signature
- 示例生成(Node.js):
const crypto = require('crypto'); const apiKey = 'YOUR_API_KEY'; const payload = JSON.stringify({ order_no: '123', amount: '29.90' }); const signature = crypto.createHmac('sha256', apiKey).update(payload).digest('hex'); console.log(signature);
- 签名算法:
请求参数(JSON Body)
| 参数名 | 类型 | 必须 | 详细说明 |
|---|---|---|---|
| order_no | string | 是 | 商户系统生成的唯一订单号,需在商户系统内保持唯一性,用于识别此次支付交易。例如:"ORD202512120001" |
| amount | string | 是 | 商品总金额,需等于所有商品 price × quantity 的总和。格式建议为字符串并保留两位小数,如 "29.90"。 |
| other | string | 否 | SDK 自动生成的加密参数,用于风控校验和额外安全验证。调用 PaymentSDK 时会自动生成,无需手动填写。 |
| card_no | string | 是 | 信用卡卡号,需提供完整数字,不含空格,例如 "4111111111111111"。 |
| exp_month | string | 是 | 信用卡有效期月份,格式为两位数字:"01" ~ "12"。 |
| exp_year | string | 是 | 信用卡有效期年份,4位数字,如 "2025"。 |
| cvv | string | 是 | 信用卡安全码(Visa/Master 为卡片背面3位,Amex为前面4位)。例如 "123"。 |
| bill_full_name | string | 是 | 持卡人账单姓名,需与信用卡账单信息一致,如 "James Harpool"。 |
| bill_phone | string | 是 | 持卡人账单电话,一般为国际规范手机号,如 "9132316070"。 |
| bill_email | string | 是 | 持卡人账单邮箱,用于支付验证和通知,如 "test@example.com"。 |
| bill_country | string | 是 | 国家代码(ISO 3166-1 alpha-2),如美国 "US",中国 "CN",加拿大 "CA" 等。 |
| bill_state | string | 是 | 州 / 省,例如 "New Mexico" 或 "CA" 或 "广东"。与账单地址一致即可。 |
| bill_city | string | 是 | 城市名称,如 "Los Angeles"、"上海"。 |
| bill_address1 | string | 是 | 持卡人账单地址第一行,通常为详细街道地址,如 "316 Don Fernando Street"。 |
| bill_address2 | string | 否 | 账单地址第二行,可选,如公寓号、单元号等,例如 "Unit B"。 |
| bill_zip | string | 是 | 邮政编码,例如 "87571"、"100000"。需与账单国家对应。 |
| return_url | string | 是 | 支付完成后同步跳转地址,用户完成支付后浏览器会跳转到此 URL。 |
| notify_url | string | 是 | 支付结果服务器回调地址(异步通知)。系统会以 POST 请求发送支付结果,请确保地址可访问且能接收 JSON。 |
| ip_address | string | 是 | 客户端真实 IP 地址,例如 "128.123.56.14"。若服务器代发请求也需传用户 IP。 |
| GoodsJson | string | 是 | 商品列表 JSON 字符串,包含商品名称、价格、数量。必须与 amount 金额一致。示例:"{\"goodsInfo\":[{\"goodsName\":\"Product 1\",\"goodsPrice\":\"19.90\",\"quantity\":1}]}" |
商品信息格式(GoodsJson)
{
"goodsInfo": [
{
"goodsName": "商品名称",
"goodsPrice": "商品价格",
"quantity": 1
}
]
}
SDK 自动生成 other 参数示例
<script src="https://js.worldsxinpay.com/payment_sdk_real_jm.js"></script>
<script>
async function makePayment() {
const orderData = {
"order_no": "TEST123456789",
"amount": "29.90",
"return_url": "https://www.example.com/return",
"notify_url": "https://www.example.com/notify",
"card_no": "4111111111111111",
"exp_month": "12",
"exp_year": "2025",
"cvv": "123",
"bill_full_name": "James Harpool",
"bill_phone": "9132316070",
"bill_email": "test@example.com",
"bill_country": "US",
"bill_state": "New Mexico",
"bill_city": "Taos",
"bill_address1": "316 Don Fernando Street",
"bill_address2": "Unit B",
"bill_zip": "87571",
"ip_address": "128.123.56.14",
"GoodsJson": "{'goodsInfo':[{'goodsName':'Product 1','goodsPrice':'19.90','quantity':1}]}"
};
const result = await PaymentSDK.processPayment(orderData);
}
</script>
完整示例请求
{
"order_no": "TEST123456789",
"amount": "29.90",
"return_url": "https://www.example.com/return",
"notify_url": "https://www.example.com/notify",
"card_no": "4111111111111111",
"exp_month": "12",
"exp_year": "2025",
"cvv": "123",
"bill_full_name": "James Harpool",
"bill_phone": "9132316070",
"bill_email": "test@example.com",
"bill_country": "US",
"bill_state": "New Mexico",
"bill_city": "Taos",
"bill_address1": "316 Don Fernando Street",
"bill_address2": "Unit B",
"bill_zip": "87571",
"ip_address": "128.123.56.14",
"GoodsJson": "{\"goodsInfo\":[{\"goodsName\":\"Product 1\",\"goodsPrice\":\"19.90\",\"quantity\":1},{\"goodsName\":\"Product 2\",\"goodsPrice\":\"10.00\",\"quantity\":1}]}"
}
成功
{
"status": "success",
"data": {
"status": "success"
}
}
失败
{
"status": "failed",
"ErroMsg": "Payment failed",
"data": {
"status": "failed",
"ErroMsg": "Payment failed"
}
}
签名算法(Signature)
将所有请求参数按字母顺序排序
转为 JSON 字符串
使用 HMAC-SHA256 + API Key 生成签名
将签名放入请求头 X-Signature