支付

API 接口支付

由你的服务器调用,平台返回付款链接、二维码内容或拉起支付的参数,再由你的页面或 APP 展示给付款人。

请求地址

https://z.weixiao.cc/api,POST 表单。

请求参数

参数类型必填说明
pidString必填商户号,「API信息」里的商户号
typeString否支付方式
out_trade_noString必填商户单号
notify_urlString必填异步通知地址
return_urlString否同步跳转地址
nameString必填商品名称,最长 64 个字符
moneyString必填金额,单位元,大于 0,最多两位小数
deviceString否设备类型
methodString否接口类型
clientipString否付款人 IP
paramString否扩展参数
sub_openidString否付款人 openid
sub_appidString否应用 AppID
channel_idInt否通道编号
signString必填签名
sign_typeString否签名类型
  • 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 所用的公众号或小程序 AppID
  • channel_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_openid
  • app:在你的 APP 内付款,返回 app 参数;部分通道返回 applet,由 APP 拉起小程序付款

jsapi、app、applet 要所用的支付通道支持,不支持时返回 code 为 -2 和原因。

返回参数

参数类型说明
codeInt返回码,1 为成功,其他见「错误码」
msgString返回信息,失败原因,成功时不返回
trade_noString站长单号
payurlString付款页地址,让付款人打开这个地址付款
qrcodeString二维码内容,生成二维码,让付款人扫码付款
urlschemeString拉起地址
htmlString页面代码,原样输出到付款人的浏览器
jsapiObjectJSAPI 参数,在公众号或小程序内调起支付
appObjectAPP 参数,交给 APP 里的支付 SDK 调起支付
appletObject小程序参数,按参数拉起小程序完成支付
whereString出错位置
statusInt订单状态
  • 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 接口支付合计),超出返回「下单过于频繁,请稍后再试」。
  • 支付结果以「支付结果通知」或「查询订单」为准。