快速开始
YYPAY 支持 支付宝、微信、USDT TRC20 三种支付方式,接入简单,几行代码即可完成对接。
API 基础地址
创建订单
接口地址: POST /api/pay/create
请求参数
| 参数 |
必填 |
说明 |
app_id | 是 | 应用 ID |
trade_num | 是 | 商户订单号(需唯一) |
pay_type | 是 | 支付方式:alipay / wechat / usdt |
fee | 是 | 金额(单位:元,USDT为USDT金额) |
title | 是 | 商品名称 |
hash | 是 | 签名 |
请求示例
{
"app_id": "a1b2c3d4e5f6",
"trade_num": "ORDER202401010001",
"pay_type": "alipay",
"fee": "100.00",
"title": "充值100元",
"hash": "abc123..."
}
响应示例(支付宝/微信)
{
"code": 0,
"msg": "success",
"data": {
"order_no": "YY20240101000001",
"qrcode": "https://...",
"expiredAt": 1704067200
}
}
响应示例(USDT)
{
"code": 0,
"msg": "success",
"data": {
"order_no": "YY20240101000001",
"wallet": "TXxx...xxx",
"amount": "10.01",
"expiredAt": 1704067200
}
}
查询订单
接口地址: POST /api/pay/query
请求参数
| 参数 |
必填 |
说明 |
app_id | 是 | 应用 ID |
order_no | 否 | 平台订单号(二选一) |
trade_num | 否 | 商户订单号(二选一) |
hash | 是 | 签名 |
响应示例
{
"code": 0,
"msg": "success",
"data": {
"order_no": "YY20240101000001",
"trade_num": "ORDER202401010001",
"fee": "100.00",
"status": 1,
"pay_type": "alipay",
"paid_at": "2024-01-01 12:30:45"
}
}
异步通知
支付成功后,系统会向商户配置的 notify_url 发送 POST 请求。
通知参数
| 参数 |
说明 |
order_no | 平台订单号 |
trade_num | 商户订单号 |
fee | 支付金额 |
pay_type | 支付方式 |
status | 订单状态:1=成功 |
paid_at | 支付时间 |
hash | 签名 |
商户收到通知后,请返回字符串 success 表示已成功处理。否则系统将重试通知(最多5次)。
签名算法
签名规则:md5(app_secret + app_id + title + fee + trade_num)
PHP 签名示例
function sign($appSecret, $appId, $title, $fee, $tradeNum) {
return md5($appSecret . $appId . $title . $fee . $tradeNum);
}
// 使用示例
$hash = sign('your_secret', 'app123', '商品名称', '100.00', 'ORDER001');
JavaScript 签名示例
const crypto = require('crypto');
function sign(appSecret, appId, title, fee, tradeNum) {
const str = appSecret + appId + title + fee + tradeNum;
return crypto.createHash('md5').update(str).digest('hex');
}
// 使用示例
const hash = sign('your_secret', 'app123', '商品名称', '100.00', 'ORDER001');
查询签名
查询接口签名规则:md5(app_secret + app_id + order_no或trade_num)
状态码说明
| 状态码 |
说明 |
0 | 成功 |
400 | 参数错误 |
401 | 签名验证失败 |
403 | 应用已禁用 |
404 | 订单不存在 |
500 | 系统错误 |