注:本平台是支付机构代理商,不涉及资金清算,不触碰用户资金。资金由持牌支付机构与您直接清算,望知晓! 支付协会备-W2312201342442401
协议规则
请求数据格式:application/x-www-form-urlencoded
返回数据格式:JSON
签名算法:MD5
字符编码:UTF-8
测试账号
PID:1005
KEY:80TWQztHqTVvV440KTKVqVPQh11AkfpF
说明:1、测试金额应为小额,建议单笔测试交易0.01元以内;
2、测试交易完成后,如需退款应当日(联系客服人员退款)
3、测试账号仅供测试使用,请勿用在自己正式运营的网站上;
4、本平台兼容易支付接口,无需额外开发,可直接使用;
API接口统一下单支付(推荐)
此接口可用于服务器后端发起支付请求,会返回支付跳转url。(此url是自适应页面,包含手机端H5唤起支付、PC端扫码支付,微信内支付等等,列如:付款方如果在手机浏览器打开这个URL是唤起支付,如果在pc电脑端打开这个URL是扫码支付)
URL地址:https://papi.payqqpay.cn/mapi.php
请求方式:POST
注:实际要以ASCII码从小到大排序,具体详细请往下拉查看“MD5签名算法”
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商户ID | pid | 是 | Int | 1001 | |
支付方式 | type | 是 | String | alipay | alipay:支付宝,wxpay:微信支付 |
商户订单号 | out_trade_no | 是 | String | 20160806151343349 | |
异步通知地址 | notify_url | 是 | String | http://www.pay.com/notify_url.php | 服务器异步通知地址 |
跳转通知地址 | return_url | 是 | String | http://www.pay.com/return_url.php | 页面跳转通知地址 |
商品名称 | name | 是 | String | VIP会员 | 如超过127个字节会自动截取 |
商品金额 | money | 是 | String | 1.00 | 单位:元,最大2位小数 |
用户IP地址 | clientip | 是 | String | 192.168.1.100 | 不强求真实,可随意传入一个IP |
设备类型 | device | 是 | String | jump | 必须传入jump,才能返回支付链接,否则会报错 |
业务扩展参数 | param | 否 | String | 没有请留空 | 支付后原样返回 |
签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名算法点此查看 |
签名类型 | sign_type | 是 | String | MD5 | 默认为MD5 |
返回结果(json):
字段名 | 变量名 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
返回状态码 | code | Int | 1 | 1为成功,其它值为失败 |
返回信息 | msg | String | 失败时返回原因 | |
订单号 | trade_no | String | 20160806151343349 | 支付订单号 |
支付跳转url | payurl | String | https://papi.payqqpay.cn/pay/submit/202312311388/ | 直接获取json返回值,引导客户跳转到该url支付链接支付 |
注:如果想直接获取二维码,请自行开发直接根据返回的url链接自行转换成二维码(若不会请自行百度,比如百度搜索“php自动将链接转换成二维码写法代码”)。
2、如果对接过程中出现异步参数名被转义成“¬ify url”这样会导致接口报错,请自行百度解决
3、APP对接的话不要直接在APP内跳转支付,要先跳转到手机自带的浏览器,通过手机浏览器唤起支付(关于APP如何跳转到手机浏览器请自行百度“比如百度搜索:APP如何跳转手机浏览器打开指定网址”)
页面跳转支付
此接口可用于用户前台直接发起支付,使用form表单跳转或拼接成url跳转。
URL地址:https://papi.payqqpay.cn/submit.php
请求方式:POST
注:实际要以ASCII码从小到大排序,具体详细请往下拉查看“MD5签名算法”
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商户ID | pid | 是 | Int | 1001 | |
支付方式 | type | 否 | String | alipay | alipay:支付宝,wxpay:微信支付 |
商户订单号 | out_trade_no | 是 | String | 20160806151343349 | |
异步通知地址 | notify_url | 是 | String | http://www.pay.com/notify_url.php | 服务器异步通知地址 |
跳转通知地址 | return_url | 是 | String | http://www.pay.com/return_url.php | 页面跳转通知地址 |
商品名称 | name | 是 | String | VIP会员 | 如超过127个字节会自动截取 |
商品金额 | money | 是 | String | 1.00 | 单位:元,最大2位小数 |
业务扩展参数 | param | 否 | String | 没有请留空 | 支付后原样返回 |
签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名算法点此查看 |
签名类型 | sign_type | 是 | String | MD5 | 默认为MD5 |
注:1、如果对接过程中出现异步参数名被转义成“¬ify url”这样会导致接口报错,请自行百度解决
注:2、APP对接的话不要直接在APP内跳转支付,要先跳转到手机自带的浏览器,通过手机浏览器唤起支付(关于APP如何跳转到手机浏览器请自行百度“比如百度搜索:APP如何跳转手机浏览器打开指定网址”)
支付结果通知
通知类型:服务器异步通知(notify_url)、页面跳转通知(return_url)
请求方式:GET
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商户ID | pid | 是 | Int | 1001 | |
淼元系统订单号 | trade_no | 是 | String | 20160806151343349021 | 淼元系统订单号 |
商户订单号 | out_trade_no | 是 | String | 20160806151343349 | 商户系统内部的订单号 |
支付方式 | type | 是 | String | alipay | 支付方式列表 |
商品名称 | name | 是 | String | VIP会员 | |
商品金额 | money | 是 | String | 1.00 | |
支付状态 | trade_status | 是 | String | TRADE_SUCCESS | 只有TRADE_SUCCESS是成功 |
业务扩展参数 | param | 否 | String | ||
签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名算法点此查看 |
签名类型 | sign_type | 是 | String | MD5 | 默认为MD5 |
1.收到异步通知后,需返回success以表示服务器接收到了订单通知
2.注意支付状态的参数返回来的如果是大写就要是大写的,不要转成小写
3.回调回来的参数如果没有name就不用参加签名.如有就参加
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 | 微信支付 |
qqpay | QQ钱包 |
设备类型列表
调用值 | 描述 |
---|---|
jump | 仅返回支付跳转url |
[API]查询商户信息
URL地址:https://papi.payqqpay.cn/api.php?act=query&pid={商户ID}&key={商户密钥}
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
操作类型 | act | 是 | String | query | 此API固定值 |
商户ID | pid | 是 | Int | 1001 | |
商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i |
返回结果:
字段名 | 变量名 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
返回状态码 | code | Int | 1 | 1为成功,其它值为失败 |
商户ID | pid | Int | 1001 | 商户ID |
商户密钥 | key | String(32) | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
商户状态 | active | Int | 1 | 1为正常,0为封禁 |
商户余额 | money | String | 0.00 | 商户所拥有的余额 |
结算方式 | type | Int | 1 | 1:支付宝,2:微信,3:QQ,4:银行卡 |
结算账号 | account | String | admin@pay.com | 结算的支付宝账号 |
结算姓名 | username | String | 张三 | 结算的支付宝姓名 |
订单总数 | orders | Int | 30 | 订单总数统计 |
今日订单 | order_today | Int | 15 | 今日订单数量 |
昨日订单 | order_lastday | Int | 15 | 昨日订单数量 |
[API]查询分润结算记录
URL地址:https://papi.payqqpay.cn/api.php?act=settle&pid={商户ID}&key={商户密钥}
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
操作类型 | act | 是 | String | settle | 此API固定值 |
商户ID | pid | 是 | Int | 1001 | |
商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i |
返回结果:
字段名 | 变量名 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
返回状态码 | code | Int | 1 | 1为成功,其它值为失败 |
返回信息 | msg | String | 查询结算记录成功! | |
结算记录 | data | Array | 结算记录列表 |
[API]查询单个订单
URL地址:https://papi.payqqpay.cn/api.php?act=order&pid={商户ID}&key={商户密钥}&out_trade_no={商户订单号}
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
操作类型 | act | 是 | String | order | 此API固定值 |
商户ID | pid | 是 | Int | 1001 | |
商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | |
系统订单号 | trade_no | 选择 | String | 20160806151343312 | |
商户订单号 | out_trade_no | 选择 | String | 20160806151343349 |
提示:系统订单号 和 商户订单号 二选一传入即可,如果都传入以系统订单号为准!
返回结果:
字段名 | 变量名 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
返回状态码 | code | Int | 1 | 1为成功,其它值为失败 |
返回信息 | msg | String | 查询订单号成功! | |
易支付订单号 | trade_no | String | 2016080622555342651 | 淼元PAY订单号 |
商户订单号 | out_trade_no | String | 20160806151343349 | 商户系统内部的订单号 |
第三方订单号 | api_trade_no | String | 20160806151343349 | 支付宝微信等接口方订单号 |
支付方式 | type | String | alipay | 支付方式列表 |
商户ID | pid | Int | 1001 | 发起支付的商户ID |
创建订单时间 | addtime | String | 2016-08-06 22:55:52 | |
完成交易时间 | endtime | String | 2016-08-06 22:55:52 | |
商品名称 | name | String | VIP会员 | |
商品金额 | money | String | 1.00 | |
支付状态 | status | Int | 0 | 1为支付成功,0为未支付 |
业务扩展参数 | param | String | 默认留空 | |
支付者账号 | buyer | String | 默认留空 |
[API]批量查询订单
URL地址:https://papi.payqqpay.cn/api.php?act=orders&pid={商户ID}&key={商户密钥}
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
操作类型 | act | 是 | String | orders | 此API固定值 |
商户ID | pid | 是 | Int | 1001 | |
商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | |
查询订单数量 | limit | 否 | Int | 20 | 返回的订单数量,最大50 |
页码 | page | 否 | Int | 1 | 当前查询的页码 |
返回结果:
字段名 | 变量名 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
返回状态码 | code | Int | 1 | 1为成功,其它值为失败 |
返回信息 | msg | String | 查询结算记录成功! | |
订单列表 | data | Array | 订单列表 |
[API]提交订单退款
需要先在商户后台开启订单退款API接口开关,才能调用该接口发起订单退款
URL地址:https://papi.payqqpay.cn/api.php?act=refund
请求方式:POST
请求参数说明:
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商户ID | pid | 是 | Int | 1001 | |
商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | |
淼元系统订单号 | trade_no | 特殊可选 | String | 20160806151343349021 | 淼元系统订单号 |
商户订单号 | out_trade_no | 特殊可选 | String | 20160806151343349 | 订单支付时传入的商户订单号,商家自定义且保证商家系统中唯一 |
退款金额 | money | 是 | String | 1.50 | 少数通道需要与原订单金额一致 |
注:trade_no、out_trade_no 不能同时为空,如果都传了以trade_no为准
返回结果:
字段名 | 变量名 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
返回状态码 | code | Int | 1 | 1为成功,其它值为失败 |
返回信息 | msg | String | 退款成功 |
注意:退款是从当天未结算的款项里面退的,退款是扣不了已经提现到你银行卡里面的款项,如果当天收款小于本次退款的金额,请登录用户中心,使用聚合收款码自己充值进去,再来提交本次退款。列如:当天只收了100块钱,但是要退200块钱,就用聚合收款码自己充值进去101元,最好多充进去几块钱防止金额误差,这个聚合收款码就是你自己的收款码,用聚合码多充值的钱也是次日到你的银行卡里
SDK下载
SDK直连下载
SDK百度网盘下载(提取码: r91l)
SDK/DEMO语言:JAVA/PHP/ASP/python/c#
注意:请把DEMO里面的device设备类型参数值必须传入“jump”,如果传的不是这个值会报错!!!