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管理->通道费率中,查看所属应用的支付通道编码。