OmiPay Web API 接入说明
接口规则
协议规则
传输协议 | HTTPS |
提交方式 | 请求以POST/GET方式提交 |
数据格式 | 请求和返回数据为 Json 格式 |
字符编码 | 字符编码使用 UTF-8 编码 |
签名算法 | 签名算法为 MD5 |
数据传递方式 | 数据以 QueryString 方式传递,将所有数据拼接到 URL 中作 为参数进行传递 |
Http Header | ContentType=application/json |
超时设定 | 请求超时时间为 5 分钟,即服务器请求接收时间与时间戳标 识时间间隔需要小于 5 分钟。 |
参数规定
- 1)金额
- 金额精确到币种的最小单位,以整数形式表示。
- 2)币种
- 接口现在支持的交易币种为澳元和人民币(AUD/CNY)
- 3)时间
- 时间为澳洲东部时间 EST。
- 4)时间戳
- UTC 标准时间,自 1970 年 1 月 1 日 0 点 0 分 0 秒以来的毫秒数。
- 5)随机字符串
- 10-32 位随机码,允许使用 a-z | A-Z | 0-9 字符。用于保证签名的不可预测性。推 荐使用随机数算法生成。
- 6)支付平台
- OmiPay 支持以下支付平台:
- 7) 接口语言
- OmiPay WebAPI 接口可以使用以下语言:
平台名称 | 对应接口 platform 参数值 |
微信支付 | WECHATPAY |
支付宝 | ALIPAY |
语言 | 对应接口 language 参数值 英 |
英文 | EN |
简体中文(默认) | CHS |
接口安全认证
- 1)验证字段
- 每次访问需要携带的验证如下:
- 后台字段如下:
- 2)生成签名
- 将以上字段按照 m_number×tamp&nonce_str&secret_key方式进行拼接(顺 序一定要正确),之后用 MD5 算法对拼接后的字符串进行摘要,然后转成大写,得到 签名字符串
- 3)将签名字符串以 sign 为 key,包含在接口字段中,进行访问
- 举例:
- 某次访问字段如下:
- 拼接生成的字符串如下:
- 123456&1482812036067&313644f42ecd4758b5e23b80e86efdc4&0af61531c6c04ac4ac910d0cd59e6238
- 生成签名方法如下:
- 通过以上方法得到 sign=”516A3B52F9C8897F52239B19CD8A499”,然后将签名也包 含在访问字符串中,得到访问字符串如下:
- m_number=123456×tamp=1482812036067&nonce_str=313644f42ecd4758b5e23b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A49
- 将该字符串用于 API 访问。
字段名 | 类型 | 说明 |
m_number | String | 商户编号。可在商户后台中找到 |
timestamp | Long | 时间戳,见参数规定中的时间戳 |
nonce_str | String | 随机字符串,见参数规定中的随机字符串 |
字段名 | 类型 | 说明 |
secret_key | String | 商户 API 密钥。可在商户后台中获取。该字段为保密字段,不要发送出来 |
m_number | 123456 |
timestamp | 1482812036067 |
nonce_str | 313644f42ecd4758b5e23b80e86efdc4 |
secret_key | 0af61531c6c04ac4ac910d0cd59e6238 |
C#:
var originString = “123456&1482812036067&313644f42ecd4758b5e23b80e86efdc4&0af61531c6c04ac4ac910 d0cd59e6238”;
var md5 = MD5.Create();
var bs = md5.ComputeHash(Encoding.UTF8.GetBytes(originString));
var sb = new StringBuilder();
foreach (byte b in bs)
{
sb.Append(b.ToString("x2"));
}
//所有字符转为大写
originString = sb.ToString().ToUpper();
PHP:
$originString = ‘123456&1482812036067&313644f42ecd4758b5e23b80e86efdc4&0af61531c6c04ac4ac910 d0cd59e6238’;
$sign = strtoupper(md5($originString));
接口内容
获取当前汇率
- 接口说明:
- 在交易前,可通过该接口获取系统当前的指定两种货币之间的汇率。该汇率一天更新一次。
- 接口地址
- https://www.omipay.com.au/omipay/api/v2/GetExchangeRate
- 请求参数(除以上安全验证参数之外,以下接口均相同)
- 成功返回结果
- 失败返回结果
- 错误码列表
- 请求举例
- https://www.omipay.com.au/omipay/api/v2/GetExchangeRate? m_number= 123456×tamp= 1482812036067&nonce_str= 313644f42ecd4758b5e2 3b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A499¤cy=AUD&base_currency=CNY
字段名 | 变量名 | 类型 | 示例值 | 描述 |
货币类型 | currency | String | AUD | 符合 ISO 4217 标准的货币代码,返回汇率值为 currency兑换 base_currency 的比值 |
本币类型 | base_currency | String | CNY | |
支付平台 | platform | String | WECHATPAY | 非必录,默认 WECHATPAY |
接口语言 | language | String | EN | 非必录,默认 CHS |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS,此字段标识该次访问是否成功。 |
汇率 | rate | Decimal | 5.01540000 | 当前汇率 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | FAIL | 失败时返回 FAIL |
错误码 | error_code | String | SYSTEM_ERROR | 错误的编码 |
错误信息 | error_msg | String | 服务器错误 | 错误的描述 |
错误码 | 说明 |
PARAMETER_INVALID | 参数不正确,可能是参数缺失或参数类型不正确所致。 |
SIGN_TIMEOUT | 时间戳超时。 |
MERCHANTNO_INVALID | 商户编号错误,请从商户后台检查对应商户编号。 |
SIGN_ERROR | 签名验证失败,请检查签名是否正确。 |
SYSTEM_ERROR | 服务器错误。 |
CURRENCY_ERROR | 货币类型错误,可能是该两种货币类型的汇率无法获取,或是货币类型输入错误。 |
成功返回数据举例
}
"return_code": "SUCCESS",
"rate": 5.01540000
}
失败返回数据举例
}
"return_code": "FAIL",
"rate": "SIGN_TIMEOUT"
"error_msg": "时间戳超时"
}
生成二维码订单
- 接口说明:
- 二维码订单适合非微信客户端的支付场景使用。客户可通过手机微信扫描该 API 生成的二维码进入微信支付界面进行支付。
- 接口地址
- https://www.omipay.com.au/omipay/api/v2/MakeQROrder
- 请求参数
- 成功返回结果
- 失败返回结果
- 错误码列表
- 请求举例
- 额外说明
- 二维码订单支付流程:
- 1) 商户在 Web 或 PC 端商城创建支付订单;
- 2) 调用 OmiPay 的二维码订单接口;
- 3) 将接口返回的 pay_url 信息生成二维码,并在页面中展示给客户;
- 4) 客户通过手机微信扫描该二维码,完成支付;
- 5) 客户支付成功后,系统会异步向 notify_url 发送回调信息;该回调信息会重复发 送最多三次,直到该 notify_url 向服务器收到该Url 的正确返回;
- 6) 若商户一段时间未收到回调信息,可以主动调用 QueryOrder 方法获取支付状态, 以便进行后续操作。
- 订单展示页说明:
- 1) 商户可引导商城页面跳转至该 URL,该页会展示订单信息和支付二维码,客户通 过手机扫描页面上的二维码即可完成支付。支付完成后,浏览器会自动跳转到调 用时传递的跳转地址。
- 2) 页面跳转至该 URL 时需要传递以下参数,参数传递方式和调用其他 API 的方式一 致(将参数拼接到 URL 中)。
字段名 | 变量名 | 类型 | 示例值 | 描述 |
订单名称 | order_name | String | 测试商品 | 简单描述交易的商品或交易信息 |
货币 | currency | String | AUD | 下单货币类型 |
金额 | amount | int | 100 | 金额,单位为下单货币的 最 小 货 币 值 。 例 如 currency=AUD, 则 100 表 示 A$1.00。 |
通知地址 | notify_url | String | 交易成功通知地址 | |
订单编号 | out_order_no | String | 外部订单编号,请确保唯 一性 | |
支付平台 | platform | String | ALIPAY | ALIPAY:支付宝 WECHATPAY:微信 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS |
订单编号 | order_no | String | 32 位 OmiPay 订单编号 | |
二维码字符串 | qrcode | String | 二维码字符串。商户可 根据此字符串生成二维 码供客户扫描 | |
订单 URL | pay_url | String | 二维码订单展示URL。商 户可引导客户浏览器跳 转至该URL,展示支付二 维码。 * 跳转到该页面时,也 需要加上签名信息,签 名方式和其他 API 调用 的签名方式一致。 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | FAIL | 失败时返回 FAIL |
错误码 | error_code | String | SYSTEM_ERROR | 错误的编码 |
错误信息 | error_msg | String | 服务器错误 | 错误的描述 |
错误码 | 说明 |
PARAMETER_INVALID | 参数不正确,可能是参数缺失或参数类型不正确所致。 |
SIGN_TIMEOUT | 时间戳超时。 |
MERCHANTNO_INVALID | 商户编号错误,请从商户后台检查对应商户编号。 |
SIGN_ERROR | 签名验证失败,请检查签名是否正确。 |
SYSTEM_ERROR | 服务器错误。 |
WEBSTORE_NOT_EXISTS | 该商户没有注册网店。商户没有在OmiPay 登记注册网店 会发生该错误。 |
AMOUNT_INVALID | 金额不正确。当金额大于支付平台允许最大单笔交易金 额,或汇率转换后的金额小于支付平台付款最小金额 时,会提示该错误。 |
https://www.omipay.com.au/omipay/api/v2/MakeQROrder? m_number= 123456×tamp= 1482812036067&nonce_str=313644f42ecd4758b5e2 3b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A499&order_name= 测 试 商 品 ¤cy=AUD&amount=100¬ify_url=http://your_site.com/receive_notify .html&out_order_no=SEORD000001
成功返回数据举例
}
"return_code": "SUCCESS",
"order_no": "bc112874260946a2af2b7107825e6ce2",
"qrcode" : "………………. ",
"pay_url" : "https://www.omipay.com.au/OmiPay/pay/qrpay?paycode=xxxxxxxxx"
}
失败返回数据举例
}
"return_code": "FAIL",
"rate": "SIGN_TIMEOUT"
"error_msg": "时间戳超时"
}
字段名 | 变量名 | 类型 | 示例值 | 描述 |
商户号 | m_number | String | ||
时间戳 | timestamp | String | 1482812036067 | |
随机字符串 | noncestring | String | ||
签名 | sign | String | ||
跳转地址 | redirect_url | String | 交易成功跳转地址 |
生成JSAPI订单
- 接口说明:
- JSAPI 订单适合微信客户端的支付场景使用。商户调用该 API,返回支付 Url,商户 引导客户跳转至该 Url 完成支付。商户只有在微信端商城中才能使用该方式生成订单。
- 接口地址
- https://www.omipay.com.au/omipay/api/v2/MakeJSAPIOrder
- 请求参数
- 成功返回结果
- 失败返回结果
- 错误码列表
- 请求举例
- 额外说明:JSAPI 需要设置 redirect_url,客户在完成支付后,浏览器会跳转至 redirect_url 中
字段名 | 变量名 | 类型 | 示例值 | 描述 |
订单名称 | order_name | String | 测试商品 | 简单描述交易的商品或交易信息 |
货币 | currency | String | AUD | 下单货币类型 |
金额 | amount | int | 100 | 金额,单位为下单货币的 最 小 货 币 值 。 例 如 currency=AUD, 则 100 表 示 A$1.00。 |
通知地址 | notify_url | String | 交易成功通知地址 | |
跳转地址 | redirect_url | String | 交易成功跳转地址 | |
订单编号 | out_order_no | String | 外部订单编号,请确保唯 一性 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS |
订单编号 | order_no | String | 32 位 OmiPay 订单编号 | |
跳转 url | pay_url | String | 支付跳转 Url,商户引 导客户跳转至该 Url, 完成支付 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | FAIL | 失败时返回 FAIL |
错误码 | error_code | String | SYSTEM_ERROR | 错误的编码 |
错误信息 | error_msg | String | 服务器错误 | 错误的描述 |
错误码 | 说明 |
PARAMETER_INVALID | 参数不正确,可能是参数缺失或参数类型不正确所致。 |
SIGN_TIMEOUT | 时间戳超时。 |
MERCHANTNO_INVALID | 商户编号错误,请从商户后台检查对应商户编号。 |
SIGN_ERROR | 签名验证失败,请检查签名是否正确。 |
SYSTEM_ERROR | 服务器错误。 |
WEBSTORE_NOT_EXISTS | 该商户没有注册网店。商户没有在OmiPay 登记注册网店 会发生该错误。 |
AMOUNT_INVALID | 金额不正确。当金额大于支付平台允许最大单笔交易金 额,或汇率转换后的金额小于支付平台付款最小金额 时,会提示该错误。 |
https://www.omipay.com.au/omipay/api/v2/MakeJSAPIOrder? m_number=123456×tamp=1482812036067&nonce_str=313644f42ecd4758b5e23 b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A499&order_name= 测 试 商 品 ¤cy=AUD&amount=100&redirect_url=http://your_site.com/redirect_to. html&amount=100¬ify_url=http://your_site.com/receive_notify.html&out _order_no=SEORD000001
成功返回数据举例
}
"return_code": "SUCCESS",
"pay_url" : "………………. ",
}
失败返回数据举例
}
"return_code": "FAIL",
"rate": "SIGN_TIMEOUT"
"error_msg": "时间戳超时"
}
生成扫描支付订单
- 接口说明:
- 客户通过OmiPay的微信端生成支付二维码,商户通过条码设备扫描该二维码之后,创 建支付订单,完成后续支付。
- 接口地址
- https://www.omipay.com.au/omipay/api/v2/MakeScanOrder
- 请求参数
- 成功返回结果
- 失败返回结果
- 错误码列表
- 请求举例
- 额外说明
- 扫码支付流程如下:
- 1) 商户在 POS 系统中创建订单并向客户展示订单金额;
- 2) 客户向商户展示付款二维码;
- 3) 商户通过 POS 设备扫描二维码后,将扫描订单信息提交到 OmiPay;
- 4) OmiPay 进行支付后台处理。同时商户端等待 OmiPay 的处理结果;
- 5) 若 OmiPay 返回支付成功信息,支付流程结束;若返回失败信息且错误码不 是”USERPAYING”,则商户端做相应失败处理;否则进入步骤(6。
- 6) 若错误码是”USERPAYING”,表示客户需要输入支付密码。(是否需要输入支付密, 码根据微信支付密码验证规则而定)若客户需要支付密码,则商户端需等待,在 客户输入密码并支付成功后,OmiPay 会向商户提交的 notify_url 发送成功消 息,商户可根据该返回消息判断订单状态;或是在收到 OmiPay 返回后,等待 5 秒钟,用 QueryOrder 方法查询订单状态。
字段名 | 变量名 | 类型 | 示例值 | 描述 |
订单名称 | order_name | String | 测试商品 | 简单描述交易的商品或交易信息 |
货币 | currency | String | AUD | 下单货币类型 |
金额 | amount | int | 100 | 金额,单位为下单货币的 最 小 货 币 值 。 例 如 currency=AUD, 则 100 表 示 A$1.00。 |
通知地址 | notify_url | String | 交易成功通知地址 | |
二维码 | qrcode | String | 通过扫描得到的客户端二维码 | |
客户端编码 | pos_no | String | 商户 POS 端编码 | |
订单编号 | out_order_no | String | 外部订单编号,请确保唯 一性 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS |
订单编号 | order_no | String | 32 位 OmiPay 订单编号 | |
外 部 订 单号 | out_order_no | String | 商户调用 API 时传入的 商户侧订单编号 | |
支付时间 | order_time | String | 订单支付时间,格式为 yyyyMMddHHmmss |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | FAIL | 失败时返回 FAIL |
错误码 | error_code | String | SYSTEM_ERROR | 错误的编码 |
错误信息 | error_msg | String | 服务器错误 | 错误的描述 |
订单号 | order_no | String | 若 error_code 为 USERPAYING,则返回该 字段(详见额外说明 |
错误码 | 说明 |
PARAMETER_INVALID | 参数不正确,可能是参数缺失或参数类型不正确所致。 |
SIGN_TIMEOUT | 时间戳超时。 |
MERCHANTNO_INVALID | 商户编号错误,请从商户后台检查对应商户编号。 |
SIGN_ERROR | 签名验证失败,请检查签名是否正确。 |
SYSTEM_ERROR | 服务器错误。 |
USERPAYING | 用户正在支付。 |
ORDER_PAID | 订单已支付过。 |
POS_NOT_REGISTERED | 商户 POS 端未注册。 |
NOT_ENOUGH | 用户余额不足。 |
CARD_NOT_SUPPORT | 不支持卡类型。 |
ORDER_CLOSED | 订单已关闭。 |
QRCODE_EXPIRED | 二维码已超时。 |
QRCODE_ERROR | 二维码错误。 |
AMOUNT_INVALID | 金额不正确。当金额大于支付平台允许最大单笔交易金 额,或汇率转换后的金额小于支付平台付款最小金额 时,会提示该错误。 |
https://www.omipay.com.au/omipay/api/v2/MakeScanOrder? m_number=123456×tamp=1482812036067&nonce_str=313644f42ecd4758b5e23 b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A499&order_name= 测 试 商 品 ¤cy=AUD&amount=100¬ify_url=http://your_site.com/receive_notify. html&qrcode=123abc123&pos_no=posno_123&out_order_no=SEORD000001
查询订单状态
- 接口说明:
- 商户生成订单之后,可以根据 OmiPay 返回的订单编号查询订单状态。
- 接口地址
- https://www.omipay.com.au/omipay/api/v2/QueryOrder
- 请求参数
- 成功返回结果
- 失败返回结果
- 错误码列表
- 请求举例
- 额外说明
- 二维码订单支付流程:
- 1) 商户在 Web 或 PC 端商城创建支付订单;
- 2) 调用 OmiPay 的二维码订单接口;
- 3) 将接口返回的 pay_url 信息生成二维码,并在页面中展示给客户;
- 4) 客户通过手机微信扫描该二维码,完成支付;
- 5) 客户支付成功后,系统会异步向 notify_url 发送回调信息;该回调信息会重复发 送最多三次,直到该 notify_url 向服务器
- 6) 若商户一段时间未收到回调信息,可以主动调用 QueryOrder 方法获取支付状态, 以便进行后续操作。
- 订单状态列表:
字段名 | 变量名 | 类型 | 示例值 | 描述 |
订单编号 | order_no | String | OmiPay 返回的订单编号 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS |
订单状态 | result_code | String | PAID | 订单状态 |
外部订单号 | out_order_no | String | 下单时传递的外部订单号 | |
货币 | currency | String | AUD | 订单支付货币编码 |
金额 | amount | int | 100 | 金额,单位为下单货币 的最小货币值。例如 currency=AUD,则 100 表示 A$1.00 |
支付货币 | pay_currency | String | CNY | 客户实际支付货币编码 |
支付金额 | pay_amount | int | 561 | 支付金额,单位为支付 货币的最小货币值。例 如 pay_currency=CNY, 则 100 表示人民币 1 元 |
订 单 创 建 时间 | order_time | String | 订单创建时间,格式为yyyyMMddHHmmss | |
订 单 支 付 时间 | pay_time | String | 订单支付时间,格式为 yyyyMMddHHmmss;若订 单未实际支付,返回空 字符串 | |
汇率 | exchange_rate | int | 下单货币兑支付货币汇 率,实际汇率的10^8倍 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | FAIL | 失败时返回 FAIL |
错误码 | error_code | String | SYSTEM_ERROR | 错误的编码 |
错误信息 | error_msg | String | 服务器错误 | 错误的描述 |
错误码 | 说明 |
PARAMETER_INVALID | 参数不正确,可能是参数缺失或参数类型不正确所致。 |
SIGN_TIMEOUT | 时间戳超时。 |
MERCHANTNO_INVALID | 商户编号错误,请从商户后台检查对应商户编号。 |
SIGN_ERROR | 签名验证失败,请检查签名是否正确。 |
SYSTEM_ERROR | 服务器错误。 |
PERMISSION_ERROR | 权限错误,当查询的订单号不属于该商户时发生。 |
https://www.omipay.com.au/omipay/api/v2/QueryOrder? m_number= 123456×tamp= 1482812036067&nonce_str= 313644f42ecd4758b5e2 3b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A499&order_no=bc112874260 946a2af2b7107825e6ce2
成功返回数据举例
}
"return_code": "SUCCESS",
"result_code": "PAID",
"currency" : "AUD",
"amount" : 100
"pay_currency": "CNY",
"pay_amount": 561,
"order_time" : "20161227105530",
"pay_time" : "20161227105602"
"exchange_rate" : "650000000"
}
失败返回数据举例
}
"return_code": "FAIL",
"rate": "SIGN_TIMEOUT"
"error_msg": "时间戳超时"
}
状态 | 说明 |
READY | 已创建订单,尚未支付 |
PAYING | 用户正在支付中 |
PAID | 用户已支付 |
CLOSED | 订单已关闭(已完成结算) |
CANCELLED | 订单已取消 |
FAILED | 订单支付失败 |
推送付款消息
- 接口说明:
- 商户在创建订单时,若附上了 notify_url 参数,则在订单支付成功后会向该 Url 发 送 Http 请求,主动推送支付成功的消息。该请求会重复推送三次,若三次未收到该 Url 的正确返回,之后不再推送。若收到正确返回,也不会继续推送。该请求规则如 下:
- 推送消息参数
- 说明:推送消息会做签名验证,验证逻辑和以上方法一致。商户接收到推送消息后, 也应该进行同样逻辑验证签名的正确性,以保证不被第三方攻击。
- 商户应返回结果
字符编码 | UTF8 |
Http Header | Content-Type=application/json |
参数传递方式 | 数据会以 json 的方式写入请求的 body 中 |
返回类型 | application/json |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
随机字符串 | nonce_str | String | 随机字符串 | |
时间戳 | timestamp | Long | 时间戳 | |
签名 | sign | String | 签名字符串 | |
订单编号 | order_no | String | OmiPay 订单编号 | |
外部订单号 | out_order_no | String | 外部订单号 | |
货币 | currency | String | AUD | 订单支付货币编码 |
金额 | amount | int | 100 | 金额,单位为下单货币的 最 小 货 币 值 。 例 如 currency=AUD,则 100 表 示 A$1.00 |
支付货币 | pay_currency | String | CNY | 客户实际支付货币编码 |
支付金额 | pay_amount | int | 561 | 支付金额,单位为支付货 币的最小货币值。例如 pay_currency=CNY , 则 100 表示人民币 1 元 |
订单创建时间 | order_time | String | 订单创建时间,格式为yyyyMMddHHmmss | |
订单支付时间 | pay_time | String | 订单支付时间,格式为 yyyyMMddHHmmss;若订单 未实际支付,返回空字符 串 | |
汇率 | exchange_rate | int | 下单货币兑支付货币汇 率,实际汇率的 10^8 倍 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS |
商户退款申请
- 接口说明:
- 商户可调用此接口进行退款申请。
- 接口地址
- https://www.omipay.com.au/omipay/api/v2/Refund
- 请求参数
- 成功返回结果
- 失败返回结果
- 错误码列表
- 请求举例
- 额外说明
- 二维码订单支付流程:
- 1) 基于订单退款。每个退款单必须有对应的订单。
- 2) 一个订单可以分为多次退款。退款总金额不能大于订单总金额。
- 3) 退款申请成功代表向对应支付平台成功发送退款请求,不代表实际退款成功。一 般原路退回的款项需要走银行处理流程,实际到款时间不定。申请成功也可能退 款失败,例如客户银行账号冻结、信用卡错误等均可导致实际退款失败。商户之 后可通过 QueryRefund 查询实际退款状态。
字段名 | 变量名 | 类型 | 示例值 | 描述 |
订单编号 | order_no | String | 要退款的 OmiPay 订单编号 | |
外部退款单号 | out_refund_no | String | 外部退款单号 | |
退款金额 | amount | int | 100 | 金额,货币是订单的下单 货币,单位为订单下单货 币的最小货币值。以下单 时的汇率转换成OmiPay结 算币种(AUD)金额,该 金额不能小于币种最小金 额(A$0.01) |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS |
退款单号 | refund_no | String | OmiPay 退款单号 | |
货币 | currency | String | AUD | 退款货币编码 |
金额 | amount | int | 100 | 金额,单位为退款货币 的最小货币值。例如 currency=AUD,则 100 表示 A$1.00 |
退款时间 | refund_time | String | 退 款 时 间 , 格 式 为 yyyyMMddHHmmss |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | FAIL | 失败时返回 FAIL |
错误码 | error_code | String | SYSTEM_ERROR | 错误的编码 |
错误信息 | error_msg | String | 服务器错误 | 错误的描述 |
错误码 | 说明 |
PARAMETER_INVALID | 参数不正确,可能是参数缺失或参数类型不正确所致。 |
SIGN_TIMEOUT | 时间戳超时。 |
MERCHANTNO_INVALID | 商户编号错误,请从商户后台检查对应商户编号。 |
SIGN_ERROR | 签名验证失败,请检查签名是否正确。 |
SYSTEM_ERROR | 服务器错误。 |
PERMISSION_ERROR | 权限错误,当退款的订单号不属于该商户时发生。 |
ORDER_NO_ERROR | 订单编号错误,当订单不存在时发生。 |
ORDER_NOT_PAID | 订单未支付。 |
AMOUNT_OVER_LIMIT | 金额超过退款上限。 |
https://www.omipay.com.au/omipay/api/v2/Refund? m_number= 123456×tamp= 1482812036067&nonce_str= 313644f42ecd4758b5e2 3b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A499&order_no=bc112874260 946a2af2b7107825e6ce2&out_refund_no=xxxxxxx&amount=100
成功返回数据举例
}
"return_code": "SUCCESS",
"refund_no": "ADDFGHJKL",
"currency" : "AUD",
"amount" : 100,
"refund_time" : "20161227105530"
}
失败返回数据举例
}
"return_code": "FAIL",
"rate": "SIGN_TIMEOUT"
"error_msg": "时间戳超时"
}
查询退款状态
- 接口说明:
- 商户申请退款成功之后,可以根据 OmiPay 返回的退款单号查询退款状态。
- 接口地址
- https://www.omipay.com.au/omipay/api/v2/QueryRefund
- 请求参数
- 成功返回结果
- 失败返回结果
- 错误码列表
- 请求举例
- 退款单状态列表:
字段名 | 变量名 | 类型 | 示例值 | 描述 |
退款单编号 | refund_no | String | OmiPay 返回的退款单编号 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | SUCCESS | 成功时返回 SUCCESS |
退款单状态 | result_code | String | CLOSED | 退款单状态 |
外 部 退 款 单号 | out_refund_no | String | 下单时传递的外部退款单号 | |
货币 | currency | String | AUD | 退款货币编码 |
金额 | amount | int | 100 | 金额,单位为退款货币 的最小货币值。例如 currency=AUD,则 100 表示 A$1.00 |
退 款 单 创 建时间 | refund_time | String | 退款单创建时间,格式 为 yyyyMMddHHmmss | |
实 际 到 账 时间 | success_time | String | 实际到账时间,格式为 yyyyMMddHHmmss;若退 款单状态不为 CLOSED, 返回空字符串 |
字段名 | 变量名 | 类型 | 示例值 | 描述 |
状态码 | return_code | String | FAIL | 失败时返回 FAIL |
错误码 | error_code | String | SYSTEM_ERROR | 错误的编码 |
错误信息 | error_msg | String | 服务器错误 | 错误的描述 |
错误码 | 说明 |
PARAMETER_INVALID | 参数不正确,可能是参数缺失或参数类型不正确所致。 |
SIGN_TIMEOUT | 时间戳超时。 |
MERCHANTNO_INVALID | 商户编号错误,请从商户后台检查对应商户编号。 |
SIGN_ERROR | 签名验证失败,请检查签名是否正确。 |
SYSTEM_ERROR | 服务器错误。 |
PERMISSION_ERROR | 权限错误,当查询的退款单号不属于该商户时发生。 |
REFUND_NO_ERROR | 退款单号错误。 |
https://www.omipay.com.au/omipay/api/v2/QueryRefund? m_number= 123456×tamp= 1482812036067&nonce_str= 313644f42ecd4758b5e2 3b80e86efdc4&sign=8516A3B52F9C8897F52239B19CD8A499&refund_no=bc11287426 0946a2af2b7107825e6ce2
成功返回数据举例
}
"return_code": "SUCCESS",
"result_code": "CLOSED",
"currency" : "AUD",
"amount" : 100,
"refund_time" : "20161227105530",
"success_time" : "20161227105602",
}
失败返回数据举例
}
"return_code": "FAIL",
"rate": "SIGN_TIMEOUT"
"error_msg": "时间戳超时"
}
状态 | 说明 |
Applied | 客户已提交退款申请 |
MerchantConfirmed | 商户同意退款并已发送申请至支付机构 |
OrganizationConfirmed | 支付机构已确认退款申请 |
OrganizationPayback | 支付机构已退款 |
Closed | 流程关闭,已核账 |
MerchantRejected | 商户拒绝退款 |
TimeoutClosed | 超过退款时效关闭 |
OrganizationFailed | 支付机构失败 |
CustomerCancelled | 客户取消退款 |