协议规则

请求数据格式:application/x-www-form-urlencoded

返回数据格式:JSON

签名算法:MD5

字符编码:UTF-8

页面跳转支付

此接口可用于用户前台直接发起支付,使用form表单跳转或拼接成url跳转。

URL地址:https://by.xixiang.asia/submit.php

请求方式:POST 或 GET(推荐POST,不容易被劫持或屏蔽)

请求参数说明:

字段名变量名必填类型示例值描述
商户IDpidInt1001
支付方式typeStringalipay支付方式列表
商户订单号out_trade_noString20160806151343349
异步通知地址notify_urlStringhttp://www.pay.com/notify_url.php服务器异步通知地址
跳转通知地址return_urlStringhttp://www.pay.com/return_url.php页面跳转通知地址
商品名称nameStringVIP会员如超过127个字节会自动截取
商品金额moneyString1.00单位:元,最大2位小数
业务扩展参数paramString没有请留空支付后原样返回
签名字符串signString202cb962ac59075b964b07152d234b70签名算法点此查看
签名类型sign_typeStringMD5默认为MD5

支付方式(type)不传会跳转到收银台支付

API接口支付

此接口可用于服务器后端发起支付请求,会返回支付二维码链接或支付跳转url。

URL地址:https://by.xixiang.asia/mapi.php

请求方式:POST

请求参数说明:

字段名变量名必填类型示例值描述
商户IDpidInt1001
支付方式typeStringalipay支付方式列表
商户订单号out_trade_noString20160806151343349
异步通知地址notify_urlStringhttp://www.pay.com/notify_url.php服务器异步通知地址
跳转通知地址return_urlStringhttp://www.pay.com/return_url.php页面跳转通知地址
商品名称nameStringVIP会员如超过127个字节会自动截取
商品金额moneyString1.00单位:元,最大2位小数
用户IP地址clientipString192.168.1.100用户发起支付的IP地址
设备类型deviceStringpc根据用户浏览器的UA判断,
传入用户所使用的浏览器
或设备类型,默认为pc
设备类型列表
业务扩展参数paramString没有请留空支付后原样返回
签名字符串signString202cb962ac59075b964b07152d234b70签名算法点此查看
签名类型sign_typeStringMD5默认为MD5

返回结果(json):

字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString失败时返回原因
订单号trade_noString20160806151343349支付订单号
支付跳转urlpayurlStringhttps://by.xixiang.asia/pay/wxpay/202010903/如果返回该字段,则直接跳转到该url支付
二维码链接qrcodeStringweixin://wxpay/bizpayurl?pr=04IPMKM如果返回该字段,则根据该url生成二维码
小程序跳转urlurlschemeStringweixin://dl/business/?ticket=xxx如果返回该字段,则使用js跳转该url,可发起微信小程序支付

注:payurl、qrcode、urlscheme 三个参数只会返回其中一个

支付结果通知

通知类型:服务器异步通知(notify_url)、页面跳转通知(return_url)

请求方式:GET

请求参数说明:

字段名变量名必填类型示例值描述
商户IDpidInt1001
易支付订单号trade_noString20160806151343349021新百应支付2.0支付平台订单号
商户订单号out_trade_noString20160806151343349商户系统内部的订单号
支付方式typeStringalipay支付方式列表
商品名称nameStringVIP会员
商品金额moneyString1.00
支付状态trade_statusStringTRADE_SUCCESS只有TRADE_SUCCESS是成功
业务扩展参数paramString
签名字符串signString202cb962ac59075b964b07152d234b70签名算法点此查看
签名类型sign_typeStringMD5默认为MD5

收到异步通知后,需返回success以表示服务器接收到了订单通知

MD5签名算法

1、将发送或接收到的所有参数按照参数名ASCII码从小到大排序(a-z),sign、sign_type、和空值不参与签名!

2、将排序后的参数拼接成URL键值对的格式,例如 a=b&c=d&e=f,参数值不要进行url编码。

3、再将拼接好的字符串与商户密钥KEY进行MD5加密得出sign签名参数,sign = md5 ( a=b&c=d&e=f + KEY ) (注意:+ 为各语言的拼接符,不是字符!),md5结果为小写。

4、具体签名与发起支付的示例代码可下载SDK查看。

支付方式列表

调用值描述
alipay支付宝
wxpay微信支付

设备类型列表

调用值描述
pc电脑浏览器
mobile手机浏览器
qq手机QQ内浏览器
wechat微信内浏览器
alipay支付宝客户端
jump仅返回支付跳转url

[API]查询商户信息

URL地址:https://by.xixiang.asia/api.php?act=query&pid={商户ID}&key={商户密钥}

请求参数说明:

字段名变量名必填类型示例值描述
操作类型actStringquery此API固定值
商户IDpidInt1001
商户密钥keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i

返回结果:

字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
商户IDpidInt1001商户ID
商户密钥keyString(32)89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i商户密钥
商户状态activeInt11为正常,0为封禁
商户余额moneyString0.00商户所拥有的余额
结算方式typeInt11:支付宝,2:微信,3:QQ,4:银行卡
结算账号accountStringadmin@pay.com结算的支付宝账号
结算姓名usernameString张三结算的支付宝姓名
订单总数ordersInt30订单总数统计
今日订单order_todayInt15今日订单数量
昨日订单order_lastdayInt15昨日订单数量

[API]查询结算记录

URL地址:https://by.xixiang.asia/api.php?act=settle&pid={商户ID}&key={商户密钥}

请求参数说明:

字段名变量名必填类型示例值描述
操作类型actStringsettle此API固定值
商户IDpidInt1001
商户密钥keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i

返回结果:

字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString查询结算记录成功!
结算记录dataArray结算记录列表

[API]查询单个订单

URL地址:https://by.xixiang.asia/api.php?act=order&pid={商户ID}&key={商户密钥}&out_trade_no={商户订单号}

请求参数说明:

字段名变量名必填类型示例值描述
操作类型actStringorder此API固定值
商户IDpidInt1001
商户密钥keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i
系统订单号trade_no选择String20160806151343312
商户订单号out_trade_no选择String20160806151343349

提示:系统订单号 和 商户订单号 二选一传入即可,如果都传入以系统订单号为准!

返回结果:

字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString查询订单号成功!
易支付订单号trade_noString2016080622555342651新百应支付2.0支付平台订单号
商户订单号out_trade_noString20160806151343349商户系统内部的订单号
第三方订单号api_trade_noString20160806151343349支付宝微信等接口方订单号
支付方式typeStringalipay支付方式列表
商户IDpidInt1001发起支付的商户ID
创建订单时间addtimeString2016-08-06 22:55:52
完成交易时间endtimeString2016-08-06 22:55:52
商品名称nameStringVIP会员
商品金额moneyString1.00
支付状态statusInt01为支付成功,0为未支付
业务扩展参数paramString默认留空
支付者账号buyerString默认留空

[API]批量查询订单

URL地址:https://by.xixiang.asia/api.php?act=orders&pid={商户ID}&key={商户密钥}

请求参数说明:

字段名变量名必填类型示例值描述
操作类型actStringorders此API固定值
商户IDpidInt1001
商户密钥keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i
查询订单数量limitInt20返回的订单数量,最大50
页码pageInt1当前查询的页码

返回结果:

字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString查询结算记录成功!
订单列表dataArray订单列表

[API]提交订单退款

需要先在商户后台开启订单退款API接口开关,才能调用该接口发起订单退款

URL地址:https://by.xixiang.asia/api.php?act=refund

请求方式:POST

请求参数说明:

字段名变量名必填类型示例值描述
商户IDpidInt1001
商户密钥keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i
易支付订单号trade_no特殊可选String20160806151343349021易支付订单号
商户订单号out_trade_no特殊可选String20160806151343349订单支付时传入的商户订单号,商家自定义且保证商家系统中唯一
退款金额moneyString1.50少数通道需要与原订单金额一致

注:trade_no、out_trade_no 不能同时为空,如果都传了以trade_no为准

返回结果:

字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString退款成功

[API]查询退款记录

按自然日查询该商户已成功退款记录(来源系统退款表,按退款处理时间统计)。

URL地址:https://by.xixiang.asia/api.php?act=refund_query&merchant_id={商户ID}&merchant_key={商户密钥}&date={查询日期}

请求方式:GET

请求参数说明:

字段名变量名必填类型示例值描述
操作类型actStringrefund_query此API固定值
商户IDmerchant_idInt1001与下文 pid 二选一(效果相同)
商户IDpidInt1001同其它 V1 接口,与 merchant_id 等价
商户密钥merchant_keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i与 key 二选一
商户密钥keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i同其它 V1 接口
查询日期dateString2026-03-21自然日,格式 YYYY-MM-DD

说明:仅支持 MD5 密钥商户;若商户为「仅 RSA」类型,与本组接口一致将返回错误。

返回结果:

字段名变量名类型示例值描述
返回状态码codeInt200200 为成功;参数错误等为其它值
返回信息msgStringok
退款记录列表dataArray无记录时为 []

data 数组每条字段:

字段名变量名类型示例值描述
平台订单号order_noString2026032223352957719系统订单号 trade_no
商户订单号out_order_noString商户侧单号
退款金额refund_amountString80.00单位:元
退款类型refund_typeStringfull当前固定为 full
退款状态refund_statusStringsuccess当前固定为 success
处理时间process_timeString2026-04-12 23:52:21退款处理完成时间
退款原因refund_reasonString支付不到账无则空字符串;管理端手动退款可填写

[API]代付发起

通道须在管理端开启「API代付」(payout_enable=1),且具体通道插件需实现代付能力。

URL地址:https://by.xixiang.asia/api.php?act=payout

请求方式:GET 或 POST(推荐 POST)

鉴权sign = md5(pid + timestamp + 商户密钥)(三段字符串拼接后对整体 MD5);禁止随请求传递 keytimestamp 10 位秒且 ±300 秒内有效。

请求参数说明:

字段名变量名必填类型示例值描述
操作类型actStringpayout固定值
商户IDpidInt1001
时间戳timestampString172120607210 位秒,±300 秒内有效(参与 sign)
签名signStringmd5(pid字符串 + timestamp整型转字符串 + 商户密钥);勿传 key
支付通道IDchannelInt1询问客服获取
代付金额moneyString100.00单位:元,最多 2 位小数;当前与实扣 cost_money 一致(手续费为 0)
商户单号out_trade_noString同一商户 uid 下唯一
收款账号accountString
收款姓名usernameString姓名
备注remarkString
异步通知地址notify_urlString若有异步通知能力时填写
扩展参数paramString原样存储/回传

返回结果(HTTP 200,body 为 JSON):

字段名变量名类型描述
状态码codeInt0:业务受理成功(含处理中、同步成功);-1:失败;-3:商户/密钥;-4:参数或重复单号等
说明msgString失败时为错误原因
数据dataObject失败时仍可能返回已生成的 payout_no 等,便于对账

data 字段:

变量名类型描述
payout_noString系统代付单号
out_trade_noString商户单号
statusInt0 待处理;1 成功;2 失败;3 处理中;4 关闭/撤销

响应示例(同步失败,已自动退款):

{"code":-1,"msg":"本插件尚未实现开放代付(payout)","data":{"payout_no":"2026041112000012345","out_trade_no":"M001","status":2}}

[API]代付查询

查询已创建的代付单状态;待发/处理中时可能向通道发起查询并回写数据库。

URL地址:https://by.xixiang.asia/api.php?act=payout_query

请求方式:GET 或 POST

鉴权(与「代付发起」相同)sign = md5(pid + timestamp + 商户密钥)(三段字符串拼接后 MD5);禁止传递 key;须传 timestamp(10 位秒级,±300 秒有效)。

请求参数说明:

字段名变量名必填类型描述
操作类型actString固定 payout_query
商户IDpidInt
时间戳timestampString10 位秒,±300 秒内有效(参与上文 sign 拼接)
签名signStringmd5(pid字符串 + timestamp整型转字符串 + 商户密钥)
系统代付单号payout_no条件String与 out_trade_no 至少其一;先试 payout_no,未命中再以 out_trade_no 兜底
商户单号out_trade_no条件String

返回结果:

字段名变量名类型描述
状态码codeInt0 成功;-1 代付单不存在;-3 商户/密钥;-4 参数错误
说明msgString
数据dataObject见下表

data 字段:

变量名类型描述
payout_noString系统代付单号
out_trade_noString商户单号
moneyString/Decimal代付金额(元)
statusInt0 待处理;1 成功;2 失败;3 处理中;4 关闭
err_msgString|null失败原因
addtimeString创建时间
paytimeString|null成功到账时间

响应示例:

{"code":0,"msg":"ok","data":{"payout_no":"2026041112000012345","out_trade_no":"M001","money":"100.00","status":1,"err_msg":null,"addtime":"2026-04-11 12:00:01","paytime":"2026-04-11 12:00:05"}}

[API]手动提现

与商户前台「结算记录 → 手动提现」为同一套业务:受理后立即从商户余额扣减申请金额,生成 pre_settle 待处理结算单,由管理端人工打款(USDT 类型可走后台链上转账)。与「代付发起」不同:手动提现不走支付通道插件,无需传 channel

商户须在管理端开启「手动提现」权限(manual_withdraw=1),且商户结算功能未关闭(settle=1);对应结算方式须在系统设置中开启(见下表)。仅支持 MD5 通讯密钥 商户(RSA 证书模式不可用,与代付 API 相同)。

结算方式 type 与系统配置对应关系:

type含义系统配置项account 示例
1支付宝settle_alipay支付宝账号
2USDT-TRX(TRC20)settle_wxpayT 开头的钱包地址
3USDT-BSC(BEP20)settle_qqpay0x 开头的钱包地址
4银行卡settle_bank银行卡号

URL地址:https://by.xixiang.asia/api.php?act=manual_withdraw

请求方式:GET 或 POST(推荐 POST)

鉴权(与「代付发起」相同)sign = md5(pid + timestamp + 商户密钥)(三段字符串拼接后对整体 MD5);禁止随请求传递 keytimestamp 10 位秒且 ±300 秒内有效。

请求参数说明:

字段名变量名必填类型示例值描述
操作类型actStringmanual_withdraw固定值
商户IDpidInt1001
时间戳timestampString172120607210 位秒,±300 秒内有效(参与 sign)
签名signStringmd5(pid字符串 + timestamp整型转字符串 + 商户密钥);勿传 key
结算方式typeInt2见上表:1 支付宝;2 USDT-TRX;3 USDT-BSC;4 银行卡
提现金额moneyString100.00单位:元,最多 2 位小数;从余额扣减申请金额 money(非 realmoney)
商户单号out_trade_noStringMW20260531001同一商户 uid 下唯一;仅字母数字及 ._-|
收款账号accountString支付宝账号 / 钱包地址 / 银行卡号
收款姓名usernameString姓名
备注remarkString后台可见
异步通知地址notify_urlString结算完成或取消退回时 POST JSON,见下文「异步通知」
扩展参数paramString原样存储/回传

手续费说明

  • 银行卡(type=4):按商户资料 mw_bank_fee(默认 2.00 元)从申请金额中扣除,realmoney = money - mw_bank_fee
  • USDT(type=2/3):申请时不扣 CNY 手续费;打款时按 OKX 实时汇率 + 商户上浮 increase_money 换算,并扣 mw_usdt_fee USDT 链上费用(默认 2 USDT)
  • 支付宝(type=1):无固定 CNY 手续费,realmoney = money

另受系统最低结算金额 settle_money、每日申请次数上限 settle_maxlimit 约束(与前台手动提现一致)。

返回结果(HTTP 200,body 为 JSON):

字段名变量名类型描述
状态码codeInt0:受理成功;-1:业务失败(余额不足、未开权限等);-3:商户/密钥;-4:参数或重复单号等
说明msgString失败时为错误原因
数据dataObject成功时含结算单信息;失败时为 null
余额balanceString仅成功时返回,扣款后商户余额(元,两位小数)

data 字段:

变量名类型描述
settle_noString系统结算单号(pre_settle.id
out_trade_noString商户单号
statusInt0 待结算;1 已完成;2 正在结算;3 结算失败
typeInt结算方式(见上表)
moneyString申请金额(元)
feeString银行卡固定手续费(元);非银行卡为 0.00
realmoneyString实际打款金额(元,CNY)
accountString收款账号
usernameString收款姓名
addtimeString创建时间
endtimeString|null完成时间(受理成功时为 null)
resultString|null后台处理备注
paramString|null扩展参数

异步通知(填写 notify_url 时):管理端标记结算完成、USDT 链上转账成功,或取消结算并退回余额时,向该地址 POST application/json,结构与「手动提现查询」返回一致(顶层含 codemsgdata)。完成时 code=0;取消退回时 code=-1。商户 HTTP 响应体返回 success(大小写不敏感)视为通知成功。

响应示例(受理成功):

{"code":0,"msg":"结算单已提交,请等待处理","balance":"900.00","data":{"settle_no":"12345","out_trade_no":"MW20260531001","status":0,"type":2,"money":"100.00","fee":"0.00","realmoney":"100.00","account":"Txxx","username":"张三","addtime":"2026-05-31 12:00:00","endtime":null,"result":null,"param":null}}

响应示例(参数错误):

{"code":-4,"msg":"out_trade_no已存在","data":null}

响应示例(未开权限):

{"code":-1,"msg":"未开启手动提现权限,请联系管理员","data":null}

[API]手动提现查询

查询已通过 API 或前台提交的手动提现结算单;仅可查询当前验签通过商户(pid)名下的记录。

URL地址:https://by.xixiang.asia/api.php?act=manual_withdraw_query

请求方式:GET 或 POST

鉴权(与「手动提现」相同)sign = md5(pid + timestamp + 商户密钥)(三段字符串拼接后 MD5);禁止传递 key;须传 timestamp(10 位秒级,±300 秒有效)。

请求参数说明:

字段名变量名必填类型描述
操作类型actString固定 manual_withdraw_query
商户IDpidInt
时间戳timestampString10 位秒,±300 秒内有效(参与 sign 拼接)
签名signStringmd5(pid字符串 + timestamp整型转字符串 + 商户密钥)
系统结算单号settle_no条件String与 out_trade_no 至少其一;先试 settle_no,未命中再以 out_trade_no 兜底
商户单号out_trade_no条件String

返回结果:

字段名变量名类型描述
状态码codeInt0 成功;-1 结算单不存在;-3 商户/密钥;-4 参数错误
说明msgString
数据dataObject见下表

data 字段:

变量名类型描述
settle_noString系统结算单号
out_trade_noString商户单号(API 提交时有值)
statusInt0 待结算;1 已完成;2 正在结算;3 结算失败
typeInt结算方式
moneyString申请金额(元)
feeString银行卡手续费(元)
realmoneyString实际打款金额(元)
accountString收款账号
usernameString收款姓名
usdtStringUSDT 到账数量(后台打款后可能有值)
transfer_noString链上交易哈希 / 转账单号(完成后可能有值)
addtimeString创建时间
endtimeString|null完成时间
resultString|null后台处理备注
paramString|null扩展参数

响应示例:

{"code":0,"msg":"ok","data":{"settle_no":"12345","out_trade_no":"MW20260531001","status":1,"type":2,"money":"100.00","fee":"0.00","realmoney":"100.00","account":"Txxx","username":"张三","usdt":"13.50","transfer_no":"a1b2c3...","addtime":"2026-05-31 12:00:00","endtime":"2026-05-31 14:00:00","result":"USDT-TRC20转账成功","param":null}}

SDK下载

SDK.zip
SDK版本:V1.3