开发文档

测试接口信息

接口地址:https://z-pay.cn/

测试商户ID(PID):20220726190052

测试商户密钥(KEY):vg9ZRZN4FOKtDM06UfqH69GDJoG4gGIJ

以上商户信息仅供测试使用,请勿直接用于正式环境,如果需要退还测试金额请于24小时内使用退款API发起

页面跳转支付
请求URL
https://z-pay.cn/submit.php
请求方法
POST 或 GET(推荐POST,不容易被劫持或屏蔽)
此接口可用于用户前台直接发起支付,使用form表单跳转或拼接成url跳转。
请求参数
参数名称类型是否必填描述范例
name商品名称String商品名称不超过100字iphonexs max
money订单金额String最多保留两位小数5.67
type支付方式String支付宝:alipay 微信支付:wxpayalipay
out_trade_no订单编号Num每个商品不可重复201911914837526544601
notify_url异步通知页面String交易信息回调页面,不支持带参数http://www.aaa.com/bbb.php
pid商户唯一标识String一串字母数字组合201901151314084206659771
cid支付渠道IDString如果不填则随机使用某一支付渠道1234
param附加内容String会通过notify_url原样返回金色 256G
return_url跳转页面String交易完成后浏览器跳转,不支持带参数http://www.aaa.com/ccc.php
sign签名(参考本页签名算法)String用于验证信息正确性,采用md5加密28f9583617d9caf66834292b6ab1cc89
sign_type签名方法String默认为MD5MD5

用法举例

https://z-pay.cn/submit.php?name=iphone xs Max 一台&money=0.03&out_trade_no=201911914837526544601&notify_url=http://www.aaa.com/notify_url.php&pid=201901151314084206659771&param=金色 256G&return_url=http://www.baidu.com&sign=28f9583617d9caf66834292b6ab1cc89&sign_type=MD5&type=alipay


成功返回
直接跳转到付款页面
说明:该页面为收银台,直接访问这个url即可进行付款
失败返回
{"code":"error","msg":"具体的错误信息"}
API接口支付
请求URL
https://z-pay.cn/mapi.php
请求方法
POST(方式为form-data)
请求参数
字段名变量名必填类型示例值描述
商户IDpidString20220715225121
支付渠道IDcidString1234如果不填则随机使用某一支付渠道
支付方式typeStringalipay支付宝:alipay 微信支付:wxpay
商户订单号out_trade_noString20160806151343349订单号需保持唯一不可重复
异步通知地址notify_urlStringhttp://www.pay.com/notify_url.php服务器异步通知地址
商品名称nameStringVIP会员如超过127个字节会自动截取
商品金额moneyString1.00单位:元,最大2位小数
用户IP地址clientipString192.168.1.100用户发起支付的IP地址
设备类型deviceStringpc根据当前用户浏览器的UA判断,
传入用户所使用的浏览器
或设备类型,默认为pc
业务扩展参数paramString没有请留空支付后原样返回
签名字符串signString202cb962ac59075b964b07152d234b70签名算法参考本页底部
签名类型sign_typeStringMD5默认为MD5

成功返回
字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString失败时返回原因
ZPAY订单号O_idString123456ZPAY订单号
订单号trade_noString20160806151343349支付订单号
支付跳转urlpayurlStringhttps://xxx.cn/pay/wxpay/202010903/如果返回该字段,则直接跳转到该url支付
二维码链接qrcodeStringhttps://xxx.cn/pay/wxpay/202010903/如果返回该字段,则根据该url生成二维码
二维码图片imgStringhttps://z-pay.cn/qrcode/123.jpg该字段为付款二维码的图片地址

失败返回
{"code":"error","msg":"具体的错误信息"}
微信小程序支付

第一步:使用“API接口支付”获取到O_id参数

第二步:跳转 ZPAY 收银台小程序 appid 为: wxa9882fcbc23a0181

    小程序具体跳转代码:
    wx.navigateToMiniProgram({
        appId: 'wxa9882fcbc23a0181',
        path: 'pages/pay/pay?type=wxapp&O_id=123456', //请将123456替换为第一步获取到的O_id
        fail(res) {
            wx.showToast({
                title: res.errMsg,
                icon: 'none',
            });
        },
        success(res) {
            wx.showToast({
                title: 'ok',
                icon: 'none',
            });
        },
    });

支付成功或者取消,会跳回你的小程序,并携带参数:

    支付成功:
    extraData: {
        status: 'success'
    }
    支付取消:
    extraData: {
        status: 'cancel'
    }
查询单个订单
请求URL
https://z-pay.cn/api.php?act=order&pid={商户ID}&key={商户密钥}&out_trade_no={商户订单号}
请求方法
GET
请求参数
参数名称类型必填描述范例
act操作类型String此API固定值order
pid商户IDString20220715225121
key商户密钥String89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i
trade_no系统订单号String选择20160806151343312
out_trade_no商户订单号String选择20160806151343349

返回结果
字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString查询订单号成功!
易支付订单号trade_noString2016080622555342651易支付订单号
商户订单号out_trade_noString20160806151343349商户系统内部的订单号
支付方式typeStringalipay支付宝:alipay 微信支付:wxpay
商户IDpidInt20220715225121发起支付的商户ID
创建订单时间addtimeString2016-08-06 22:55:52
完成交易时间endtimeString2016-08-06 22:55:52
商品名称nameStringVIP会员
商品金额moneyString1.00
支付状态statusInt01为支付成功,0为未支付
业务扩展参数paramString默认留空
支付者账号buyerString默认留空
提交订单退款
请求URL
https://z-pay.cn/api.php?act=refund
请求方法
POST
请求参数
字段名变量名必填类型示例值描述
商户IDpidString20220715225121
商户密钥keyString89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i
易支付订单号trade_no特殊可选String20160806151343349021易支付订单号
商户订单号out_trade_no特殊可选String20160806151343349订单支付时传入的商户订单号,商家自定义且保证商家系统中唯一
退款金额moneyString1.50大多数通道需要与原订单金额一致

返回结果
字段名变量名类型示例值描述
返回状态码codeInt11为成功,其它值为失败
返回信息msgString退款成功
支付结果通知
请求URL
服务器异步通知(notify_url)、页面跳转通知(return_url)
请求方法
GET
请求参数
参数名称类型描述范例
pid商户IDString201901151314084206659771
name商品名称String商品名称不超过100字iphone
money订单金额String最多保留两位小数5.67
out_trade_no商户订单号String商户系统内部的订单号201901191324552185692680
trade_no易支付订单号String易支付订单号2019011922001418111011411195
param业务扩展参数String会通过notify_url原样返回金色 256G
trade_status支付状态String只有TRADE_SUCCESS是成功TRADE_SUCCESS
type支付方式String包括支付宝、微信alipay
sign签名(参考本页签名算法)String用于验证接受信息的正确性ef6e3c5c6ff45018e8c82fd66fb056dc
sign_type签名类型String默认为MD5MD5

如何验证
请根据签名算法,验证自己生成的签名与参数中传入的签名是否一致,如果一致则说明是由官方向您发送的真实信息
注意事项

1.收到回调信息后请返回“success”,否则程序将判定您的回调地址未正确通知到。

2.同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。

3.推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

4.特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。

5.对后台通知交互时,如果平台收到商户的应答不是纯字符串success或超过5秒后返回时,平台认为通知失败,平台会通过一定的策略(通知频率为0/15/15/30/180/1800/1800/1800/1800/3600,单位:秒)间接性重新发起通知,尽可能提高通知的成功率,但不保证通知最终能成功。

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查看。