API开发文档简介
本文阅读对象:使用 PGO支付平台 商户自服务系统的技术架构师、研发工程师、系统运维工程师。通过本文档,商户可了解 PGO支付平台 接入的技术、接入的产品业务、接入的流程、接入规范等信息,以便于商户顺利完成接入工作。
接入网关
请登录商户中心,API管理->开发文档中: 查看网关地址和API对接参数。
HTTP头信息:
'Content-Type: application/x-www-form-urlencoded; charset=utf-8'
统一下单接口
提交方式:POST
地址: 接入网关/Pay_Index.html
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| pay_memberid |
string |
商户号 |
是 |
是 |
平台分配商户号 |
| pay_orderid |
string |
订单号 |
是 |
是 |
上送订单号唯一, 字符长度不超过26位 |
| pay_userid |
string |
支付用户ID |
是 |
是 |
请传您发起支付的应用内用户的userid,最好是正式ID,也可是任意唯一标识该用户的ID,全为相同ID会触发限制(字符最大长度20,如随意上传导致平台资金账号被封。经核查后,会冻结相应资金) |
| pay_applydate |
string |
提交时间 |
是 |
是 |
时间格式:2016-12-26 18:18:18 |
| pay_bankcode |
string |
通道编码 |
是 |
是 |
在商户中心查询 |
| pay_notifyurl |
string |
服务端通知 |
是 |
是 |
服务端返回地址.(POST返回数据) |
| pay_callbackurl |
string |
页面跳转通知 |
是 |
是 |
页面跳转返回地址(POST返回数据) |
| pay_amount |
string |
订单金额 |
是 |
是 |
单位:元。例如:1元为1.00 |
| pay_md5sign |
string |
MD5签名 |
是 |
否 |
查看签名算法 |
| pay_productname |
string |
商品名称 |
是 |
否 |
|
| pay_paymentbankcard |
string |
付款账户 |
否 |
否 |
|
| pay_attach |
string |
附加字段 |
否 |
否 |
此字段在返回时按原样返回 (中文需要url编码) |
| pay_productnum |
string |
商户品数量 |
否 |
否 |
|
| pay_productdesc |
string |
商品描述 |
否 |
否 |
|
| pay_producturl |
string |
商户链接地址 |
否 |
否 |
|
【Response返回值】 (返回数据格式为json),Post请求后直接返回Response数据。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| status |
string |
请求状态 |
是 |
否 |
success为成功,其他为失败 |
| msg |
string |
状态描述 |
是 |
否 |
status=success时为"成功",其他为响应的错误说明 |
| data |
string |
返回的数据 |
否 |
否 |
详见下表 |
【data】数据说明
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| payurl |
string |
非SDK支付,发起地址 |
否 |
是(存在则参与) |
【status=success,且为非SDK支付时返回】,请浏览器打开该链接发起支付。尽量不要使用跳转方式实现,否则微信容易出现验证不通过 |
| orderInfo |
string |
SDK支付,支付订单信息 |
否 |
是(存在则参与) |
【status=success,且为SDK支付时返回】,请客户端app调用对应官方sdk支付的时候,使用该参数返回的数据。具体详细见:《SDK支付接入说明文档》
1.支付宝,直接使用。
2.微信,通过json解析后赋值对应参数使用。 |
| sign |
string |
MD5签名 |
是 |
否 |
查看签名算法 |
支付类型说明:
SDK支付:通过API下单,然后调用支付SDK进行支付的方式。
非SDK支付:通过API下单,然后调用浏览器进行支付的方式。
示例(Json):
{"status":"success", "msg":"成功", "data":{"payurl":"https://payment.pgopay.com/"}}
然后通过浏览器访问payurl地址,完成支付。
签名算法
签名生成的通用步骤如下:
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(a-z字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
第二步,在stringA最后拼接上应用(ApiKey)得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
以支付请求举例:
拼接字符串:
stringSignTemp="pay_amount=pay_amount&pay_applydate=pay_applydate&pay_bankcode=pay_bankcode&pay_callbackurl=
pay_callbackurl&pay_memberid=pay_memberid&pay_notifyurl=pay_notifyurl&pay_orderid=pay_orderid&pay_userid=pay_userid
&key=ApiKey"。
生成MD5值(32位)并转换为大写:
sign=MD5(stringSignTemp).toUpperCase()
同步通知(用于前端页面跳转)
返回方式:POST, 数据格式form表单
此通知仅用于前端页面的跳转展示使用,不作为支付的正式通知。支付返回的正式结果,请以(异步通知)为准。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| memberid |
string |
商户编号 |
是 |
是 |
平台分配商户号 |
| orderid |
string |
订单号 |
是 |
是 |
上送订单号唯一, 字符最大长度26 |
| amount |
string |
订单金额 |
是 |
是 |
单位:元 |
| returncode |
string |
交易状态 |
是 |
是 |
00表示成功,其它表示失败 |
| sign |
string |
MD5签名 |
是 |
否 |
|
异步通知(返回正式支付结果)
返回方式:POST, 数据格式form表单
接收到服务器点对点通讯时,在页面输出“OK”( 没有双引号,OK 两个字母大写 ) ,否则会重复5次发送点对点通知.
请务必进行结果的sign验证,确保支付的正确性。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| memberid |
string |
商户编号 |
是 |
是 |
平台分配商户号 |
| orderid |
string |
订单号 |
是 |
是 |
上送订单号唯一, 字符最大长度26 |
| amount |
string |
订单金额 |
是 |
是 |
单位:元 |
| transaction_id |
string |
交易流水号 |
是 |
是 |
|
| datetime |
string |
交易时间 |
是 |
是 |
|
| returncode |
string |
交易状态 |
是 |
是 |
00表示成功,其它表示失败 |
| attach |
string |
扩展返回 |
否 |
否 |
商户附加数据返回 |
| sign |
string |
MD5签名 |
是 |
否 |
|
returncode参数说明:
00:表示成功
01:通道返回验证签名不成功
02:订单金额异常
03:订单状态修改失败
04:结算资金保存失败
05:商户数据修改失败
06:资金变动记录添加失败
07:投诉保证金添加失败
订单查询接口
提交方式:POST
地址: 接入网关/Pay_Trade_query.html
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| pay_memberid |
string |
商户编号 |
是 |
是 |
|
| pay_orderid |
string |
商户订单号 |
是 |
是 |
|
| pay_md5sign |
string |
MD5签名 |
是 |
否 |
查看签名算法 |
【Response返回值】 (返回数据格式为json),Post请求后直接返回Response数据。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| memberid |
string |
商户编号 |
是 |
是 |
|
| orderid |
string |
商户订单号 |
是 |
是 |
|
| amount |
string |
订单金额 |
是 |
是 |
单位:元 |
| time_end |
string |
支付成功时间 |
是 |
是 |
|
| transaction_id |
string |
平台订单号 |
是 |
是 |
|
| returncode |
string |
请求状态 |
是 |
是 |
00表示成功,其它表示失败 |
| trade_state |
string |
支付状态 |
是 |
是 |
SUCCESS:支付成功,NOTPAY:未支付 |
| sign |
string |
MD5签名 |
是 |
否 |
|
代付提交接口
提交方式:POST
提交地址:网关地址+/Payment_Dfpay_add.html
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| memberid |
string |
商户编号 |
是 |
是 |
平台分配商户号 |
| out_trade_no |
string |
商户订单号 |
是 |
是 |
保证唯一值(最大长度30位) |
| amount |
string |
订单金额 |
是 |
是 |
单位:元。例如:1元为1.00 |
| bankcode |
string |
通道编码 |
是 |
是 |
在商户中心查询 |
| bankname |
string |
开户行名称 |
是 |
是 |
如为支付宝,请填写“支付宝” |
| subbranch |
string |
支行名称 |
是 |
是 |
如为支付宝,请填写“支付宝” |
| accountname |
string |
开户名 |
是 |
是 |
如为支付宝,即为支付宝实名名称 |
| cardnumber |
string |
银行卡号 |
是 |
是 |
如为支付宝,则为支付宝账号(手机号或邮箱) |
| province |
string |
省份 |
是 |
是 |
如为支付宝,可随意填写 |
| city |
string |
城市 |
是 |
是 |
如为支付宝,可随意填写 |
| notifyurl |
string |
通知回调地址 |
是 |
是 |
通知代付状态的地址 |
| extends |
string |
附加字段 |
否 |
是 |
不填则不参与签名 |
| sign |
string |
MD5签名 |
是 |
否 |
查看签名算法 |
注:extends字段具体需要上送哪些字段以及字段的含义,对接时请咨询平台方,如果不需要扩展字段则不传。不为空时,格式:先转化为JSON,接着进行Base64加密
例如:扩展字段为phone和idno,extends[phone]=13800138000,extends[idno]=111111111111111111。首先将extends转化为JSON格式得到{"phone":"13800138000","idno":"111111111111111111"},然后将此JSON字符串进行base64加密得到eyJwaG9uZSI6IjEzODAwMTM4MDAwIiwiaWRubyI6IjExMTExMTExMTExMTExMTExMSJ9,最终得到extends=eyJwaG9uZSI6IjEzODAwMTM4MDAwIiwiaWRubyI6IjExMTExMTExMTExMTExMTExMSJ9。
【Response返回值】 (返回数据格式为json),Post请求后直接返回Response数据。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| status |
string |
状态 |
是 |
是 |
成功:success 失败:error(请求失败) |
| msg |
string |
状态描述 |
是 |
是 |
问题描述 |
| memberid |
string |
商户编号 |
是 |
是 |
status=success时返回 |
| out_trade_no |
string |
商户订单号 |
是 |
是 |
status=success时返回 |
| transaction_id |
string |
平台流水号 |
是 |
是 |
status=success时返回 |
| sign |
string |
MD5签名 |
是 |
否 |
status=success时返回 |
代付异步通知(返回代付结果)
返回方式:POST, 数据格式form表单
接收到服务器点对点通讯时,在页面输出“OK“,
请务必进行结果的sign验证,确保正确性。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| memberid |
string |
商户编号 |
是 |
是 |
平台分配商户号 |
| out_trade_no |
string |
商户订单号 |
是 |
是 |
商户上传的代付订单号 |
| transaction_id |
string |
平台订单号 |
是 |
是 |
平台产生的交易流水号 |
| amount |
string |
金额 |
是 |
是 |
订单金额 |
| refCode |
string |
业务状态 |
是 |
是 |
详见refCode说明 |
| refMsg |
string |
业务描述 |
是 |
是 |
平台返回的业务描述 |
| sign |
string |
MD5签名 |
是 |
否 |
查看签名算法 |
refCode返回值
| 返回值 |
含义 |
| 1 |
成功 |
| 2 |
失败 |
| 3 |
处理中 |
| 4 |
待处理 |
| 5 |
审核驳回 |
| 6 |
待审核 |
| 7 |
交易不存在 |
| 8 |
未知状态 |
代付查询接口
提交方式:POST
提交地址:网关地址+/Payment_Dfpay_query.html
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| out_trade_no |
string |
商户订单号 |
是 |
是 |
|
| memberid |
string |
商户号 |
是 |
是 |
|
| sign |
string |
签名 |
是 |
否 |
查看签名算法 |
【Response返回值】 (返回数据格式为json),Post请求后直接返回Response数据。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| status |
string |
状态 |
是 |
是 |
success:请求成功(不代表业务成功),error:请求失败 |
| msg |
string |
状态描述 |
是 |
是 |
问题描述 |
| memberid |
string |
商户号 |
是 |
是 |
status=success时返回 |
| out_trade_no |
string |
商户订单号 |
是 |
是 |
status=success时返回 |
| amount |
string |
金额 |
是 |
是 |
status=success时返回 |
| transaction_id |
string |
平台流水号 |
是 |
是 |
status=success时返回 |
| refCode |
string |
业务状态 |
是 |
是 |
status=success时返回 |
| refMsg |
string |
业务描述 |
是 |
是 |
status=success时返回 |
| success_time |
string |
成功时间 |
是 |
是 |
status=success,refCode=1时返回。没有返回该字段则不参与签名 |
| sign |
string |
MD5签名 |
是 |
否 |
status=success时返回 |
refCode返回值
| 返回值 |
含义 |
| 1 |
成功 |
| 2 |
失败 |
| 3 |
处理中 |
| 4 |
待处理 |
| 5 |
审核驳回 |
| 6 |
待审核 |
| 7 |
交易不存在 |
| 8 |
未知状态 |
注:当status=success和refCode=1同时成立时才表示转账成功
账户余额查询接口
提交方式:POST
接口地址:网关地址+/Payment_Dfpay_balance.html
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| memberid |
string |
商户编号 |
是 |
是 |
平台分配商户号 |
| sign |
string |
MD5签名 |
是 |
否 |
查看签名算法 |
【Response返回值】 (返回数据格式为json),Post请求后直接返回Response数据。
| 参数名称 |
参数类型 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| status |
string |
状态 |
是 |
是 |
success:请求成功,error:请求失败 |
| msg |
string |
状态描述 |
是 |
是 |
|
| memberid |
string |
商户号 |
是 |
是 |
status=success时返回 |
| balance |
string |
可提现余额 |
是 |
是 |
status=success时返回 |
| dfbalance |
string |
可代付余额 |
是 |
是 |
status=success时返回 |
| blockedbalance |
string |
冻结余额 |
是 |
是 |
status=success时返回 |
| sign |
string |
MD5签名 |
是 |
否 |
|
收银台接入
【1】. 收银台接入非常简单方便,前往:商户中心->我要收款->收款连接。该页面下的连接地址即为商户收银台的地址。
【2】. 访问格式:后台显示的收款链接?orderid=orderid&amount=amount
例如:https://payment.pgopay.com/Pay_Charges_index.html?orderid=123456&amount=100
【3】. 收银台页面自动区分PC端和手机端,不用再做其他处理。
【4】. 不同平台接入方式:
1. 网站web类应用: 直接访问该地址。
2. App类应用: 在应用内唤起浏览器,并访问该连接地址即可。
【5】. 收银台功能只有开通了该功能的商户才能访问上述的页面,并使用。
【6】. 需要进行订单校验的商户,则添加参数orderid,充值成功后会通知后台配置的收款通知地址notifyurl,并返回此参数,供商户使用。如不传此参数,平台自动生成订单号,并通知商户配置的收款通知地址。
【7】. 需要确定充值金额,则添加参数amount,固定用户充值金额,充值成功后会通知后台配置的收款通知地址notifyurl,并返回此参数,供商户使用。如不传此参数,用户可以自由输入金额。
【8】. 通知地址返回参数(同
支付下单异步通知),
点击查看。
【9】. 收款通知地址修改前往:商户中心->我要收款->收款设置。
通道编码
请登录商户中心,API管理->通道费率中,查看所属应用的支付通道编码。