API 接口支付
由你的服务器调用,平台返回付款链接、二维码内容或拉起支付的参数,再由你的页面或 APP 展示给付款人。
请求地址
https://z.weixiao.cc/api,POST 表单。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
pid | String | 必填 | 商户号,「API信息」里的商户号 |
type | String | 否 | 支付方式 |
out_trade_no | String | 必填 | 商户单号 |
notify_url | String | 必填 | 异步通知地址 |
return_url | String | 否 | 同步跳转地址 |
name | String | 必填 | 商品名称,最长 64 个字符 |
money | String | 必填 | 金额,单位元,大于 0,最多两位小数 |
device | String | 否 | 设备类型 |
method | String | 否 | 接口类型 |
clientip | String | 否 | 付款人 IP |
param | String | 否 | 扩展参数 |
sub_openid | String | 否 | 付款人 openid |
sub_appid | String | 否 | 应用 AppID |
channel_id | Int | 否 | 通道编号 |
sign | String | 必填 | 签名 |
sign_type | String | 否 | 签名类型 |
type:支付方式的调用值,见「支付方式」;不传则返回收银台地址,由付款人选择out_trade_no:你系统里的订单号,同一商户下不能重复;只能包含字母、数字和._-|,最长 150 个字符notify_url:接收支付结果通知的地址,最长 255 个字符return_url:付款完成后把付款人带回的页面,见「同步跳转」device:付款人在什么环境下付款,默认pc,见「设备类型」method:要什么形式的返回,默认web,见下方「接口类型」clientip:付款人的 IP 地址,用于统计付款人所在地区param:你的自定义内容,支付结果通知里原样返回,最长 255 个字符sub_openid:付款人在公众号或小程序下的 openid,method为jsapi时传sub_appid:获取上面 openid 所用的公众号或小程序 AppIDchannel_id:指定用哪条支付通道收款,不传由平台自动选择;指定的通道不能用于这笔订单时返回「指定通道不可用」sign:见「V1(MD5签名)」「V2(RSA签名)」sign_type:MD5或RSA,不传按 MD5;签名方式为「RSA签名」的商户必须传RSA
请求示例
curl -X POST 'https://z.weixiao.cc/api' \
--data-urlencode 'pid=1001' \
--data-urlencode 'type=alipay' \
--data-urlencode 'out_trade_no=20260927123456' \
--data-urlencode 'notify_url=https://你的域名/notify' \
--data-urlencode 'return_url=https://你的域名/return' \
--data-urlencode 'name=会员充值' \
--data-urlencode 'money=1.00' \
--data-urlencode 'sign=87b1ef8e501b2dbadb50379631290300' \
--data-urlencode 'sign_type=MD5'PHP(zpay_sign 见「V1(MD5签名)」):
<?php
$params = [
'pid' => '1001',
'type' => 'alipay',
'out_trade_no' => '20260927123456',
'notify_url' => 'https://你的域名/notify',
'return_url' => 'https://你的域名/return',
'name' => '会员充值',
'money' => '1.00',
];
$params['sign'] = zpay_sign($params, '你的MD5密钥');
$params['sign_type'] = 'MD5';
$ch = curl_init('https://z.weixiao.cc/api');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['code'] ?? 0) === 1) {
// 按返回的字段展示:有 payurl 就跳转,有 qrcode 就生成二维码
}Python(zpay_sign 与 params 的写法见「V1(MD5签名)」):
import requests
params["sign"] = zpay_sign(params, "你的MD5密钥")
params["sign_type"] = "MD5"
result = requests.post("https://z.weixiao.cc/api", data=params, timeout=15).json()接口类型
| method | 说明 |
|---|---|
web | 默认,由通道按 device 决定 |
jump | 只返回付款页地址 payurl |
jsapi | 在公众号或小程序内付款 |
app | 在你的 APP 内付款 |
applet | 小程序付款,返回 applet 参数 |
web:默认。通道按device决定返回付款页地址、二维码内容还是拉起参数jump:只返回付款页地址payurl,付款人打开后再发起支付;不知道怎么展示其他形式时用它jsapi:在公众号或小程序内付款,返回jsapi参数;需要同时传sub_openidapp:在你的 APP 内付款,返回app参数;部分通道返回applet,由 APP 拉起小程序付款
jsapi、app、applet 要所用的支付通道支持,不支持时返回 code 为 -2 和原因。
返回参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | Int | 返回码,1 为成功,其他见「错误码」 |
msg | String | 返回信息,失败原因,成功时不返回 |
trade_no | String | 站长单号 |
payurl | String | 付款页地址,让付款人打开这个地址付款 |
qrcode | String | 二维码内容,生成二维码,让付款人扫码付款 |
urlscheme | String | 拉起地址 |
html | String | 页面代码,原样输出到付款人的浏览器 |
jsapi | Object | JSAPI 参数,在公众号或小程序内调起支付 |
app | Object | APP 参数,交给 APP 里的支付 SDK 调起支付 |
applet | Object | 小程序参数,按参数拉起小程序完成支付 |
where | String | 出错位置 |
status | Int | 订单状态 |
trade_no:本站生成的订单号,19 位或 23~30 位(日期后接商户号),最长 32 位,按字符串处理,不要按定长存;code为1或-2时返回urlscheme:在手机上打开,拉起支付 App 或小程序where:code为-2时返回,一般为空status:返回「商户订单号已存在」时附带,是已有订单的状态,含义见「查询订单」
成功时 payurl、qrcode、urlscheme、html、jsapi、app、applet 只返回其中一个,按返回的那一个展示给付款人。
返回示例
返回付款页地址:
{
"code": 1,
"trade_no": "2026092712000012345",
"payurl": "https:\/\/z.weixiao.cc\/pay\/cashier\/2026092712000012345\/"
}返回二维码内容:
{
"code": 1,
"trade_no": "2026092712000012346",
"qrcode": "weixin:\/\/wxpay\/bizpayurl?pr=AbCdEf1"
}本接口返回的 JSON 里 / 写成 \/,按 JSON 解析后就是正常的地址。
失败示例
请求被拒绝:
{"code":-1,"msg":"签名校验失败"}商户单号已经下过单:
{"code":-1,"msg":"商户订单号已存在","trade_no":"2026092712000012345","status":0}订单已生成,支付通道下单失败:
{"code":-2,"trade_no":"2026092712000012345","msg":"支付通道返回的原因","where":""}注意事项
- 不传
type时返回收银台地址payurl,付款人在收银台选定支付方式后订单才生成,在此之前「查询订单」会返回「订单不存在」;收银台链接 2 小时内有效。 code为-2时订单已经生成,msg是支付通道给出的原因。同一个商户单号再下单会返回「商户订单号已存在」,请换一个商户单号重新下单。- PHP 用 curl 提交时,
CURLOPT_POSTFIELDS要传http_build_query($params)得到的字符串;直接传数组会以multipart/form-data发送,接口读不到参数,返回「参数不完整」。 - 同一商户每分钟最多下单 120 笔(页面跳转支付与 API 接口支付合计),超出返回「下单过于频繁,请稍后再试」。
- 支付结果以「支付结果通知」或「查询订单」为准。