API 接口文档 v1.0
Base URL: https://payv.xiaojiaixhs.com
编码格式: UTF-8
数据格式: JSON
支付方式: 微信JSAPI支付 / 支付宝H5支付
{
"code": 0, // 0表示成功,非0表示失败
"message": "success",// 响应消息
"data": { ... } // 响应数据(可选)
}
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 通用错误(具体见message) |
| -1 | 参数错误 |
| -2 | 系统错误 |
通过微信网页授权获取用户OpenID(必须在微信浏览器中访问)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| redirect | String | 否 | 授权成功后的回调地址(会自动追加openid参数) |
方式1:重定向方式
// 跳转到授权页面,授权后返回指定页面并带上openid
window.location.href = 'https://payv.xiaojiaixhs.com/api/get_openid.php?redirect=' +
encodeURIComponent('https://your-page.com/pay.html');
方式2:直接获取JSON
// 不传redirect参数,授权后返回JSON
GET https://payv.xiaojiaixhs.com/api/get_openid.php
{
"code": 0,
"message": "获取OpenID成功",
"data": {
"openid": "oHaZG6jqqQXeLZTm4DXIzO-zNsJ8",
"access_token": "ACCESS_TOKEN",
"expires_in": 7200
}
}
<!-- pay.html -->
<script>
// 页面加载时检查是否有openid
window.onload = function() {
const urlParams = new URLSearchParams(window.location.search);
const openid = urlParams.get('openid');
if (openid) {
// 已获取到openid,可以进行支付
console.log('用户OpenID:', openid);
} else {
// 跳转获取openid
const currentUrl = window.location.href.split('?')[0];
window.location.href = 'https://payv.xiaojiaixhs.com/api/get_openid.php?redirect=' +
encodeURIComponent(currentUrl);
}
};
</script>
⚠️ 注意事项:
创建微信JSAPI支付订单,返回前端所需的支付参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| openid | String | 是 | 用户的微信OpenID |
| body | String | 是 | 商品描述(最多128字符) |
| total_fee | Integer | 是 | 订单金额(单位:分) |
| out_trade_no | String | 否 | 商户订单号(不传则自动生成) |
| attach | String | 否 | 附加数据,支付回调时原样返回 |
POST /api/create_order.php
Content-Type: application/json
{
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
"body": "测试商品-iPhone 15 Pro",
"total_fee": 999900,
"attach": "order_data_123"
}
{
"code": 0,
"message": "订单创建成功",
"data": {
"out_trade_no": "20241126153022123456",
"prepay_id": "wx261530229abcdef1234567890",
"jsapi_params": {
"appId": "wx3760xxxxxxxxxxxx",
"timeStamp": "1732606222",
"nonceStr": "abc123def456",
"package": "prepay_id=wx261530229abcdef1234567890",
"signType": "MD5",
"paySign": "C380BEC2BFD727A4B6845133519F3AD6"
},
"timestamp": 1732606222
}
}
// 使用微信JSSDK发起支付
wx.chooseWXPay({
timestamp: data.jsapi_params.timeStamp,
nonceStr: data.jsapi_params.nonceStr,
package: data.jsapi_params.package,
signType: data.jsapi_params.signType,
paySign: data.jsapi_params.paySign,
success: function(res) {
console.log('支付成功', res);
},
fail: function(res) {
console.log('支付失败', res);
}
});
创建支付宝H5支付订单,自动跳转到支付宝收银台
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| body | String | 是 | 商品描述(最多128字符) |
| total_fee | Integer | 是 | 订单金额(单位:分) |
| out_trade_no | String | 否 | 商户订单号(不传则自动生成,以"ALI"开头) |
POST /api/create_alipay_order.php
Content-Type: application/json
{
"body": "测试商品-iPhone 15 Pro",
"total_fee": 100
}
{
"code": 0,
"message": "订单创建成功",
"data": {
"out_trade_no": "ALI20251209181049633538",
"payment_method": "alipay",
"pay_html": "<form id='alipaysubmit'...>...</form><script>...</script>",
"timestamp": 1733743849
}
}
方式1:直接页面跳转(推荐)
fetch('https://payv.xiaojiaixhs.com/api/create_alipay_order.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
body: '测试商品',
total_fee: 100 // 1元
})
})
.then(res => res.json())
.then(data => {
if (data.code === 0) {
// 将支付HTML写入当前页面,自动跳转支付宝
document.open();
document.write(data.data.pay_html);
document.close();
}
});
方式2:快速支付页面(无需编码)
// 直接访问快速支付页面(默认1元)
window.location.href = 'https://payv.xiaojiaixhs.com/alipay_pay.php';
// 或使用完整测试页面(可自定义金额)
window.location.href = 'https://payv.xiaojiaixhs.com/test_alipay.html';
⚠️ 注意事项:
| 回调类型 | URL | 说明 |
|---|---|---|
| 异步通知 | https://payv.xiaojiaixhs.com/api/alipay_notify.php | 支付成功后由支付宝服务器调用,更新订单状态 |
| 同步回调 | https://payv.xiaojiaixhs.com/api/alipay_return.php | 支付完成后用户跳转的页面,显示支付结果 |
根据商户订单号查询订单支付状态
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| out_trade_no | String | 是 | 商户订单号 |
GET /api/query_order.php?out_trade_no=20241126153022123456
{
"code": 0,
"message": "查询成功",
"data": {
"out_trade_no": "20241126153022123456",
"transaction_id": "4200001234567890",
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
"body": "测试商品-iPhone 15 Pro",
"total_fee": 999900,
"total_fee_yuan": "9999.00",
"status": "success",
"status_text": "支付成功",
"pay_time": "2024-11-26 15:32:10",
"created_at": "2024-11-26 15:30:22"
}
}
| 状态值 | 说明 |
|---|---|
| pending | 待支付 |
| paying | 支付中 |
| success | 支付成功 |
| closed | 已关闭 |
微信/支付宝支付成功后的异步回调通知(由支付服务器调用)
说明:此接口由支付服务器调用,开发者无需手动调用。
微信配置:在管理后台配置notify_url为: https://payv.xiaojiaixhs.com/api/notify.php
支付宝配置:异步通知URL为: https://payv.xiaojiaixhs.com/api/alipay_notify.php
验证:接口会自动验证签名和金额,确保支付数据安全。
日志:所有回调记录会保存在 cache/ 目录下的对应日志文件中。
<xml>
<appid><![CDATA[wx3760xxxxxxxxxxxx]]></appid>
<mch_id><![CDATA[1234567890]]></mch_id>
<nonce_str><![CDATA[abc123]]></nonce_str>
<sign><![CDATA[SIGN]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<out_trade_no><![CDATA[20241126153022123456]]></out_trade_no>
<transaction_id><![CDATA[4200001234567890]]></transaction_id>
<total_fee>999900</total_fee>
<time_end><![CDATA[20241126153210]]></time_end>
</xml>
// 支付宝会通过POST发送以下参数
{
"trade_status": "TRADE_SUCCESS",
"out_trade_no": "ALI20251209181049633538",
"trade_no": "2025120923001466291413012987",
"total_amount": "1.00",
"buyer_logon_id": "131****0452",
"gmt_payment": "2025-12-09 18:11:02",
"sign": "..." // RSA2签名
}
💡 回调日志文件:
// Step 1: 获取用户OpenID
const urlParams = new URLSearchParams(window.location.search);
let userOpenid = urlParams.get('openid');
if (!userOpenid) {
// 跳转获取openid
const currentUrl = window.location.href.split('?')[0];
window.location.href = 'https://payv.xiaojiaixhs.com/api/get_openid.php?redirect=' +
encodeURIComponent(currentUrl);
// 授权后会带openid参数返回
}
// Step 2: 创建订单
fetch('http://payv.xiaojiaixhs.com/api/create_order.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
openid: userOpenId,
body: '商品名称',
total_fee: 100 // 1元 = 100分
})
})
.then(res => res.json())
.then(data => {
if (data.code === 0) {
// Step 3: 调起微信支付
const params = data.data.jsapi_params;
wx.chooseWXPay({
timestamp: params.timeStamp,
nonceStr: params.nonceStr,
package: params.package,
signType: params.signType,
paySign: params.paySign,
success: function() {
// Step 4: 支付成功,查询订单确认
checkOrderStatus(data.data.out_trade_no);
}
});
}
});
// 查询订单状态
function checkOrderStatus(orderNo) {
fetch(`http://payv.xiaojiaixhs.com/api/query_order.php?out_trade_no=${orderNo}`)
.then(res => res.json())
.then(data => {
if (data.code === 0 && data.data.status === 'success') {
alert('支付成功!');
}
});
}
| 特性 | 微信JSAPI支付 | 支付宝H5支付 |
|---|---|---|
| 环境要求 | 必须在微信浏览器 | 任何手机浏览器 |
| 需要OpenID | 是 | 否 |
| 跳转方式 | JSSDK调起支付 | 自动跳转收银台 |
| 订单号前缀 | 数字 | ALI |
| 创建接口 | /api/create_order.php | /api/create_alipay_order.php |
| 异步回调 | /api/notify.php | /api/alipay_notify.php |
| 同步回调 | 无 | /api/alipay_return.php |