版本说明

协议规则

提交数据格式application/x-www-form-urlencoded
返回数据格式JSON
字符编码UTF-8

V1 与 V2 版本对比

对比项V1版本V2版本
签名算法MD5SHA256WithRSA
支付接口submit.php / mapi.php/api/pay/submit / /api/pay/create
查询接口api.php?act=xxx/api/pay/query
时间戳校验不需要需要 timestamp 参数
安全性一般更高(非对称加密)
建议:新接入的商户推荐使用V2版本接口,安全性更高。V1版本接口仍可正常使用。

支付方式列表

以下是系统支持的支付方式及其对应的type值(实际可用支付方式以商户后台为准):

调用值描述
alipay支付宝
wxpay微信支付
qqpayQQ钱包
bank银行卡支付
不传type参数会跳转到收银台,让用户自行选择支付方式。

设备类型列表

用于API接口支付时,根据用户设备类型传入:

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

V2版本接口 RSA签名

RSA签名规则 V2

获取RSA密钥对

商户后台 → 个人资料 → API信息 页面,点击【生成商户RSA密钥对】,生成后注意保存【商户私钥】。对接接口时只需要用到【平台公钥】与【商户私钥】。

注意:私钥需妥善保管,避免遗失,不要泄露。

签名步骤

  1. 获取请求报文所有非空请求参数,不包括数组、字节类型参数,剔除signsign_type字段,并按照第一个字符的键值ASCII码递增排序(字母升序排序)。
  2. 将排序后的参数和对应值,组合成"参数=参数值"的格式,并用 & 字符连接起来,此时生成的字符串为待签名字符串。
  3. 使用商户私钥,对待签名字符串计算RSA签名(SHA256WithRSA),得到签名sign。

验签步骤

  1. 根据签名步骤里面的1~2,获取到待签名字符串。
  2. 使用平台公钥,根据签名字符串sign,对待签名字符串进行RSA验签(SHA256WithRSA)

页面跳转支付 V2

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

POST /api/pay/submit

请求参数

字段名变量名必填类型描述
商户IDpid必填Int商户ID
支付方式type选填String不传跳转收银台
商户订单号out_trade_no必填String商户系统内的订单号
异步通知地址notify_url必填String服务器异步通知地址
跳转通知地址return_url必填String页面跳转通知地址
商品名称name必填String如超过127字节自动截取
商品金额money必填String单位:元,最大2位小数
业务扩展参数param选填String支付后原样返回
当前时间戳timestamp必填String10位整数,单位秒
签名字符串sign必填StringRSA签名
签名类型sign_type必填String固定值 RSA

统一下单接口 V2

此接口用于后端发起订单创建,获取支付链接或支付二维码。

POST /api/pay/create

请求参数

参数与页面跳转支付一致,额外支持:

字段名变量名必填描述
设备类型device选填pc/mobile/wechat等
客户端IPclientip选填用户端IP地址

返回参数

字段名变量名描述
返回状态码code1为成功,其他为失败
返回信息msg返回提示信息
平台订单号trade_no平台生成的订单号
支付链接payurl跳转到该url支付
二维码链接qrcode根据该url生成二维码
小程序跳转urlscheme可发起微信小程序支付
注:payurl、qrcode、urlscheme 三个参数只会返回其中一个

支付结果通知 V2

支付成功后,平台会向商户的notify_url地址发送异步通知。

重要:商户需要验证签名,确认通知来源的合法性,处理完成后返回字符串 success

通知参数

字段名变量名描述
商户IDpid商户ID
平台订单号trade_no平台生成的订单号
商户订单号out_trade_no商户提交的订单号
支付方式type支付方式
商品名称name商品名称
订单金额money订单金额
支付状态trade_statusTRADE_SUCCESS 表示成功
签名signRSA签名

订单查询 V2

POST /api/pay/query

订单退款 V2

POST /api/pay/refund

V1版本接口 MD5签名

MD5签名规则 V1

  1. 将发送或接收到的所有参数按照参数名ASCII码从小到大排序(a-z),signsign_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查看。

页面跳转支付 V1

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

POST / GET submit.php
推荐使用POST方式,不容易被劫持或屏蔽。

请求参数

字段名变量名必填类型示例值描述
商户IDpidInt1001
支付方式typeStringalipay不传跳转收银台
商户订单号out_trade_noString20160806151343349
异步通知地址notify_urlStringhttp://xxx/notify.php服务器异步通知地址
跳转通知地址return_urlStringhttp://xxx/return.php页面跳转通知地址
商品名称nameStringVIP会员如超过127字节自动截取
商品金额moneyString1.00单位:元,最大2位小数
业务扩展参数paramString支付后原样返回
签名字符串signString202cb962ac59075b...MD5签名
签名类型sign_typeStringMD5固定值 MD5

API接口支付 V1

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

POST mapi.php

请求参数

字段名变量名必填类型示例值描述
商户IDpidInt1001
支付方式typeStringalipay
商户订单号out_trade_noString20160806151343349
异步通知地址notify_urlStringhttp://xxx/notify.php
跳转通知地址return_urlStringhttp://xxx/return.php
商品名称nameStringVIP会员
商品金额moneyString1.00单位:元,最大2位小数
用户IP地址clientipString192.168.1.100用户发起支付的IP地址
设备类型deviceStringpc默认为pc
业务扩展参数paramString支付后原样返回
签名字符串signString202cb962ac59075b...MD5签名
签名类型sign_typeStringMD5固定值 MD5

返回结果(JSON)

字段名变量名类型描述
返回状态码codeInt1为成功,其它值为失败
返回信息msgString失败时返回原因
订单号trade_noString支付订单号
支付跳转urlpayurlString直接跳转到该url支付
二维码链接qrcodeString根据该url生成二维码
小程序跳转urlurlschemeString可发起微信小程序支付
注:payurl、qrcode、urlscheme 三个参数只会返回其中一个

支付结果通知 V1

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

请求方式:GET

通知参数

字段名变量名必填类型描述
商户IDpidInt
易支付订单号trade_noString平台订单号
商户订单号out_trade_noString商户系统内部的订单号
支付方式typeString
商品名称nameString
商品金额moneyString
支付状态trade_statusString只有TRADE_SUCCESS是成功
业务扩展参数paramString
签名字符串signStringMD5签名
签名类型sign_typeStringMD5
重要:收到异步通知后,需返回 success 以表示服务器接收到了订单通知

查询商户信息 V1

GET api.php?act=query&pid={商户ID}&key={商户密钥}

请求参数

字段名变量名必填描述
操作类型act固定值 query
商户IDpid
商户密钥key

返回结果

字段名变量名描述
返回状态码code1为成功
商户IDpid
商户密钥key
商户状态active1为正常,0为封禁
商户余额money
结算方式type1:支付宝,2:微信,3:QQ,4:银行卡
结算账号account
结算姓名username
订单总数orders
今日订单order_today
昨日订单order_lastday

查询结算记录 V1

GET api.php?act=settle&pid={商户ID}&key={商户密钥}

查询单个订单 V1

GET api.php?act=order&pid={商户ID}&key={商户密钥}&out_trade_no={商户订单号}

请求参数

字段名变量名必填描述
操作类型act固定值 order
商户IDpid
商户密钥key
系统订单号trade_no选择二选一
商户订单号out_trade_no选择二选一
系统订单号 和 商户订单号 二选一传入即可,如果都传入以系统订单号为准!

返回结果

字段名变量名描述
返回状态码code1为成功
返回信息msg
易支付订单号trade_no平台订单号
商户订单号out_trade_no
第三方订单号api_trade_no支付宝微信等接口方订单号
支付方式type
商户IDpid
创建订单时间addtime
完成交易时间endtime
商品名称name
商品金额money
支付状态status1为支付成功,0为未支付
业务扩展参数param
支付者账号buyer

批量查询订单 V1

GET api.php?act=orders&pid={商户ID}&key={商户密钥}

请求参数

字段名变量名必填描述
操作类型act固定值 orders
商户IDpid
商户密钥key
查询订单数量limit最大50
页码page当前页码

提交订单退款 V1

注意:需要先在商户后台开启订单退款API接口开关,才能调用该接口发起订单退款
POST api.php?act=refund

请求参数

字段名变量名必填描述
商户IDpid
商户密钥key
易支付订单号trade_no特殊可选二选一
商户订单号out_trade_no特殊可选二选一
退款金额money少数通道需要与原订单金额一致
注:trade_no、out_trade_no 不能同时为空,如果都传了以trade_no为准

返回结果

字段名变量名描述
返回状态码code0为成功,其它值为失败
返回信息msg

SDK下载

SDK.zip

SDK版本:V1.3

提示:SDK包含完整的签名、验签、请求示例代码,建议下载后参考使用。