名称 说明
1.简介
1.1 目的
本文档的目的是为支付平台定义一个接口规范,以帮助商户技术人员接入支付平台,并快速掌握支付相关功能,便于尽快投入使用。
1.2 阅读对象
开发人员。
他们应具备以下基本知识:
(1)HTTP、HTTPS 协议
(2)FORM,JSON 数据格式
(3)熟悉开发语言 java 等
(4)了解信息安全的基本概念,安全签名,RSA
1.3 注册商户
注册商户,并分配秘钥,请联系我们。
2.相关约定
2.1 说明
1)所有金额的单位为“分”,表示为整数
2)所有的日期格式为 yyyy-MM-dd HH:mm:ss(月份或天不够 2 位的前面补零,例:2026-09-22 12:02:04)。
2.2 术语清单
名称 说明
签名 签名客户端请求数据,防止传输链路上被篡改,签名算法 采用 RSA 方式的SHA1withRSA计算
交易
货币类型 每笔交易中支付货币类型。遵从国际定义。例如:USD、 INR。目前印度支持 INR 美国支持USD
2.3 字符集
请求和响应,我们都只支持 UTF-8 编码
3.接口规范
3.1 通讯方式,HTTPS 通讯方式
为了保证安全,商户交易系统与支付平台之间采用 HTTPS 的通讯协议。双方系统交互时应当遵循以下原则:
1)接口请用 POST FORM方法提交参数(不是JSON提交)
2)接口响应数据格式为 JSON
3.2 接口请求格式
说明
URL https://生产域名/native/{apiName}/{apiVersion}
参数 Form 表单提交的方式
3.3 接口响应格式
说明
返回参数 JSON 格式的响应
3.4 回调响应格式
名称 说明
返回参数 以字节流的方式进行参数回传,成功接到回调数据后处理完系统逻辑后,需要 以字节流的形式返回大写的 SUCCESS,否则会重复发送。
4.数字签名
数字签名对请求和响应进行签名,防止请求和响应在传输的过程中被人篡改,确保数据的完整性。 4.1 算法
为了保证安全性,我们采用了 RSA 签名算法,对请求和响应进行签名。 商户提交的表单按照参数名的哈希值进行升序排列,每个参数中间用“&”连接,根据平台提供的商户私钥(商户后台可查),然后进行 RSA 方式的SHA1withRSA计算签名值sign,签名时不能包含空值的字段。
签名示例:
排序前的参数: {amount=10000, failURL=https://testone.upipay.vip/fail, content=ourTest, firstName=Shivam, payType=PAYU_WEB, phone=9906515247, outTradeNo=20260922211707, outContext=Test, callbackURL=https://testone.upipay.vip/getresponse, currency=INR, returnURL=https://testone.upipay.vip/return, email=Smith999@gmail.com, merchantNo=AAAAA}
排序后的参数: amount=10000&callbackURL=https://testone.upipay.vip/getresponse&content=ourTest¤cy=INR&email=Smith999@gmail.com&failURL=https://testone.upipay.vip/fail&firstName=Shivam&merchantNo=AAAAA&outContext=Test&outTradeNo=20260922211707&payType=PAYU_WEB&phone=9906515247&returnURL=https://testone.upipay.vip/return
签名结果sign: Y0b0W8qxvt88t48**xR716UuzFcSubyJSPLOifWwmJrt4MZTIXPHByE8HMJeXJJbA5yjVggqePwGvRLQGmuSyvQ=
5.API 接口参数
5.1 创建交易 API
API 名称: createTrade
API 版本:1.0.0
说明:只能采用 Form 表单的方式提交。
5.1.1 入参 参数名 类型 必需 说明
merchantNo String 是 商户号,请到商户后台商户中心查询
sign String 是 商户提交的表单按照参数名的哈希值进 行升序排列,每个参数中间用“&”连接, 根据平台提供的商户私钥进行RSA 方式的SHA1withRSA计算sign签名,签名时不能包含sign字段与空值字段
outTradeNo String 是 商户订单号,确保唯一性
currency String 是 货币类型,INR ,USD 印度传INR, 美国传USD
amount Long 是 交易金额,单位分
content String 是 交易主题
payType String 是 支付类型, 固定值:PAYU_WEB
phone String 是 用户手机号 email String 是 用户邮箱 firstName String 是 用户名 outContext String 是 商户自定义信息,查询或者回调原样返回 failURL String 是 失败跳转地址 returnURL String 是 成功跳转地址
callbackURL String 是 支付成功异步回调地址,通知交易结果
5.1.2 出参 返回 json数据
参数名 类型 必需 说明
merchantNo String 是 商户号
sign String 是 平台按照参数名的哈希值进行升序排列,每个参数中间用“&”连接,用平台私钥进行加密,然后进行RSA计算出sign签名值, 商户判断数据是否被篡改要用平台提供的公钥进行RSA验签,返回sign字段不参与签名,如果商户计算得到的sign值和回传的sign值一致,证明返回的数据未被篡改,可以使用,如果sign值不一致,证明数据已被他人截获,进行了篡改,这个数据可暂时不做处理 outTradeNo String 是 商户订单号
currency String 是 货币类型,INR 或 USD,印度返回 INR
amount Long 是 交易金额,单位分
payType String 是 支付类型: PAYU_WEB
outContext String 是 商户自定义信息,原样返回
tradeNo String 是 平台订单号
status String 是 交易状态,WAITING_PAY:待支付
paymentInfo String 是 支付地址链接,打开链接可以进行支付
5.1.3 HTTP 请求示例 POST /native/createTrade/1.0.0 HTTP/1.1 <form action=" https://gw.healthmanshop.com/native/createTrade/1.0.0" method="post"> 参数设置(见签名示例)
</form>
5.1.4 HTTP 响应示例
HTTP/1.1 200 OK { "amount":10000, "payType":"PAYU_WEB", "tradeNo":"1000rfhWRU", "outContext":"test", "outTradeNo":"20201110144137", "sign":"C43YzQERjS3Jk52F+U9MMZeIxF/W17yARJuXnxCN72kRSueEhxm78n0kYzoxFa10+NBvIVfLl65lv6ZbMUOInGXtaTo2b6wCLLsTTbuviw1y3drt0DZ3F9Tzbqthl8uogVMQly8bvqZLoC2Xx24DVuo8uEOeOic+hVO5+cVrtpic=", "currency":"INR", "paymentInfo":"https://**", "merchantNo":"AAAAAAAA", "status":"WAITING_PAY" }
5.2 查询交易 API
API 名称:queryTrade
API 版本:1.0.0
完整地址:
https://gw.healthmanshop.com/native/queryTrade/1.0.0
5.2.1 入参 参数名 类型 必须 说明
merchantNo String 是 商户号
outTradeNo String 是 商户订单号
sign String 是 商户提交的表单按照参数名的哈希 值进行升序排列,每个参数中间用 “&”连接,根据平台提供的商户私钥 进行RSA 方式的SHA1withRSA计算sign签名,签名时不能包含sign字段和空值
5.2.2 出参
字段名 类型 必 说明 须
merchantNo String 是 商户号
tradeNo String 是 平台交易号
outTradeNo String 是 商户订单号
sign String 是 平台返回参数名的哈希值进行升序排序,用平台私钥计算出的sign签名值 商户要用平台提供的公钥进行验签,看数据是否被篡改,篡改则数据不进行处理,未篡改可以使用
outContext String 是 外部上下文,用户自己设置,当用户交易时有输入,则返回,无输入,则返回空值
payType String 是 支付方式
currency String 是 货币类型 INR:印度卢比, USD:美元
amount Long 是 交易金额, 单位分
status String 是 交易状态 待支付:WAITING_PAY 支付失败:PAY_FAILED 支付成功:SETTLED
errorCode String 否 错误码(支付失败时返回)
errorMsg String 否 错误提示(支付失败时返回)
5.2.3 HTTP 请求示例
POST /native/queryTrade/1.0.0 HTTP/1.1 参数体: { "sign":"IaOHyWnfAkML2j2KmCx5fn797oKTnNtBaoF6O9d4KhQWmgbCFOypkXedMKc95s+23/cUiP2hJTS5mtyUa7p4sOWd2TlPzMj+d6xm6pUlhDvXaYe6WE104wrBYD2SoOAMpLMpR7UIr+1aAcv2CIXwSpFQ3LFg3A3oJQOcOXZtHMk=", "merchantNo":"AAAAAAAA", "outTradeNo":"20201109204711" }
5.2.4 HTTP 响应示例
HTTP/1.1 200 OK { "amount":10000, "payType":"PAYU_WEB", "tradeNo":"0muuANZ", "outTradeNo":"20201109204711", "outContext":"test", "sign":"c5YEWfOmynC90z33xGMB09x1nShIV9TjneVbS5yb9gsWYjEkwm3PurM4R6Pngr0MhiK+NI2JDIURyaoGCzIE3DoworwOoifqcjsX5Z8F5ORB4bDb5OCkZxqTlJIk/NayiRZEJNyyOu50KqD4ADslQonjvw9ajdM0mXjbbwNATzw=", "currency":"INR", "merchantNo":"AAAAAAAA", "status":"WAITING_PAY" }
请求出错时候返回:
{ "errorCode":"ERROR_BIZ_ERROR", "errorMsg":"**"}
6.回调处理
6.1 同步跳转和异步通知的区别(returnURL 和 callbackURL) returnURL:同步跳转此地址,支付成功后跳转此地址 callbackURL:异步通知,POST json数据方式返回到商户的回调地址。在返回的文件中,注意需要输出 大写SUCCESS 通知返回信息成功,若没有这个 SUCCESS 的输出,回调会一直重复发送5次。
6.2 回调说明 6.2.1 callbackURL 异步回调通知 支付成功,结算成功,都通过创建交易时指定 callbackURL, 以 HTTP POST 请求来回调通知,交易数据以字节流的形式的 JSON 格式返回。
通知示例: { "amount":10000, "tradeNo":"AAAAAAA", "sign":"c5YEWfOmynC90z33xGMB09x1nShIV9TjneVbS5yb9gsWYjEkwm3PurM4R6Pngr0MhiK+NI2JDIURyaoGCzIE3DoworwOoifqctttfffffff3334ddfff", "outContext":"test", "payType":"PAYU_WEB", "outTradeNo":"20201108172211", "currency":"INR", "utr":"123456789098", "merchantNo":"AAAAAAAA", "status":"SETTLED" }
返回参数: 以字节流的方式进行参数回传,成功接到回调数据后要用平台公钥进行验签,校验数据未被篡改,处理完回调数据后,需要以字节流的形式返回大写的 SUCCEES,否则会重复发送5次。若用户不处理回调信息,产生的后果由用户自行负责。
BODY JSON 格式说明
字段名 类型 必须 说明
merchantNo String 是 商户号
tradeNo String 是 平台交易号
sign String 是 平台按照参数名的哈希值进行升序排序,每个参数中间用“&”连接,用平台私钥RSA的SHA1withRSA加密计算得出sign值。 验签:商户按照所有返回参数名哈希值进行升序排序,每个参数中间用“&”连接,使用平台提供的公钥进行RSA验签 ,若计算的sign值和回调的sign值相等,则数据未被篡改,可以进行使用,如果sign值不等,数据被别人截获,进行了篡改,数据不做处理
outTradeNo String 是 商户交易号
outContext String 是 创建交易时的 outContext 参数,外部 上下文
payType String 是 支付方式:PAYU_WEB
currency String 是 货币类型 INR:印度卢比, USD:美元
amount Long 是 交易金额, 单位分,回调取此值
status String 是 交易状态 SETTLED: 结算成功 PAY_FAILED:支付失败
utr String 是 具体utr值 ,未获取到为0 errorCode String 否 错误码
errorMsg String 否 错误提示
6.2.2 returnURL 同步跳转地址
支付成功后跳转此地址