NAV Navbar
Logo
示例

ULINE介绍

泓龙支付接口文档

UCHANG开发人员与商户平台服务方技术或业务人员参考和查询。

ULINE接口数据格式

1.1 数据格式

1.1.1 提交数据

提交数据

<xml>
  <attach><![CDATA[att]]></attach>
  <body><![CDATA[支付测试]]></body>
  <device_info>1000</device_info>
  <mch_id>10000100</mch_id>
  <nonce_str>adf880d5c8986bd0deb6423c92c9d948</nonce_str>
  <out_trade_no>1406046836</out_trade_no>
  <spbill_create_ip>127.0.0.1</spbill_create_ip>
  <total_fee>1</total_fee>
  <sign><![CDATA[F53145E553092CE52E4CAA4D2B49A91C]]></sign>
</xml>

1.2 XML 数据格式

采用标准XML协议,所有参数只存在一级节点,不采用多借点嵌套。

协议级错误返回:

<xml>
  <return_code>500</return_code>
  <return_msg><![CDATA[SYSERR]]></return_msg>
</xml>

正确返回数据:

<xml>
  <result_code>SUCCESS</return_code>
  <return_msg><![CDATA[OK]]></return_msg>
  <mch_id><![CDATA[10000100]]></mch_id>
  <device_info><![CDATA[1000]]></device_info>
  <nonce_str><![CDATA[FvYSnPuFFPkAr77M]]></nonce_str>
  <sign><![CDATA[63238039D6E43634297CF2A6EB5F3B72]]></sign>
  <result_code>SUCCESS</result_code>
  <trade_type><![CDATA[pay.weixin.jspay]]></trade_type>
  <bank_type><![CDATA[CCB_CREDIT]]></bank_type>
  <total_fee>1</total_fee>
  <coupon_fee>0</coupon_fee>
  <fee_type><![CDATA[CNY]]></fee_type>
  <transaction_id><![CDATA[1008450740201407220000058756]]></transaction_id>
  <out_trade_no><![CDATA[1406033828]]></out_trade_no>
  <attach><![CDATA[att]]></attach>
  <time_end><![CDATA[20140722160655]]></time_end>
</xml>

业务级错误返回:

<xml>
  <return_code>SUCCESS</return_code>
  <return_msg><![CDATA[OK]]></return_msg>
  <mch_id><![CDATA[10000100]]></mch_id>
  <device_info><![CDATA[1000]]></device_info>
  <nonce_str><![CDATA[sthBJ9QyUG6vkrjJ]]></nonce_str>
  <sign><![CDATA[6277A96D7875D4FF23AA7B6A4C3046AB]]></sign>
  <result_code>FAIL</result_code>
  <err_code><![CDATA[AUTHCODE_EXPIRE]]></err_code>
  <err_code_des><![CDATA[二维码已过期,请刷新再试]]></err_code_des>
</xml>

一般有返回有 return_code 参数,SUCCESS 表示调用成功;非 SUCCESS 表示调用失败。

1.2数字签名

1.2.1签名原始串

无论是请求还是应答,签名原始串按以下方式组装成字符串:

举例: 调用某个接口,接口有如下字段:

<xml>
  <body><![CDATA[测试支付]]></body>
  <mch_create_ip><![CDATA[127.0.0.1]]></mch_create_ip>
  <mch_id><![CDATA[001075552110006]]></mch_id>
  <nonce_str><![CDATA[1409196838]]></nonce_str>
  <notify_url><![CDATA[http://227.0.0.1:9001/javak/sds?123&23=3]]></notify_url>
  <out_trade_no><![CDATA[141903606228]]></out_trade_no>
  <service><![CDATA[pay.weixin.jspay]]></service>
  <sign><![CDATA[83684D9546F261997EFF2ECFAC372583]]></sign>
  <total_fee><![CDATA[1]]></total_fee>
</xml>

正确的签名字段排序为:

body=测试支付&mch_create_ip=127.0.0.1&
mch_id=001075552110006&nonce_str=1409196838&
notify_url=http://227.0.0.1:9001/javak/sds?123&23=3&
out_trade_no=141903606228&service=pay.weixin.jspay&total_fee=1

1.2.2 签名算法

目前暂只支持 MD5 签名

签名交易工具

MD5 签名

MD5 是一种摘要生成算法,通过在签名原始串后加上商户通信密钥的内容,进行 MD5 运算,形成的摘要字符串即为签名结果。为了方便比较,签名结果统一转换为大写字符。

注意:签名时将字符串转化成字节流时指定的编码字符集应与参数 charset 一致。

MD5 签名计算公式:

sign = Md5(原字符串&key=商户密钥).toUpperCase

假设以下为 XML 传入参数:

<xml>
  <body><![CDATA[测试支付]]></body>
  <mch_create_ip><![CDATA[127.0.0.1]]></mch_create_ip>
  <mch_id><![CDATA[001075552110006]]></mch_id>
  <nonce_str><![CDATA[1409196838]]></nonce_str>
  <notify_url><![CDATA[http://227.0.0.1:9001/javak/sds?123&23=3]]></notify_url>
  <out_trade_no><![CDATA[141903606228]]></out_trade_no>
  <service><![CDATA[pay.weixin.jspay]]></service>
  <sign><![CDATA[2CE21B763658760DFD0758360C8054C7]]></sign>
  <total_fee><![CDATA[1]]></total_fee>
</xml>

假设商户密钥为:

e1cf0ddcf6b47b59c351565d8ad717af

i:经过 a 过程 URL 键值对字典序排序后的字符串 string1 为:

body=测试支付&mch_create_ip=127.0.0.1&
mch_id=001075552110006&nonce_str=1409196838&
notify_url =http://227.0.0.1:9001/javak/sds?123&23=3&
out_trade_no=141903606228&service=pay.weixin.scancode&total_fee=1

ii:经过 b 过程后得到 sign 为:

sign=md5("#{string1}&key=e1cf0ddcf6b47b59c351565d8ad717af").toUpperCase

=> md5("body=测试支付&mch_create_ip=127.0.0.1&mch_id=001075552110006&
nonce_str=1409196838&notify_url=http://227.0.0.1:9001/javak/sds?123&23=3&
out_trade_no=141903606228&service=pay.weixin.jspay&total_fee=1&
key=e1cf0ddcf6b47b59c351565d8ad717af"
).toUpperCase()

=> "2CE21B763658760DFD0758360C8054C7"

1.3 获取微信用户的openid

https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_4

1.4 测试环境

1.ULINE测试环境与正式环境数据不互通,如需测试环境参数请联系ULINE商务人员。

2.获取测试开发商户号以及秘钥,请联系ULINE技术对接人员 - 测试开发环境发生的交易为真实交易 - 测试环境无结算功能,请尽量在当天进行交易退款,否则第二天可能会导致无法退款

3.ULINE测试环境不支持微信公众号支付,微信公众号支付(如不需此支付方式,可跳过)请通知商户预先申请微信服务号,并通过微信认证,确保认证实体与提交到银行的商户资料一致。并提交<微信公众号支付设置申请表>

1.5 注意事项

  1. 所有涉及到金额的单位都是分,最小的单位是 1 分,不能有小数出现

  2. notify_url 是UChang服务器从后台直接发起请求到商户服务器,商户处理时不能检查用户的 cookie 或 session;

    商户更新 DB 等发货流程需要在 notify_url 完成后,以确保掉单时,UChang补单能成功补上

  3. notify_url 有可能重复通知,商户需要做去重处理,避免多次发货

  4. notify_url 收到的通知,商户处理成功或检查订单已经处理,需要返回处理成功的标志“success”,以告知UChang不再通知

  5. 其它注意事项

    1. 参数大小写问题;请留意文档中要求的字符大小写问题, 如 “md5 运算后, 字符串的字符要转换为大写” 。
    2. 参数格式问题;所有传入参数,均为字符串类型,请注意文档中各处的具体要求。
    3. 时间戳问题;请使用 Linux 时间戳,注意为字符串格式。精确到秒,不需要到毫秒,即 10 位数字。
    4. 同一商户订单号支付问题;商户的 out_trade_no 必须全局唯一。

注意:当商户的同一个商户号绑定了多种支付方式也需要加标识来区分,不能出现重复。当发起支付返回失败时,一定要用原订单的 out_trade_no 而不能重新生成新的订单号发起支付,避免同一单重复支付。

ULINE Weixin微信支付接口

2.1下单接口

2.1.1业务功能

下单

2.1.2交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

2.1.3请求参数列表

请求 url:/wechat/orders
请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <mch_id>100010</mch_id>
   <total_fee>10</total_fee>
   <out_trade_no>5812281</out_trade_no>
   <body>BODY unif 支付测试</body>
   <attach>ATTACH unif 订单额外描述</attach>
   <detail>DETAIL unif 刷卡支付测试</detail>
   <spbill_create_ip>127.0.0.1</spbill_create_ip>
   <notify_url>http://127.0.0.1:3001/pay_notify/wechat_notify</notify_url>
   <nonce_str>e40534ec4a8d493b9759f105c2df8c3c</nonce_str>
   <trade_type>NATIVE</trade_type>
   <sign>F68C75279E86B7EB8C0722D4AA314549</sign>
</xml>

成功返回示例

<xml>
  <return_code>SUCCESS</return_code>
  <return_msg>OK</return_msg>
  <result_code>SUCCESS</result_code>
  <mch_id>100010</mch_id>
  <nonce_str>AuBW53Js00QB9aS7</nonce_str>
  <sign>1B09E3D0E547665F807CAD8B1D556D4B</sign>
  <out_trade_no>5812281</out_trade_no>
  <code_url>weixin://wxpay/bizpayurl?pr=LLN0u7P</code_url>
  <prepay_id>wx20161214221028392ab45f510474991331</prepay_id>
  <trade_type>NATIVE</trade_type>
</xml>

失败返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <return_code>FAIL</return_code>
   <return_msg>JSAPI支付必须传入openid或sub_openid</return_msg>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
sub_appid String(32) 商户微信公众号appid,app支付时,为在微信开放平台上申请的APPID
device_info String(32) 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
body String(128) 商品描述
detail String(8192 ) 商品详细列表,使用Json格式,传输签名前请务必使用CDATA标签将JSON文本串保护起来。goods_detail 服务商必填 []:└ goods_id String 必填 32 商品的编号└ wxpay_goods_id String 可选 32 微信支付定义的统一商品编号└ goods_name String 必填 256 商品名称└ quantity Int 必填 商品数量└ price Int 必填 商品单价,单位为分└ goods_category String 可选 32 商品类目ID└ body String 可选 1000 商品描述信息
attach String(127) 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
out_trade_no String(32) 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
fee_type String(16) 符合ISO 4217标准的三位字母代码,默认人民币:CNY
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
spbill_create_ip String(16) APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
time_start String(14) 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010
time_expire String(14) 如上
goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
notify_url String(256) 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
trade_type String(16) 取值如下:JSAPI,NATIVE,APP,MWEB(H5支付)
product_id String(32) trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。
limit_pay String(32) no_credit–指定不能使用信用卡支付
sub_openid String(128) trade_type=JSAPI,此参数必传,用户在子商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。
wxapp String(32) true–小程序支付;此字段控制 js_prepay_info 的生成,为true时js_prepay_info返回小程序支付参数,否则返回公众号支付参数
scene_info String(256) trade_type=MWEB,此参数必传。WAP网站应用 {“h5_info”: {“type”:“Wap”,“wap_url”: “WAP网站URL地址”,“wap_name”: “WAP网站名”}},IOS移动应用 {“h5_info”: {“type”:“IOS”,“app_name”: “应用名”,“bundle_id”: “包名”}},安卓移动应用 {“h5_info”: {“type”:“Android”,“app_name”: “应用名”,“package_name”: “包名”}}。H5支付建议只在Wap场景上使用。
payment_code String(32) 支付通道代码, 详见下文

支付通道代码:

变量名 说明
WX_OFFLINE_NATIVE 微信线下扫码支付
WX_OFFLINE_JSAPI 微信线下公众账号支付
WX_ONLINE_NATIVE 微信线上扫码支付
WX_ONLINE_JSAPI 微信线上公众账号支付
WX_ONLINE_APP 微信线上APP支付
WX_ONLINE_MWEB 微信线上H5支付
WX_DINE_NATIVE 微信围餐扫码支付
WX_DINE_JSAPI 微信围餐公众账号支付
WX_ZERO_NATIVE 微信零费率扫码支付
WX_ZERO_JSAPI 微信零费率公众账号支付
WX_ONE_NATIVE 微信千一扫码支付
WX_ONE_JSAPI 微信千一公众账号支付

2.1.4返回结果

变量名 必填 类型 示例值 描述
return_code String(16) SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 签名失败 返回信息,如非空,为错误原因 “签名失败” 参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

变量名 必填 类型 描述
mch_id String(32) 商户号,由UChang分配
sub_appid String(32) 商户微信appid
nonce_str String(32) 随机字符串,不长于 32 位
result_code String(16) 业务返回结果SUCCESS/FAIL
device_info String(32) 终端设备号
err_code String(32) 参考错误码
err_msg String (128) 结果信息描述
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在return_code 和result_code都为SUCCESS的时候有返回

js_prepay_info 示例

{
  "appId":     "wx4f6b85ba45bc67eb",
  "nonceStr":  "da39ddfea8ed90f7ceb9c1d2e55c907b",
  "package":   "prepay_id=wx201611111829211762eb12010427646906",
  "paySign":   "6FEE060302E7469E71E89C8BF4336342",
  "signType":  "MD5",
  "timeStamp": "20161111182921"
}

app_prepay_info 示例


{
    "appid": "wx8a888888888888", //app在微信开发平台的appid
    "noncestr": "03a93ef6c1e0bfa7ffca868edaa9b4f3",
    "package": "Sign=WXPay",
    "partnerid": "15048267",
    "paySign": "84B7342F16ED8C68901C5CD46AB0EC4B",
    "prepayid": "wx201702171654491dde933fd40046400912",
    "timestamp": "1487321689"
}
变量名 必填 类型 说明
trade_type String(16) 调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,WMWEB
prepay_id String(64) yc201410272009395522657a690389285100
code_url String(64) URl:weixin://wxpay/s/An4baqw
js_prepay_info String 当trade_type 为 JSAPI 时存在, 用于微信原生支付
app_prepay_info String 当trade_type 为 APP 时存在,用于APP调起微信支付,细节查看微信app支付文档
mweb_url String(64) trade_type=MWEB时返回,mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。

2.2小额支付接口

2.2.1业务功能

支付后直接提交到泓龙,定时清关

2.2.2交互模式

2.2.3请求参数列表

请求 url: /wechat/orders/micropay

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <total_fee>10</total_fee>
    <out_trade_no>2507613</out_trade_no>
    <auth_code>130150171702159891</auth_code>
    <device_info>1000</device_info>
    <body>BODY刷卡支付测试</body>
    <attach>ATTACH订单额外描述</attach>
    <detail>DETAIL刷卡支付测试</detail>
    <spbill_create_ip>14.17.22.52</spbill_create_ip>
    <nonce_str>abba192ccd034bdca65d29223db1cbe9</nonce_str>
    <sign>8D551DE78830997A1FEAA325278C512C</sign>
</xml>

成功返回示例

<xml>
    <mch_id>100010</mch_id>
    <device_info>1000</device_info>
    <openid>o4GgauJhDxX7uKw3Ah9Pgsr0XXSA</openid>
    <total_fee>1</total_fee>
    <fee_type>CNY</fee_type>
    <return_code>SUCCESS</return_code>
    <bank_type>CFT</bank_type>
    <transaction_id>1000101148172543500000017</transaction_id>
    <trade_state>SUCCESS</trade_state>
    <return_msg>OK</return_msg>
    <sign>1C227D46C440EC501C60B87BA4514633</sign>
    <result_code>SUCCESS</result_code>
    <is_subscribe>N</is_subscribe>
    <out_trade_no>6912455</out_trade_no>
    <cash_fee>1</cash_fee>
    <nonce_str>uuXse9FQKDOXn4We</nonce_str>
    <trade_type>MICROPAY</trade_type>
    <attach>ATTACH订单额外描述</attach>
    <time_end>20161214222404</time_end>
</xml>

失败返回示例

<xml>
    <nonce_str>fGXOc2UERrsVZDum</nonce_str>
    <sign>46D05A5F87A0CC1483174954DA9DCE6F</sign>
    <result_code>FAIL</result_code>
    <err_code>USERPAYING</err_code>
    <return_msg>OK</return_msg>
    <out_trade_no>2507613</out_trade_no>
    <mch_id>100010</mch_id>
    <err_code_des>需要用户输入支付密码</err_code_des>
    <return_code>SUCCESS</return_code>
    <device_info>1000</device_info>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) UCHANG支付分配的终端设备号
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
body String(127) 商品描述
detail String(256) 交易详情
attach String(128) 商户附加信息,可做扩展参数,255 字符内
out_trade_no String(32) 商户系统内部的订单号 ,32个字符内、 可包含字母,确保在商户系统唯一
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
fee_type String(16) 符合ISO 4217标准的三位字母代码,默认人民币:CNY
spbill_create_ip String(16) 订单生成的机器 IP
goods_tag String(32) 商品标记
auth_code String(128) 扫码支付授权码, 设备读取用户展示的条码或者二维码信息
limit_pay String(32) no_credit–指定不能使用信用卡支付
payment_code String(32) 支付通道代码, 详见下文

支付通道代码:

变量名 说明
WX_OFFLINE_MICROPAY 微信线下刷卡支付
WX_DINE_MICROPAY 微信围餐刷卡支付
WX_ZERO_MICROPAY 微信零费率刷卡支付
WX_ONE_MICROPAY 微信千一刷卡支付

2.2.4返回结果

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) UChang支付分配的终端设备号
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS/FAIL
err_code String(32) 具体错误码请看文档最后错误码列表
err_code_des String (128) 结果信息描述

当return_code 和result_code都为SUCCESS的时,还会包括以下字段

变量名 必填 类型 说明
sub_openid String(128) 用户在商户 appid 下的唯一标识
is_subscribe String(1) 用户是否关注公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
sub_is_subscribe String(1) 用户是否关注子公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
trade_type String(16) MICROPAY
detail String(6000) 实际提交的返回
bank_type String(16) 银行类型
fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
settlement_total_fee Int 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
coupon_fee Int 现金券支付金额<=订单总金额, 订单总金额-现金券金额为现金支付金额
cash_fee_type String(16) 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见
cash_fee Int 订单现金支付金额
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
attach String(128) 商家数据包,原样返回
time_end String(14) 支付完成时间,格式为 yyyyMMddhhmmss,如2009 年 12 月 27 日 9 点 10 分 10 秒表示为20091227091010。时区为 GMT+8 beijing。该时间取自UChang服务器
out_transaction_id String(32) 微信交易号

2.3关闭订单

2.3.1业务功能

以下情况需要调用关单接口:商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。

2.3.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

2.3.3 参数请求列表

请求URL:/wechat/orders/close

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>147480</out_trade_no>
    <nonce_str>af3ca480f61846a1a192613519e24376</nonce_str>
    <sign>BF7408242736E14F4811C74A7FC24D60</sign>
</xml>

成功返回示例

<xml>
    <nonce_str>gF3FQKUWQN3CgGOq</nonce_str>
    <sign>693C8C45BF933CD6869D9B4B6903A7A7</sign>
    <result_code>SUCCESS</result_code>
    <return_code>SUCCESS</return_code>
    <return_msg>OK</return_msg>
    <mch_id>100010</mch_id>
</xml>

失败返回示例

<xml>
    <mch_id>100010</mch_id>
    <nonce_str>YalRxVWOlPyOa4Jq</nonce_str>
    <sign>2948FD5731C82C67534CD5688FC0E2DB</sign>
    <err_code>ORDERPAID</err_code>
    <err_code_des>order paid</err_code_des>
    <return_code>SUCCESS</return_code>
    <result_code>FAIL</result_code>
    <return_msg>OK</return_msg>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号
sub_appid String(32) 公众账号ID
out_trade_no String(32) 商户系统内部的订单号
nonce_str String(32) 随机字符串
sign String(32) 签名

5.3.4 返回结果

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) SUCCESS/FAIL
return_msg String(16) 返回信息,如非空,为错误原因;签名失败;参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号
nonce_str String(32) 随机字符串,不长于32位
sign String(32) 签名
result_code String(16) 业务返回结果SUCCESS/FAIL
err_code String(32) 详细参见错误描述
err_code_des String(128) 结果信息描述

2.4 冲正接口

2.4.1 业务功能

支付交易返回失败或支付系统超时,调用该接口撤销交易。如果此订单用户支付失败,微信支付系统会将此订单关闭;如果用户支付成功,微信支付系统会将此订单资金退还给用户。

2.4.2 交互模式

请求:后台请求交互模式

2.4.3 请求参数列表

请求 url: /wechat/orders/reverse

请求示例

<xml>
    <mch_id>100010</mch_id>
    <nonce_str>d86fb6034ee143c6964ba723bdb80df8</nonce_str>
    <out_trade_no>6912455</out_trade_no>
    <sign>908C0185FE76067F8B1AB0D09BA8C242</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
sub_appid String(32) 微信分配的子商户公众账号ID
transaction_id String(32) UCHANG订单号,优先使用
out_trade_no String(32) 商户系统内部的订单号 ,32 个字符内、可包含字母,确保在商户系统唯一
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

2.4.4 返回结果

数据按 XML 的格式实时返回

成功返回示例

<xml>
    <return_msg>OK</return_msg>
    <nonce_str>EFJCuYgkQY1aKgiy</nonce_str>
    <result_code>SUCCESS</result_code>
    <sign>DC449FF7869A8BBFEB075E797BEC3C1C</sign>
    <recall>N</recall>
    <return_code>SUCCESS</return_code>
    <mch_id>100010</mch_id>
</xml>

失败返回结果

<xml>
    <return_msg>OK</return_msg>
    <mch_id>100010</mch_id>
    <nonce_str>oUS5MI0QYDA5IQ0G</nonce_str>
    <sign>567F4CF3BBB6D842D1588DF2E2661F6B</sign>
    <err_code>ERROR</err_code>
    <return_code>SUCCESS</return_code>
    <result_code>FAIL</result_code>
    <err_code_des>不是刷卡支付不允许使用撤销接口</err_code_des>
    <recall>Y</recall>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码,SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
sub_appid String(32) 商户ID,由微信分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败; SUCCESS 表示关单成功, 此笔订单不能再发起支付;若已支付完成,则会发起退款; FAIL 或其它表示关单接口异常,可再次发起关单操作;
err_code String(32) 具体错误码请看文档最后错误码列表
err_code_des String (128) 结果信息描述
recall String(1) 是否需要继续调用撤销,Y-需要,N-不需要

2.5支付通知接口

后台通知通过请求中的 notify_url 进行, post

2.5.1 通知结果参数列表

推荐的做法是, 当收到通知进行处理时, 首先检查对应业务数据的状态, 判断该通 知是否已经处理过, 如果没有处理过再进行处理, 如果处理过直接返回结果成功。 在对业务 数据进行状态检查和处理之前, 要采用数据锁进行并发控制, 以避免函数重入造成的数据混 乱。

ULINE后台通过 notify_url 通知商户,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:

示例数据

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <nonce_str>32b9555857e354ad9a77a7de7f4df25e</nonce_str>
    <transaction_id>1000101148172777900000020</transaction_id>
    <fee_type>CNY</fee_type>
    <openid>o4GgauJhDxX7uKw3Ah9Pgsr0XXSA</openid>
    <total_fee>10</total_fee>
    <cash_fee>10</cash_fee>
    <attach>ATTACH unif 测试</attach>
    <is_subscribe>N</is_subscribe>
    <bank_type>CFT</bank_type>
    <time_end>20161214230320</time_end>
    <out_trade_no>7009386</out_trade_no>
    <trade_type>NATIVE</trade_type>
    <sign>F054CEEE05A48D0CFE04B9CF4CE07295</sign>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
sub_appid String(32) 微信分配的账号ID
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述
device_info String(32) UCHANG分配的终端设备号
sub_openid String(128) 用户在商户的唯一标识
is_subscribe String(1) 用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
sub_is_subscribe String(1) 用户是否关注子公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
attach String(128) 商家数据包,原样返回
time_end String(14) 支付完成时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自UChang服务器
trade_type String(16) 交易类型, JSAPI MICROPAY
bank_type String(16) 银行类型
total_fee Int 总金额,以分为单位,不允许包含任何字、 符号
fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
cash_fee Int 现金支付金额订单现金支付金额
cash_fee_type String(16) 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
coupon_fee Int 现金券支付金额<=订单总金额, 订单总金额 -现金券金额为现金支付金额
coupon_count Int 代金券或立减优惠使用数量
coupon_batch_id_\$n String(20) 代金券或立减优惠批次ID ,$n为下标,从1开始编号
coupon_id_\$n String(20) 代金券或立减优惠ID, $n为下标,从1开始编号
out_transaction_id String(32) 微信交易号

2.5.2 后台通知结果反馈

商户处理后同步返回给ULINE参数:

返回示例

<xml>
  <return_code>SUCCESS</return_code>
</xml>
变量名 必填 类型 示例 说明
return_code String(16) 返回状态码, SUCCESS SUCCESS/FAIL SUCCESS表示商户接收通知成功并校验成功
return_msg String(128) OK 返回信息,如非空,为错误原因: 签名失败 参数格式校验错误

2.6错误码

错误码 说明 类型
SYSTEMERROR 接口返回(系统)错误 微信
PARAM_ERROR 参数错误 微信
ORDERPAID 订单已支付 微信
NOAUTH 商户无权限 微信
AUTHCODEEXPIRE 二维码已过期,请用户在微信上刷新后再试 微信
NOTENOUGH 余额不足 微信
NOTSUPORTCARD 不支持卡类型 微信
ORDERCLOSED 订单已关闭 微信
ORDERREVERSED 订单已撤销 微信
BANKERROR 银行系统异常 微信
USERPAYING 用户支付中,需要输入密码 微信
AUTH_CODE_ERROR 授权码参数错误 微信
AUTH_CODE_INVALID 授权码检验错误 微信
XML_FORMAT_ERROR XML 格式错误 微信
REQUIRE_POST_METHOD 请使用 post 方法 微信
Signature error 签名错误 微信
LACK_PARAMS 缺少参数 微信
NOT_UTF8 编码格式错误 微信
BUYER_MISMATCH 支付帐号错误 微信
APPID_NOT_EXIST APPID 不存在 微信
MCHID_NOT_EXIST MCHID 不存在 微信
OUT_TRADE_NO_USED 商户订单号重复 微信
APPID_MCHID_NOT_MATCH appid 和 mch_id 不匹配 微信
ORDERNOTEXIST 此交易订单号不存在 微信

ULINE Weixin支付查询&退款接口

3.1 订单查询接口

3.1.1 业务功能

根据商户订单号或者UCHANG订单号查询UCHANG的具体订单信息。

3.1.2 交互模式

后台系统调用交互模式

3.1.3 请求参数列表

请求 url:/wechat/orders/query


请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>7009386</out_trade_no>
    <nonce_str>d4f774a374354a628e4e760d545489f8</nonce_str>
    <sign>F472D7440CC5E57C27B2ADD3B15E9BA6</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
transaction_id String(32) UCHANG交 易 号 , out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先。
out_trade_no String(32) 商户系统内部的订单号, out_trade_no 和 transaction_id 至少一个必填,同时存在时transaction_id 优先
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

3.1.4 返回结果

返回成功示例

<xml>
    <sign>6C055126B532BFBB6C394554D84A0CA7</sign>
    <openid>o4GgauJhDxX7uKw3Ah9Pgsr0XXSA</openid>
    <out_trade_no>7009386</out_trade_no>
    <trade_state>SUCCESS</trade_state>
    <return_msg>OK</return_msg>
    <result_code>SUCCESS</result_code>
    <attach>ATTACH unif 订单额外描述</attach>
    <time_end>20161214230320</time_end>
    <is_subscribe>N</is_subscribe>
    <trade_type>NATIVE</trade_type>
    <bank_type>CFT</bank_type>
    <total_fee>10</total_fee>
    <return_code>SUCCESS</return_code>
    <mch_id>100010</mch_id>
    <nonce_str>fKuVlQSp5nKjMSat</nonce_str>
    <fee_type>CNY</fee_type>
    <transaction_id>1000101148172777900000020</transaction_id>
    <cash_fee>10</cash_fee>
</xml>

detail 字段说明

商品详细列表,使用Json格式,传输签名前请务必使用CDATA标签将JSON文本串保护起来。
如果使用了单品优惠,会有单品优惠信息返回
discount_detail []:
└ goods_id String 必填 32 商品的编号
└ goods_name String 必填 256 商品名称
└ coupon_batch_id String 必填 代金券批次ID
└ coupon_id String 必填 代金卷ID
└ coupon_fee Int 必填 代金券支付金额,单位为分

detail 示例

{
    "discount_detail": [
        {
            "goods_id": "iphone6s_16G",
            "goods_name": "iPhone6s 16G",
            "coupon_batch_id": 888,
            "coupon_id": 666888,
            "coupon_fee": 1000
        },
        {
            "goods_id": "iphone6s_32G",
            "goods_name": "iPhone6s 32G",
            "coupon_batch_id": 999,
            "coupon_id": 666999,
            "coupon_fee": 1500
        }
    ]
}

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
device_info String(32) UCHANG分配的终端设备号
sub_openid String(128) 用户在商户的唯一标识
is_subscribe String(1) 用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
sub_is_subscribe String(1) 用户是否关注子公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
trade_type String(16) 交易类型, JSAPI MICROPAY
trade_state String(32) SUCCESS—支付成功
REFUND—转入退款
NOTPAY—未支付
CLOSED—已关闭
REVERSE—已冲正
REVOKED—已撤销
USERPAYING—用户支付中
PAYERROR–支付失败(其他原因,如银行返回失败)
bank_type String(16) 银行类型
detail String(8192) 商品详细列表
total_fee Int 总金额,以分为单位,不允许包含任何字、 符号
fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
cash_fee Int 现金支付金额订单现金支付金额
cash_fee_type String(16) 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
coupon_fee Int 现金券支付金额<=订单总金额, 订单总金额 -现金券金额为现金支付金额
coupon_count Int 代金券或立减优惠使用数量
coupon_batch_id_\$n String(20) 代金券或立减优惠批次ID ,$n为下标,从1开始编号
coupon_id_\$n String(20) 代金券或立减优惠ID, $n为下标,从1开始编号
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
attach String(128) 商家数据包,原样返回
time_end String(14) 支付完成时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自UChang服务器
trade_state_desc String(256) 对当前查询订单状态的描述和下一步操作的指引

3.2退款接口

3.2.1业务功能

商户针对某一个已经成功支付的订单发起退款,操作结果在同一会话中同步返回。

同一笔单的部分退款需要设置相同的订单号和不同的 out_refund_no 。一笔退款失败后重新 交,要采用原来 的 out_refund_no。总退款金额不能超过用户实际支付金额(现金券金额不能退款)。

同一笔单的部分退款需要设置相同的订单号和不同的 out_refund_no 。一笔退款失败后重新 交,要采用原来 的 out_refund_no。总退款金额不能超过用户实际支付金额(现金券金额不能退款)

退款时,会检查当天商户的微信交易收益余额是否足够退款,如果充足则可以退款。如果商户今日收益不足,则退款报错,需要等该商户当日收益增加到足够退款后,才能退款成功。

3.2.2 交互模式

后台系统调用交互模式

3.2.3 请求参数列表

请求url:/wechat/refunds

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>8231101</out_trade_no>
    <out_refund_no>82311011</out_refund_no>
    <transaction_id></transaction_id>
    <total_fee>10</total_fee>
    <refund_fee>10</refund_fee>
    <op_user_id>1404851802</op_user_id>
    <nonce_str>5510ea8c58824df8959c23017320fdd4</nonce_str>
    <sign>B92F50500933E7C8C260217B7B9A7776</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UChang分配
device_info String(32) 终端设备号
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
transaction_id String(32) UChang单号, out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_trade_no String(32) 商 户 系 统 内 部 的 订 单 号 , out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。同个退款单号多次请求,UChang当一个单处理,只会退一次款。如果出现退款不成功,请采用原退款单号重新发起,避免出现重复退款。
total_fee Int 订单总金额,单位为分
refund_fee Int 退款总金额,单位为分,可以做部分退款
refund_fee_type String(8) 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
op_user_id String(32) 操作员帐号,默认为商户号

3.2.4 返回结果

数据按 XML 的格式实时返回

返回示例

<xml>
    <refund_fee>10</refund_fee>
    <total_fee>10</total_fee>
    <cash_fee>10</cash_fee>
    <coupon_refund_count>0</coupon_refund_count>
    <return_code>SUCCESS</return_code>
    <transaction_id>1000101148172757500000019</transaction_id>
    <out_trade_no>8231101</out_trade_no>
    <out_refund_no>82311011</out_refund_no>
    <refund_id>1000102148172773500000001</refund_id>
    <mch_id>100010</mch_id>
    <nonce_str>LciljA23wHgR8HU0</nonce_str>
    <result_code>SUCCESS</result_code>
    <sign>18CF4FCC48F771A5FFA7251CAA6EE3F7</sign>
    <refund_channel></refund_channel>
    <coupon_refund_fee>0</coupon_refund_fee>
    <cash_refund_fee>10</cash_refund_fee>
    <return_msg>OK</return_msg>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易 标识,交易是否成功需要查 看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
result_code String(16) SUCCESS 表示成功非 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String(128) 结果信息描述
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) UCHANG支付分配的终端设备号
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
transaction_id String(28) UCHANG 订单号
out_trade_no String(32) 商户订单号
out_refund_no String(32) 商户退款单号
refund_id String(28) ULINE退款单号
refund_channel String(16) 退款渠道, ORIGINAL—原路退款 BALANCE—退回到余额
refund_fee Int 退款总金额,单位为分,可以做部分退款
total_fee Int 订单总金额,单位为分,只能为整数
fee_type String(8) 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
cash_fee int 现金支付金额,单位为分,只能为整数
cash_refund_fee int 现金退款金额,单位为分,只能为整数
coupon_type_\$n String(8) CASH–充值代金券 NO_CASH—非充值代金券 订单使用代金券时有返回(取值:CASH、NO_CASH)。\$n为下标,从0开始编号,举例coupon_type_0
coupon_refund_fee_\$n int 代金券退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金
coupon_refund_count_\$n int 退款代金券使用数量 ,\$n为下标,从0开始编号
coupon_refund_batch_id_$n_$m String(20) 退款代金券批次ID ,\$n为下标,\$m为下标,从0开始编号
coupon_refund_id_\$n_\$m String(20) 退款代金券ID, \$n为下标,\$m为下标,从0开始编号
coupon_refund_fee_\$n_\$m int 单个退款代金券支付金额, \$n为下标,\$m为下标,从0开始编号

3.3 退款查询接口

交退款申请后, 通过调用该接口查询退款状态。 退款有一定延时, 请在 3 个工作日后重新查询退款状态。

3.3.1 请求参数列表

请求url:/wechat/refunds/query

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>8231101</out_trade_no>
    <transaction_id></transaction_id>
    <refund_id></refund_id>
    <out_refund_no></out_refund_no>
    <nonce_str>bef23744a71b4bbc8e34836ecb1880df</nonce_str>
    <sign>408ED80889F9585BBBB525EF1F602F85</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) 商户自定义的终端设备号,如门店编号、设备的ID等
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
transaction_id String(32) UCHANG单号, out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_trade_no String(32) 商 户 系 统 内 部 的 订 单 号 , out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。
refund_id String(32) UChang退款单号 refund_id、out_refund_no、 out_trade_no 、 transaction_id 四个参数必填一个, 如果同事存在优先级为: refund_id>out_refund_no>t ransaction_id>out_trade_no

3.3.2 返回结果

数据按 XML 的格式实时返回

返回示例

<xml>
    <refund_id_0>1000102148172773500000001</refund_id_0>
    <total_fee>10</total_fee>
    <return_code>SUCCESS</return_code>
    <return_msg>OK</return_msg>
    <sign>5687A1087FF9F35F6FAE91CC905A4AD9</sign>
    <mch_id>100010</mch_id>
    <nonce_str>vlWU4yN65eB1HFRQ</nonce_str>
    <refund_channel_0>ORIGINAL</refund_channel_0>
    <refund_count>1</refund_count>
    <refund_status_0>SUCCESS</refund_status_0>
    <out_trade_no>8231101</out_trade_no>
    <refund_fee>10</refund_fee>
    <refund_recv_accout_0>支付用户的零钱</refund_recv_accout_0>
    <cash_fee>10</cash_fee>
    <out_refund_no_0>82311011</out_refund_no_0>
    <refund_fee_0>10</refund_fee_0>
    <result_code>SUCCESS</result_code>
    <transaction_id>1000101148172757500000019</transaction_id>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

refund_status_$n 退款状态说明

SUCCESS—退款成功
FAIL—退款失败
PROCESSING—退款处理中
CHANGE—转入代发
退款到银行发现用户的卡作废或者冻结了
导致原路退款银行卡失败,资金回流到商户的现金帐号
需要商户人工干预,通过线下或者财付通转账的方式进行退款。
变量名 必填 类型 说明
result_code String(16) 业务结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 错误代码,参考错误码
err_code_des String(128) 错误代码描述
mch_id String(32) 商户号
device_info String(32) 设备号
nonce_str String(32) 随机字符串
sign String(32) 签名
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的订单号
out_refund_no String(32) 商户退款单号
refund_id String(32) UCHANG退款单号
refund_channel String(16) ORIGINAL—原路退款, BALANCE—退回到余额
refund_fee Int 退款总金额,单位为分,可以做部分退款
total_fee int 订单总金额,单位为分,只能为整数
fee_type String(8) 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
cash_fee int 现金支付金额,单位为分,只能为整数
cash_refund_fee Int 现金退款金额,单位为分,只能为整数
coupon_refund_fee_\$n Int 现金券退款金额 <= 退款金额, 退款金额-现金券退款金额为现金额
coupon_refund_count_$n int 退款代金券使用数量 ,\$n为下标,从0开始编号
coupon_refund_batch_id_\$n_\$m String(20) 退款代金券批次ID ,$n为下标,$m为下标,从0开始编号
refund_count Int 退款记录数
coupon_refund_id_\$n_\$m String(20) 退款代金券ID, \$n为下标,\$m为下标,从0开始编号
coupon_refund_fee_\$n_\$m int 单个退款代金券支付金额, \$n为下标,\$m为下标,从0开始编号
refund_status_\$n String(32) 退款状态

ULINE Alipay支付接口文档


4.1支付宝刷卡支付

刷卡支付是支付宝给到线下传统行业的一种收款方式。商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款。用户仅需出示付款码,所有收款操作由商家端完成。

流程图

Micorpay flow

使用步骤:

Micropay uflow

4.1.1 业务功能

收银员使用扫码设备读取用户手机支付宝“付款码”/声波获取设备(如麦克风)读取用户手机支付宝的声波信息后,将二维码或条码信息/声波信息通过本接口上送至支付宝发起支付。

4.1.2交互模式

注意:

4.1.3请求参数列表

请求 url:/alipay/orders/micropay


请求示例

<xml>
    <mch_id>100010</mch_id>
    <nonce_str>8b4a90e9d1a14338a4e0b6381c8cdfd4</nonce_str>
    <sign>98AE2BD7A7EC154C329CE5805925B745</sign>
    <total_fee>1</total_fee>
    <out_trade_no>173060180</out_trade_no>
    <body>test qrcode pay</body>
    <auth_code>289245045373431103</auth_code>
    <scene>bar_code</scene>
    <spbill_create_ip>127.0.0.1</spbill_create_ip>
    <notify_url>http://127.0.0.1:3000/pay_notify/wechat_notify</notify_url>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
notify_url String(256) 接收ULINE支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
device_info String(32) 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
out_trade_no String(32) 商户系统内部的订单号 ,32个字符内、 可包含字母,确保在商户系统唯一
body String(128) 订单标题
detail String(128) 订单描述
attach String(128) 商家数据包
timeout_express String(6) 该笔订单允许的最晚付款时间,逾期将关闭交易。
取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。
该参数数值不接受小数点, 如 1.5h,可转换为 90m
auth_code String(128) 扫码支付授权码, 设备读取用户展示的条码或者二维码信息
scene String(32) 支付场景 条码支付,取值:bar_code; 声波支付,取值:wave_code
spbill_create_ip String(16) APP和网页支付提交用户端ip,Native支付填调用支付API的机器IP。
limit_pay String(32) 禁止用户使用的支付渠道,多个渠道时使用",“分隔。pcredit花呗,pcreditpayInstallment花呗分期,creditCard信用卡,creditCardExpress信用卡快捷,creditCardCartoon信用卡卡通,credit_group信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期),point积分,voucher营销券,promotion优惠(包含实时优惠+商户优惠)。
payment_code String(32) 支付通道代码, 详见下文

支付通道代码:

变量名 说明
ALI_OFFLINE_MICROPAY 支付宝线下刷卡支付
ALI_ZERO_MICROPAY 支付宝零费率刷卡支付

4.1.4返回结果

返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <out_trade_no>173060180</out_trade_no>
    <transaction_id>1000101148178759400000018</transaction_id>
    <out_transaction_id>2016121521001004640285305788</out_transaction_id>
    <total_fee>1</total_fee>
    <openid>hao***@126.com</openid>
    <trade_type>MICROPAY</trade_type>
    <time_end>20161216132403</time_end>
    <nonce_str>84ce9465308e06a56b3ede5aec61301c</nonce_str>
    <sign>FBC15DA00DD48AAC2C98F26C978A381E</sign>
</xml>

等待用户付款返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>FAIL</result_code>
    <err_code>USERPAYING</err_code>
    <err_message>等待用户付款</err_message>
    <mch_id>100010</mch_id>
    <nonce_str>11aa7875ae96d90d308555b818b68554</nonce_str>
    <sign>D46B4C9EAE30F241C8B2A237D0D0D7C4</sign>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) 业务返回结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
out_trade_no String(32) 商户系统内部的订单号
out_transaction_id String(32) 支付宝交易号
transaction_id String(32) UCHANG交易号。
total_fee Int 总金额,以分为单位,不允许包含任何字、 符号
openid String(128) 用户支付宝的账户名
trade_type String(16) 交易类型,MICROPAY
time_end String(14) 支付完成时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自支付宝服务器
attach String(128) 商家数据包

4.2支付宝JSAPI支付

4.2.1业务功能

创建订单+JSAPI唤起收银台支付

4.2.2交互模式

4.2.3请求参数列表

请求 url:/alipay/orders/create


请求示例

<xml>
    <mch_id>100010</mch_id>
    <body>test qrcode pay</body>
    <total_fee>1</total_fee>
    <buyer_id>2088002197810644</buyer_id>
    <spbill_create_ip>127.0.0.1</spbill_create_ip>
    <notify_url>http://127.0.0.1:3000/pay_notify/wechat_notify</notify_url>
    <out_trade_no>438069205</out_trade_no>
    <nonce_str>53937a224ff6476d9cd14bd92386bb16</nonce_str>
    <sign>CEC4F2F25AFE65DD92ABA4B56B646E9F</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
notify_url String(256) 接收ULINE支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
device_info String(32) 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB”
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
out_trade_no String(32) 商户系统内部的订单号 ,32个字符内、 可包含字母,确保在商户系统唯一
body String(128) 订单标题
detail String(128) 订单描述
attach String(128) 商家数据包
timeout_express String(6) 该笔订单允许的最晚付款时间,逾期将关闭交易。
取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。
该参数数值不接受小数点, 如 1.5h,可转换为 90m
spbill_create_ip String(16) APP和网页支付提交用户端ip,Native支付填调用支付API的机器IP。
buyer_id String(28) 买家的支付宝唯一用户号(2088开头的16位纯数字),和buyer_logon_id不能同时为空
buyer_logon_id String(100) 买家支付宝账号,和buyer_id不能同时为空
limit_pay String(32) 禁止用户使用的支付渠道,多个渠道时使用",“分隔。pcredit花呗,pcreditpayInstallment花呗分期,creditCard信用卡,creditCardExpress信用卡快捷,creditCardCartoon信用卡卡通,credit_group信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期),point积分,voucher营销券,promotion优惠(包含实时优惠+商户优惠)。
payment_code String(32) 支付通道代码, 详见下文

支付通道代码:

变量名 说明
ALI_OFFLINE_JSAPI 支付宝线下JS支付
ALI_ZERO_JSAPI 支付宝零费率公众号支付

4.2.4返回结果

返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <nonce_str>6c6810f3cb404f38bdb28e139e716885</nonce_str>
    <sign>5D553F64CEF6AAFF12BFEC1559DED3C1</sign>
    <js_prepay_info>{"trade_no":"2016121521001004640285487929"}</js_prepay_info>
    <out_trade_no>438069205</out_trade_no>
</xml>

自行唤起支付JS收银台步骤

// 通过传入交易号唤起快捷调用方式(注意tradeNO大小写严格)
// 调用示例,首先监听AlipayJSBridgeReady事件
document.addEventListener('AlipayJSBridgeReady', function () {
  $("#payLogButton").click(function () {
    AlipayJSBridge.call("tradePay", {
      tradeNO: "2016072621001004200000000752"
    }, function (result) {
      console.log(JSON.stringify(result));
    });
  });
}, false);

Alipay jsapi

变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) 业务返回结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
js_prepay_info String(32) JSON 字符串,自行唤起支付宝钱包支付
out_trade_no String (128) 商户订单号

4.3支付宝扫码支付

扫码支付,指用户打开支付宝钱包中的“扫一扫”功能,扫描商家展示在某收银场景下的二维码并进行支付的模式。该模式适用于线下实体店支付、面对面支付等场景。

业务流程

Native flow

使用步骤:

Native uflow

4.3.1业务功能

收银员通过收银台或商户后台调用支付宝接口,生成二维码后,展示给用户,由用户扫描二维码完成订单支付。

4.3.2交互模式

4.3.3请求参数列表

请求 url:/alipay/orders/precreate


请求示例

<xml>
    <mch_id>100010</mch_id>
    <body>test qrcode pay</body>
    <spbill_create_ip>127.0.0.1</spbill_create_ip>
    <notify_url>http://127.0.0.1:3000/pay_notify/wechat_notify</notify_url>
    <out_trade_no>36807032</out_trade_no>
    <total_fee>1</total_fee>
    <nonce_str>613cc878bfa8432f85ea85f795ca4028</nonce_str>
    <sign>23F57BE8570152EE4641AD9479D365BA</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
notify_url String(256) 接收ULINE支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
device_info String(32) 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB”
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
out_trade_no String(32) 商户系统内部的订单号 ,32个字符内、 可包含字母,确保在商户系统唯一
body String(128) 订单标题
detail String(128) 订单描述
timeout_express String(6) 该笔订单允许的最晚付款时间,逾期将关闭交易。
取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。
该参数数值不接受小数点, 如 1.5h,可转换为 90m
spbill_create_ip String(16) APP和网页支付提交用户端ip,Native支付填调用支付API的机器IP。
limit_pay String(32) 禁止用户使用的支付渠道,多个渠道时使用",“分隔。pcredit花呗,pcreditpayInstallment花呗分期,creditCard信用卡,creditCardExpress信用卡快捷,creditCardCartoon信用卡卡通,credit_group信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期),point积分,voucher营销券,promotion优惠(包含实时优惠+商户优惠)。
payment_code String(32) 支付通道代码, 详见下文

支付通道代码:

变量名 说明
ALI_OFFLINE_NATIVE 支付宝线下扫码支付
ALI_ZERO_NATIVE 支付宝零费率扫码支付

4.3.4返回结果

返回示例

<xml>
    <mch_id>100010</mch_id>
    <nonce_str>ace6fde8013bd50cc1488f8d9df3f115</nonce_str>
    <sign>96A61EDA193A32716B32870353340147</sign>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <out_trade_no>36807032</out_trade_no>
    <qr_code>https://qr.alipay.com/bax07373idjoaqyvma3r404c</qr_code>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) 业务返回结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
qr_code String(32) 此参数可直接生成二维码展示出来进行扫码支付
out_trade_no String (128) 商户订单号

4.4关闭订单

4.4.1业务功能

用于交易创建后,用户在一定时间内未进行支付,可调用该接口直接将未付款的交易进行关闭。

4.4.2交互模式

4.4.3请求参数列表

请求 url:/alipay/orders/close


POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>916149809</out_trade_no>
    <nonce_str>67871caba34147a692883fb70213bc44</nonce_str>
    <sign>635923028A3257323B4809EB77924042</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
out_trade_no String(32) 商户系统内部的订单号

4.4.4返回结果

返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <nonce_str>286c90b1a89ca7e8eedf950b7b10b5ce</nonce_str>
    <sign>47C0EA198A21B68596C7A1104F5C861E</sign>
    <mch_id>100010</mch_id>
    <out_trade_no>894191239</out_trade_no>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) 业务返回结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述
out_trade_no String(32) 商户系统内部的订单号

4.5撤销订单

4.5.1业务功能

注意:

只有发生支付系统超时或者支付结果未知时可调用撤销,其他正常支付的单如需实现相同功能请调用申请退款API。 提交刷卡支付交易后调用【查询订单API】,没有明确的支付结果再调用【撤销订单API】。

4.5.2交互模式

4.5.3请求参数列表

请求 url:/alipay/orders/cancel


POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>894191239</out_trade_no>
    <nonce_str>256a6d75a9754fc1934fd237dd23b7c3</nonce_str>
    <sign>576B406D301A6D16B48776017BA7168A</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
out_trade_no String(32) 商户系统内部的订单号

4.5.4返回结果

返回示例

<xml>
    <result_code>SUCCESS</result_code>
    <return_code>SUCCESS</return_code>
    <mch_id>100010</mch_id>
    <out_trade_no>894191239</out_trade_no>
    <retry_flag>N</retry_flag>
    <nonce_str>b3507a7968288ab4f6dd14feda4fc033</nonce_str>
    <sign>A59C5B210D77A259B84F2E6192919B3C</sign>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) 业务返回结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述
out_trade_no String(32) 商户系统内部的订单号
retry_flag String(1) 是否需要重试
N 不需要
Y 需要

4.6ULINE支付宝订单通知接口说明

后台通知通过请求中的 notify_url 进行 post

4.6.1 通知结果参数列表

推荐的做法是, 当收到通知进行处理时, 首先检查对应业务数据的状态, 判断该通 知是否已经处理过, 如果没有处理过再进行处理, 如果处理过直接返回结果成功。 在对业务 数据进行状态检查和处理之前, 要采用数据锁进行并发控制, 以避免函数重入造成的数据混 乱。

ULINE后台通过 notify_url 通知商户,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:

通知示例

<xml>
    <openid>hao***@126.com</openid>
    <result_code>SUCCESS</result_code>
    <total_fee>1</total_fee>
    <time_end>20161215174016</time_end>
    <out_trade_no>110613094</out_trade_no>
    <return_code>SUCCESS</return_code>
    <trade_type>MICROPAY</trade_type>
    <mch_id>100010</mch_id>
    <out_transaction_id>2016121521001004640285469750</out_transaction_id>
    <trade_state>TRADE_SUCCESS</trade_state>
    <transaction_id>1000101148179481500000023</transaction_id>
    <cash_fee>1</cash_fee>
    <nonce_str>ce5080364213a0ea11d5bb7fd8fb44fb</nonce_str>
    <sign>416B478AABC0DAC7486E838B1E8436D1</sign>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) 业务返回结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
device_info String(32) UCHANG分配的终端设备号
out_trade_no String(32) 商户系统内部的订单号
out_transaction_id String(32) 对应支付宝交易记录账单详情中的交易号
transaction_id String(32) UCHANG交易号。
total_fee Int 总金额,以分为单位,不允许包含任何字、 符号
openid String(128) 用户支付宝的账户名
attach String(128) 商家数据包
trade_type String(16) 交易类型
MICROPAY 支付宝刷卡支付
JSAPI 支付宝JS支付
NATIVE 支付宝二维码支付
trade_state String(16) 交易状态
WAIT_BUYER_PAY 交易创建,等待买家付款
TRADE_CLOSED 未付款交易超时关闭,或支付完成后全额退款
TRADE_SUCCESS 交易支付成功
TRADE_FINISHED 交易结束,不可退款
time_end String(14) 支付完成时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自支付宝服务器

4.6.2后台通知结果反馈

商户处理后同步返回给ULINE参数:

返回示例

<xml>
  <return_code>SUCCESS</return_code>
</xml>
变量名 必填 类型 示例 说明
return_code String(16) 返回状态码, SUCCESS SUCCESS/FAIL SUCCESS表示商户接收通知成功并校验成功
return_msg String(128) OK 返回信息,如非空,为错误原因: 签名失败 参数格式校验错误

4.7支付宝接口错误码

错误码 错误描述 解决方案
ACQ.SYSTEM_ERROR 接口返回错误 请立即调用查询订单API,查询当前订单的状态,并根据订单状态决定下一步的操作
ACQ.INVALID_PARAMETER 参数无效 检查请求参数,修改后重新发起请求
ACQ.ACCESS_FORBIDDEN 无权限使用接口 联系支付宝小二签约
ACQ.EXIST_FORBIDDEN_WORD 订单信息中包含违禁词 修改订单信息后,重新发起请求
ACQ.PARTNER_ERROR 应用APP_ID填写错误 联系支付宝小二,确认APP_ID的状态
ACQ.TOTAL_FEE_EXCEED 订单总金额超过限额 修改订单金额再发起请求
ACQ.CONTEXT_INCONSISTENT 交易信息被篡改 更换商家订单号后,重新发起请求
ACQ.TRADE_HAS_SUCCESS 交易已被支付 确认该笔交易信息是否为当前买家的,如果是则认为交易付款成功,如果不是则更换商家订单号后,重新发起请求
ACQ.TRADE_HAS_CLOSE 交易已经关闭 更换商家订单号后,重新发起请求
ACQ.BUYER_SELLER_EQUAL 买卖家不能相同 更换买家重新付款
ACQ.TRADE_BUYER_NOT_MATCH 交易买家不匹配 更换商家订单号后,重新发起请求
ACQ.BUYER_ENABLE_STATUS_FORBID 买家状态非法 用户联系支付宝小二,确认买家状态为什么非法
ACQ.BUYER_PAYMENT_AMOUNT_DAY_LIMIT_ERROR 买家付款日限额超限 更换买家进行支付
ACQ.BEYOND_PAY_RESTRICTION 商户收款额度超限 联系支付宝小二提高限额
ACQ.BEYOND_PER_RECEIPT_RESTRICTION 商户收款金额超过月限额 联系支付宝小二提高限额
ACQ.BUYER_PAYMENT_AMOUNT_MONTH_LIMIT_ERROR 买家付款月额度超限 让买家更换账号后,重新付款或者更换其它付款方式
ACQ.SELLER_BEEN_BLOCKED 商家账号被冻结 联系支付宝小二,解冻账号
ACQ.ERROR_BUYER_CERTIFY_LEVEL_LIMIT 买家未通过人行认证 让用户联系支付宝小二并更换其它付款方式
ACQ.INVALID_STORE_ID 商户门店编号无效 检查传入的门店编号是否符合规则
ACQ.PAYMENT_AUTH_CODE_INVALID 支付授权码无效 用户刷新条码后,重新扫码发起请求
ACQ.BUYER_BALANCE_NOT_ENOUGH 买家余额不足 买家绑定新的银行卡或者支付宝余额有钱后再发起支付
ACQ.BUYER_BANKCARD_BALANCE_NOT_ENOUGH 用户银行卡余额不足 建议买家更换支付宝进行支付或者更换其它付款方式
ACQ.ERROR_BALANCE_PAYMENT_DISABLE 余额支付功能关闭 用户打开余额支付开关后,再重新进行支付
ACQ.PULL_MOBILE_CASHIER_FAIL 唤起移动收银台失败 用户刷新条码后,重新扫码发起请求
ACQ.MOBILE_PAYMENT_SWITCH_OFF 用户的无线支付开关关闭 用户在PC上打开无线支付开关后,再重新发起支付
ACQ.PAYMENT_FAIL 支付失败 用户刷新条码后,重新发起请求,如果重试一次后仍未成功,更换其它方式付款
ACQ.PAYMENT_REQUEST_HAS_RISK 支付有风险 更换其它付款方式
ACQ.NO_PAYMENT_INSTRUMENTS_AVAILABLE 没用可用的支付工具 更换其它付款方式
ACQ.USER_FACE_PAYMENT_SWITCH_OFF 用户当面付付款开关关闭 让用户在手机上打开当面付付款开关

ULINE Alipay支付宝查询&退款接口

5.1 订单查询接口

5.1.1 业务功能

根据商户订单号或者UCHANG订单号查询UCHANG的具体订单信息。

5.1.2 交互模式

后台系统调用交互模式

5.1.3 请求参数列表

请求url:/alipay/orders/query

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>85698222</out_trade_no>
    <nonce_str>89c021667fb447e78f16263d89ed6d69</nonce_str>
    <sign>812E5B685286973336C45DC76465125E</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
transaction_id String(32) UCHANG交 易 号 , out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先。
out_trade_no String(32) 商户系统内部的订单号, out_trade_no 和 transaction_id 至少一个必填,同时存在时transaction_id 优先
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果

5.1.4 返回结果

数据按 XML 的格式实时返回

返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <transaction_id>1000101148180409300000036</transaction_id>
    <trade_type>MICROPAY</trade_type>
    <out_transaction_id>2016121521001004640285680217</out_transaction_id>
    <openid>hao***@126.com</openid>
    <mch_id>100010</mch_id>
    <out_trade_no>172441499</out_trade_no>
    <trade_state>TRADE_SUCCESS</trade_state>
    <total_fee>1</total_fee>
    <time_end>20161215201454</time_end>
    <nonce_str>339bcb842d9192774730dfbfafd3c5e6</nonce_str>
    <sign>D3A6ECFEF11734A71006AC331F3DE954</sign>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
trade_type String(16) 交易类型
MICROPAY 支付宝刷卡支付
JSAPI 支付宝JS支付
NATIVE 支付宝二维码支付
trade_state String(16) 交易状态
WAIT_BUYER_PAY 交易创建,等待买家付款
TRADE_CLOSED 未付款交易超时关闭,或支付完成后全额退款
TRADE_SUCCESS 交易支付成功
TRADE_FINISHED 交易结束,不可退款
openid String(128) 用户支付宝的账户名
total_fee Int 总金额,以分为单位,不允许包含任何字、 符号
fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
out_transaction_id String(32) 支付宝交易号
attach String(128) 商家数据包,原样返回
time_end String(14) 支付完成时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自UChang服务器

5.2退款接口

5.2.1业务功能

5.2.2 交互模式

后台系统调用交互模式

5.2.3 请求参数列表

请求url:/alipay/refunds

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>277031960</out_trade_no>
    <out_refund_no>2770319601</out_refund_no>
    <transaction_id></transaction_id>
    <refund_fee>1</refund_fee>
    <op_user_id>1404851802</op_user_id>
    <nonce_str>a2c89599844b4645a19df4ef4e6bf5c0</nonce_str>
    <sign>BA05A7453CAC7E363A3958BA745D895E</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UChang分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
transaction_id String(32) UChang单号, out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_trade_no String(32) 商 户 系 统 内 部 的 订 单 号 , out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。同个退款单号多次请求,UChang当一个单处理,只会退一次款。如果出现退款不成功,请采用原退款单号重新发起,避免出现重复退款。
refund_fee Int 退款总金额,单位为分,可以做部分退款
op_user_id String(32) 操作员帐号,默认为商户号

5.2.4 返回结果

数据按 XML 的格式实时返回

返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <refund_fee>1</refund_fee>
    <total_fee>1</total_fee>
    <out_trade_no>277031960</out_trade_no>
    <out_refund_no>2770319601</out_refund_no>
    <transaction_id>1000101148186857400000010</transaction_id>
    <refund_id>1000102148186957300000001</refund_id>
    <out_transaction_id>2016121621001004640286521587</out_transaction_id>
    <nonce_str>1524d5324ac8bf9e821eab4b2c030853</nonce_str>
    <sign>5882916EFD2DDFAEF5E19A3279783329</sign>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易 标识,交易是否成功需要查 看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
result_code String(16) SUCCESS 表示成功非 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String(128) 结果信息描述
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
out_transaction_id String(32) 支付宝交易号
transaction_id String(28) UCHANG 订单号
out_trade_no String(32) 商户订单号
out_refund_no String(32) 商户退款单号
refund_id String(28) ULINE退款单号
refund_fee Int 退款总金额,单位为分,可以做部分退款
total_fee Int 订单总金额,单位为分,只能为整数

5.3 退款查询接口

交退款申请后, 通过调用该接口查询退款状态。 退款有一定延时, 请在 3 个工作日后重新查询退款状态。

5.5.1 请求参数列表

请求url:/alipay/refunds/query

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <refund_id></refund_id>
    <out_refund_no>2770319601</out_refund_no>
    <nonce_str>30bd1937681942589a372f2ff8000d7d</nonce_str>
    <sign>307E17E048040A1CF2DE5C17348C1901</sign>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) 商户自定义的终端设备号,如门店编号、设备的ID等
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。
refund_id String(32) UChang退款单号 refund_id、out_refund_no 两个参数必填一个

5.5.2 返回结果

数据按 XML 的格式实时返回

返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <out_transaction_id>2016121621001004640286521587</out_transaction_id>
    <transaction_id>1000101148186857400000010</transaction_id>
    <out_trade_no>277031960</out_trade_no>
    <out_refund_no>2770319601</out_refund_no>
    <refund_id>1000102148186957300000001</refund_id>
    <refund_fee>1</refund_fee>
    <total_fee>1</total_fee>
    <sign>D12FCEA83F48D85377871A8B8C123013</sign>
    <nonce_str>7eddc3537561563e1c89dac238df5ac5</nonce_str>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易 标识,交易是否成功需要查 看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
result_code String(16) SUCCESS 表示成功非 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String(128) 结果信息描述
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
out_transaction_id String(32) 支付宝交易号
transaction_id String(28) UCHANG 订单号
out_trade_no String(32) 商户订单号
out_refund_no String(32) 商户退款单号
refund_id String(28) ULINE退款单号
refund_fee Int 退款总金额,单位为分,可以做部分退款
total_fee Int 订单总金额,单位为分,只能为整数

ULINE对账单API

6.1 对账单接口

6.1.1 业务功能

请求对账单下载

6.1.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

6.1.3 请求参数列表

请求 url: /bills

返回示例

交易时间,APPID,商户号,子商户号,设备编号,Uline订单号,第三方订单号,商户订单号,用户标识,交易类型,业务类型,付款银行,货币种类,总金额,企业红包金额,Uline退款单号,商户退款单号,退款金额,企业红包退款金额,退款状态,商品名称,商户数据包,手续费,费率,扩展字段一,扩展字段二,扩展字段三,扩展字段四,扩展字段五,扩展字段六
2016-12-23 20:39:20.532602,wxb2f76f018433****,100000006***,16805***,,100000006******49676000000186,40010720012016122*******12,12725504910343938C69,o_CDTvg6iuQ60IBP5R,weixin.JSAPI,交易,CFT,CNY,2700,0,,,,,,测试订单-[上岛咖啡],,-16,60,,,,,,

POST XML 内容体进行请求

字段名 变量名 必填 类型 说明
商户号 mch_id String(32) 商户号,由UCHANG分配
账单日期 bill_date String(32) 格式:yyyyMMdd(如:20150101)
随机字符串 nonce_str String(32) 随机字符串,不长于 32 位
签名 sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

成功时,数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,具体字段说明可查阅相应文档说明。

XML 格式

字段名 变量名 必填 类型 说明
返回状态码 return_code String(16) FAIL 表示失败
返回信息 return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

6.2对账单字段描述

对账单描述的是账户资金的变动,对于撤销的订单,如果交易成功后进行撤销操作,对账单会出现2条记录(交易和退款)。如果没有交易成功,之后被执行撤销操作,则在对账单中不会体现(因为资金没有发生变动)。对账单文件使用csv格式。编码为UTF-8

名称 含义 示例
交易时间 交易发起时间 2016-11-01 06:42:29
APPID 商户sub_appid,不存在则为Uine的appid wxb68005e5db5d29ce
商户号 商户在Uline的商户号 100000001136
子商户号 商户在微信或者支付宝的商户号 16534776
设备编号 设备编号 设备19
Uline订单号 Uline订单号 1000000009751147937683700000008
第三方订单号 微信或支付宝的订单号 4008142001201611170015485078
商户订单号 商户自己的订单号 591655feafce7be5f8d0b949d8c840fc
用户标识 微信或支付宝提供的用户标识 odbfdwWFB4D0rqU5eOCAkt2_1pl0
交易类型 交易通道+支付方式 weixin.jsapi
业务类型 交易或者退款 交易
付款银行 付款银行 ICBC_DEBIT
货币种类 货币种类 CNY
总金额 总金额(分) 1800
企业红包金额 红包金额(分) 100
Uline退款单号 uline退款单号 1000000009752147939073000000005
商户退款单号 商户自己的退款单号 20161129PQT0000000042
退款金额 退款金额(分),为正数 1800
企业红包退款金额 红包退款金额 900
退款状态 目前只会是成功 成功
商品名称 商品名称(body字段) Uline订单-[某某小店]-店铺支付
商户数据包 商户数据单(attach字段) 附加信息
手续费 手续费(分,交易为负,退款为正) 1
费率 万分率,正整数 60
扩展字段1 保留字段
扩展字段2 保留字段
扩展字段3 保留字段
扩展字段4 保留字段
扩展字段5 保留字段
扩展字段6 保留字段

6.3 目前交易类型(交易通道+支付方式)

uline网页文案名称 支付方式 微信/支付宝文案
微信- 扫码支付 NATIVE 扫码支付
微信- 刷卡支付 MICROPAY 刷卡支付
微信- 公众号支付 JSAPI 公众号支付
支付宝- 扫码支付 NATIVE 扫码支付
支付宝- 刷卡支付 MICROPAY 条码支付
支付宝- JS支付 JSAPI 门店固定二维码支付

6.4 查询商户打款记录接口

6.4.1 业务功能

请求查询用户指定日期或最近7天的打款记录

6.4.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

6.4.3 请求参数列表

请求url: /bills/remittance/query

返回示例

<xml> 
  <return_code>SUCCESS</return_code>  
  <return_msg>""<return_msg/>
  <remittances> 
    <remittance> 
      <pay_date>20170205</pay_date>  
      <records> 
        <record> 
          <fee>34588</fee>  
          <status>打款成功</status>  
          <need_pay_date>20170205</need_pay_date>  
          <channel>weixin</channel> 
        </record> 
      </records> 
    </remittance>  
    <remittance> 
      <pay_date>20170206</pay_date>  
      <records> 
        <record> 
          <fee>37969</fee>  
          <status>打款成功</status>  
          <need_pay_date>20170206</need_pay_date>  
          <channel>weixin</channel> 
        </record>  
        <record> 
          <fee>3777</fee>  
          <status>打款成功</status>  
          <need_pay_date>20170206</need_pay_date>  
          <channel>alipay</channel> 
        </record> 
      </records> 
    </remittance> 
  </remittances> 
</xml>

POST XML 内容体进行请求

字段名 变量名 必填 类型 说明
商户号 mch_id String(32) 商户号,由UCHANG分配
账单日期 date String(32) 格式:yyyyMMdd(如:20150101), 若不为空,则请求指定日期打款记录,为空则表示请求最近7天的打款记录
随机字符串 nonce_str String(32) 随机字符串,不长于 32 位
签名 sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

XML 格式

字段名 变量名 必填 类型 说明
返回状态码 return_code String(16) FAIL 表示失败
返回信息 return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

在请求成功时返回 若当日没有打款记录则返回数据为空

变量名 必填 类型 描述
remittances Array 按打款日期分组的记录列表
remittance Object 某个日期的内的所有打款记录
pay_date String(32) 实际打款日期
records Array 该日期的打款记录列表
record Object 打款记录
fee String(16) 打款金额,单位:分
status String(32) 打款状态
need_pay_date String (128) 需要打款的日期

ULINE提现API

7.1 D0提现接口

注意:

7.1.1 业务功能

提现

7.1.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

7.1.3 请求参数列表

请求 url: /withdraw

返回示例

<xml>
  <out_withdraw_no>testtest5</out_withdraw_no>
  <transaction_id>6100000103486150088427600000014</transaction_id>
  <total_fee>123700</total_fee>
  <nonce_str>27109d53f5abe578426ec57b66ad6d5e</nonce_str>
  <sign>2EDF51938AC1D4B0368434AF0875C184</sign>
  <mch_id>100000103486</mch_id>
  <pay_status>1</pay_status>
  <return_code>SUCCESS</return_code>
  <result_code>SUCCESS</result_code>
  <withdraw_fee>123500</withdraw_fee>
  <create_at>20170724161756</create_at>
  <handling_fee>200</handling_fee>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
out_withdraw_no string(32) 商户系统内部的提现单号,可包含字母
withdraw_fee int 提现金额,以分为单位,不允许包含任何字母、字符
channel string(32) weixin 或者 alipay
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
变量名 必填 类型 示例 描述
return_code string(16) FAIL SUCCESS/FAIL 通信标识,非交易标识,交易是否成功需要查看resu􏰅t_c􏰇de来判断
return_msg string(128) 签名失败 返回信息,如非空,为错误原因

以下字段在return_codeSUCCESS时有:

变量名 必填 类型 描述
result_code string(16) 业务返回结果SUCCESS/FAIL
err_code string(16) 参考错误码
err_code_des 否 string(128) 结果信息描述
mch_id string(32) 商户号,由 UCHANG 分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在 retur􏰆_c􏰇deresu􏰅t_c􏰇deSUCCESS时有:

变量名 必填 类型 描述
out_withdraw_no string(32) 商户系统内部提现单号
transaction_id string(32) UL提现单号
withdraw_fee int 提现金额,以分为单位
handing_fee int 提现手续费,以分为单位
total_fee int 账户提现冻结总额,包括提现金额和手续费
create_at string(14) 提现单创建时间
pay_status int 打款状态: 1 初始状态 2 打款成功 3 打款失败 4状态未明

7.2 ULINE D0提现查询接口

当提现发生网络异常等不确定提现是否成功时可以使用提现查询接口进行查询。

7.2.1 业务功能

提现查询

7.2.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

7.2.3 请求参数列表

请求 URL: /withdraw/query

返回示例

<xml>
  <mch_id>100000103486</mch_id>
  <nonce_str>ad06d7c99144ecd1d7974aa6b57e3301</nonce_str>
  <handling_fee>200</handling_fee>
  <total_fee>123700</total_fee>
  <pay_status>3</pay_status>
  <out_withdraw_no>testtest5</out_withdraw_no>
  <transaction_id>6100000103486150088427600000014</transaction_id>
  <withdraw_fee>123500</withdraw_fee>
  <return_code>SUCCESS</return_code>
  <result_code>SUCCESS</result_code>
  <create_at>20170724161756</create_at>
  <sign>5B6139273F45910FED39D62AF1F713A7</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
out_withdraw_no string(32) 商户系统内部的提现单号,可包含字母
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
变量名 必填 类型 示例 描述
return_code string(16) FAIL SUCCESS/FAIL 通信标识,非交易标识,交易是否成功需要查看resu􏰅t_c􏰇de来判断
return_msg string(128) 签名失败 返回信息,如非空,为错误原因

以下字段在return_codeSUCCESS时有:

变量名 必填 类型 描述
result_code string(16) 业务返回结果SUCCESS/FAIL
err_code string(16) 参考错误码
err_code_des 否 string(128) 结果信息描述
mch_id string(32) 商户号,由 UCHANG 分配
out_withdraw string(32) 商户系统内部单号
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在 retur􏰆_c􏰇deresu􏰅t_c􏰇deSUCCESS时有:

变量名 必填 类型 描述
transaction_id string(32) UL提现单号
withdraw_fee int 提现金额,以分为单位
handing_fee int 提现金额,以分为单位
total_fee int 账户提现冻结总额,包括提现金额和手续费
create_at string(14) 提现单创建时间
pay_status int 打款状态: 1 初始状态 2 打款成功 3 打款失败 4状态未明
fai􏰅lure_detai􏰅ls string(128) 打款状态描述

注:打款状态为 4(未知状态时),隔几分钟后查询,不要再发起提现

7.3 ULINE D0提现账户余额查询API

查询当前账户余额

7.3.1 业务功能

查询当前账户余额

7.3.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

7.3.3 请求参数列表

请求 URL: /withdraw/balance

返回示例

<xml>
  <return_code>SUCCESS</return_code>
  <result_code>SUCCESS</result_code>
  <mch_id>100000103486</mch_id>
  <wx_balance>762660</wx_balance>
  <ali_balance>693742</ali_balance>
  <nonce_str>e900802dac990e0b5bfe7386356172bc</nonce_str>
  <sign>1C20A193E2182F1094260D48758F96F6</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
变量名 必填 类型 示例 描述
return_code string(16) FAIL SUCCESS/FAIL 通信标识,非交易标识,交易是否成功需要查看resu􏰅t_c􏰇de来判断
return_msg string(128) 签名失败 返回信息,如非空,为错误原因

以下字段在return_codeSUCCESS时有:

变量名 必填 类型 描述
result_code string(16) 业务返回结果SUCCESS/FAIL
err_code string(16) 参考错误码
err_code_des 否 string(128) 结果信息描述
mch_id string(32) 商户号,由 UCHANG 分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在 retur􏰆_c􏰇deresu􏰅t_c􏰇deSUCCESS时有:

变量名 必填 类型 描述
wx_balance int 微信余额,以分为单位
ali_balance int 支付宝余额,以分为单位

7.4 ULINE D0提现手续费查询API

7.4.1 业务功能

请求查询要提现金额的手续费

7.4.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

7.4.3 请求参数列表

请求 URL: /withdraw/queryhandlefee

请求示例

<xml>
  <withdraw_fee>100000</withdraw_fee>
  <sign>873D05CC68D39872B1FB5CA23493A7B2</sign>
  <nonce_str>b4d17a9b9b3996adce92ba5f7655152a</nonce_str>
  <mch_id>100051684859</mch_id>
  <channel>alipay</channel>
</xml>

返回示例

<xml>
  <single_fee>20</single_fee>
  <advance_fee>20</advance_fee>
  <return_code>SUCCESS</return_code>
  <mch_id>100051684859</mch_id>
  <withdraw_fee>100000</withdraw_fee>
  <sign>873D05CC68D39872B1FB5CA23493A7B2</sign>
  <result_code>SUCCESS</result_code>
  <total_fee>100040</total_fee>
  <withdraw_rate>2</withdraw_rate>
  <nonce_str>b4d17a9b9b3996adce92ba5f7655152a</nonce_str>
  <handle_fee>40</handle_fee>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
withdraw_fee int 提现金额,以分为单位,不允许包含任何字母、字符
channel string(32) weixin 或者 alipay
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS表示成功

以下字段在 result_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
withdraw_fee int 提现金额,以分为单位
single_fee int 单笔手续费,以分为单位
handle_fee int 总手续费,以分为单位
advance_fee int 垫资手续费,以分为单位
total_fee int 扣费总额 = 提现金额+总手续费 ,以分为单位
withdraw_rate int 垫资费率 万为单位 例如 万2

7.5 ULINE D0最大提现余额查询API

7.5.1 业务功能

请求查询某通d0可提现最大金额

7.5.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

7.5.3 请求参数列表

请求 URL: /withdraw/maxbalance

请求示例

<xml>
  <sign>873D05CC68D39872B1FB5CA23493A7B2</sign>
  <nonce_str>b4d17a9b9b3996adce92ba5f7655152a</nonce_str>
  <mch_id>100051684859</mch_id>
  <channle>weixin</channel>
</xml>

返回示例

<xml>
  <return_code>SUCCESS</return_code>
  <result_code>SUCCESS</result_code>
  <channel>weixin</channel>
  <balance>0</balance>
  <d0_balance>0</d0_balance>
  <mch_id>100037690580</mch_id>
  <nonce_str>c0493effeac53e36757902a29a3f80fc</nonce_str>
  <sign>E86104D9E4B4852D0F0FC89E4240E221</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
channel string(32) weixin 或者 alipay
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS表示成功
channel string(32) weixin 或者 alipay

以下字段在 result_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
balance int 余额
d0_balance int d0可提现余额

ULINE 京东支付接口

8.1 统一下单接口

8.1.1业务功能

下单

8.1.2交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

8.1.3请求参数列表

请求 url:/jdpay/orders
请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <mch_id>100010</mch_id>
   <total_fee>10</total_fee>
   <out_trade_no>5812281</out_trade_no>
   <order_type>0</order_type>
   <body>BODY unif 支付测试</body>
   <attach>ATTACH unif 订单额外描述</attach>
   <detail>DETAIL unif 刷卡支付测试</detail>
   <notify_url>http://127.0.0.1:3001/jdpay/notify</notify_url>
   <nonce_str>e40534ec4a8d493b9759f105c2df8c3c</nonce_str>
   <pament_code>JD_OFFLINE_NATIVE</pament_code>
   <pay_merchant>东门西瓜店</pay_merchant>
   <sign>F68C75279E86B7EB8C0722D4AA314549</sign>
</xml>

成功返回示例

<xml>
  <return_code>SUCCESS</return_code>
  <return_msg>OK</return_msg>
  <result_code>SUCCESS</result_code>
  <result_desc>成功</result_desc>
  <mch_id>100010</mch_id>
  <nonce_str>AuBW53Js00QB9aS7</nonce_str>
  <sign>1B09E3D0E547665F807CAD8B1D556D4B</sign>
  <out_trade_no>5812281</out_trade_no>
  <qr_code>https://h5pay.jd.com/code?c=616zlks7djfb1z</qr_code>
  <transaction_id >123456789</transaction_id>
  <out_transaction_id>110022003300</out_transaction_id>
  <attach>ATTACH unif 订单额外描述</attach>
</xml>

失败返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <return_code>SUCCESS</return_code>
  <result_code>JMPT100005</result_code>
  <result_desc>该笔订单已过期,请重新下单支付。</result_desc>
  <mch_id>100010</mch_id>
  <nonce_str>AuBW53Js00QB9aS7</nonce_str>
  <sign>1B09E3D0E547665F807CAD8B1D556D4B</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
mch_id String(32) 商户号,由UCHANG分配
pay_merchant String(32) 收银台展示的收款商户,默认为商户号对应的商户
device_info String(32) 终端设备号(门店号或收银设备ID)
out_trade_no String(32) 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
body String(128) 商品描述
detail String(128) 订单描述
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
order_type String(3) 固定值:0或者1 (0:实物,1:虚拟)
attach String(127) 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
notify_url String(256) 接收京东支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
spbill_create_ip String(16) 用户请求IP地址
time_expire Int 订单的失效时长。单位:秒,失效后则不能再支付,默认时效时间为2小时
order_goods_num String(32) 订单商品的总数量
payment_code String(32) 支付类型码。线下:JD_OFFLINE_NATIVE,线上:JD_ONLINE_NATIVE

8.1.4返回结果

变量名 必填 类型 示例值 描述
return_code String(16) SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 签名失败 返回信息,如非空,为错误原因 “签名失败” 参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

变量名 必填 类型 描述
mch_id String(32) 商户号,由UChang分配
nonce_str String(32) 随机字符串,不长于 32 位
result_code String(16) 业务结果返回码:SUCCESS表示成功,其它值详见后面的错误信息表
result_desc String(32) 结果信息描述
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在return_code 和result_code都为成功的时候有返回

变量名 必填 类型 描述
qr_code String(32) 此参数可直接生成二维码展示出来进行扫码支付
out_trade_no String (128) 商户订单号
transaction_id String(32) UCHANG交易号。
out_transaction_id String(32) 京东交易号
device_info String(32) 终端设备号
attach String(127) 附加数据

8.2 商户二维码支付接口

8.2.1业务功能

该接口用于自定义金额支付等场景,京东支付服务会根据请求数据验证商户身份,以及验证支付信息是否被篡改。验证通过后,京东支付服务会在当前页面弹出支付页面弹框。

域名地址为https协议,且要加入京东app的白名单,加完白名单以后方可在京东app里面打开贵方的H5页面。

8.2.2交互模式

1,向后台请求跳转京东支付页面所需的签名加密信息

2,后台处理成功,返回跳转京东支付页面所需的form表单信息( form表单内容以json形式保存在xml中 )

3,解析返回的xml数据,取得form表单内容

4,根据业务需求,将表单数据提交至京东支付链接完成支付跳转

5,用户支付,处理回调结果

8.2.3请求参数列表

请求 url: /jdpay/orders/customerpay

POST XML 内容体进行请求

请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <mch_id>100010</mch_id>
   <total_fee>1</total_fee>
   <out_trade_no>5812281</out_trade_no>
   <body>BODY unif 支付测试</body>
   <attach>ATTACH cust 订单额外描述</attach>
   <detail>DETAIL cust 刷卡支付测试</detail>
   <order_type>0</order_type>
   <trade_type>CUST</trade_type>
   <pay_merchant>东门西瓜店</pay_merchant>
   <notify_url>http://127.0.0.1:3001/jdpay/notify</notify_url>
   <nonce_str>e40534ec4a8d493b9759f105c2df8c3c</nonce_str>
   <payment_code>JD_OFFLINE_JSAPI</payment_code>
   <sign>F68C75279E86B7EB8C0722D4AA314549</sign>
</xml>

返回值示例

<xml>
  <out_trade_no>5812281</out_trade_no>
  <transaction_id>7100015666075602429128206585856</transaction_id>
  <nonce_str>c24ebb422d653c1aa19ddb53a020a0b3</nonce_str>
  <form>{&#34;industryCategoryCode&#34;:&#34;&#34;,
&#34;payMerchant&#34;:&#34;873f34ac549d1b50c4b630c&#34;,
&#34;device&#34;:&#34;&#34;,
&#34;amount&#34;:&#34;e5a6c3761ab9ddaf&#34;,
&#34;notifyUrl&#34;:&#34;c4590250e0b0bb3a8f656f864c86&#34;,
&#34;tradeDesc&#34;:&#34;03e2128a74535caf&#34;,
&#34;tradeType&#34;:&#34;93e6c5&#34;,
&#34;riskInfo&#34;:&#34;7a94711f7277ed296a&#34;,
&#34;merchant&#34;:&#34;123456&#34;,
&#34;currency&#34;:&#34;ac7132c57f10d3ce&#34;,
&#34;tradeNum&#34;:&#34;9a97fc3733672d1830f159c&#34;,
&#34;tradeName&#34;:&#34;1db5fea7948338db1170a0&#34;,
&#34;tradeTime&#34;:&#34;d9668085c69c2ecb92&#34;,
&#34;note&#34;:&#34;d89abb0ff9f68eef&#34;,
&#34;sign&#34;:&#34;S/Y1i3jm29xUB5jXFOPoM1=&#34;,
&#34;ip&#34;:&#34;800e91f63ddf9ba68fa3215ddd3d9743&#34;,
&#34;version&#34;:&#34;V2.0&#34;,
&#34;orderType&#34;:&#34;e00c693e6c5b8a60&#34;,
&#34;callbackUrl&#34;:&#34;&#34;}</form>
  <sign>E7A4C59F01838B36C70319525E4F7B6C</sign>
  <return_code>SUCCESS</return_code>
  <mch_id>100010</mch_id>
  <result_code>SUCCESS</result_code>
</xml>

form字段html解码后的内容

{
"industryCategoryCode":"",
"payMerchant":"873f34ac549d1b50c4b630c",
"device":"",
"amount":"e5a6c3761ab9ddaf",
"notifyUrl":"c4590250e0b0bb3a8f656f864c86",
"tradeDesc":"03e2128a74535caf",
"tradeType":"93e6c5",
"riskInfo":"7a94711f7277ed296a",
"merchant":"123456",
"currency":"ac7132c57f10d3ce",
"tradeNum":"9a97fc3733672d1830f159c",
"tradeName":"1db5fea7948338db1170a0",
"tradeTime":"d9668085c69c2ecb92",
"note":"d89abb0ff9f68eef",
"sign":"S/Y1i3jm29xUB5jXFOPoM1=",
"ip":"800e91f63ddf9ba68fa3215ddd3d9743",
"version":"V2.0",
"orderType":"e00c693e6c5b8a60",
"callbackUrl":""
}
变量名 必填 类型 说明
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
mch_id String(32) 商户号,由UCHANG分配
pay_merchant String(32) 收银台展示的收款商户,默认为商户号对应的商户
device_info String(32) 终端设备号(门店号或收银设备ID)
out_trade_no String(32) 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
body String(128) 商品描述
detail String(128) 订单描述
order_type String(3) 固定值:0或者1 (0:实物,1:虚拟)
trade_type String(3) 交易类型:CUST-无金额支付、DRCT-有金额支付
total_fee Int 总金额,以分为单位,不允许包含任何字、符号。只有当trade_type为DRCT,此值才有效
attach String(127) 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
notify_url String(256) 接收京东支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
spbill_create_ip String(16) 用户请求IP地址
time_expire Int 订单的失效时长。单位:秒,失效后则不能再支付,默认时效时间为2小时
payment_code String(32) 支付类型码

8.2.4返回结果

变量名 必填 类型 示例值 描述
return_code String(16) SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 签名失败 返回信息,如非空,为错误原因 “签名失败” 参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

变量名 必填 类型 描述
mch_id String(32) 商户号,由UChang分配
nonce_str String(32) 随机字符串,不长于 32 位
result_code String(16) 业务结果返回码:SUCCESS表示成功,其它值详见后面的错误信息表
result_desc String(32) 结果信息描述
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在return_code 和result_code都为成功的时候有返回

变量名 必填 类型 描述
out_trade_no String (128) 商户订单号
transaction_id String(32) UCHANG交易号。
form String(32) 跳转至京东支付页面时所需的form表单参数,为json格式

form字段的内容为json格式,将里面的键、值POST至https://h5pay.jd.com/jdpay/customerPay即可完成跳转支付

跳转至京东支付页面时,POST的form表单样例:

    <form action="https://h5pay.jd.com/jdpay/customerPay"  method="post" >
        <input type="text" name="version" value="V2.0"/><br/>
        <input type="text" name="merchant" value="123456"/><br/>
        <input type="text" name="device" value=""/><br/>
        <input type="text" name="tradeNum" value="9a97fc3733672d1830f159c"/><br/>
        <input type="text" name="tradeName" value="1db5fea7948338db1170a0"/><br/>
        <input type="text" name="tradeDesc" value="03e2128a74535caf"/><br/>
        <input type="text" name="tradeTime" value="d9668085c69c2ecb92"/><br/>
        <input type="text" name="amount" value="e5a6c3761ab9ddaf"/><br/>
        <input type="text" name="currency" value="ac7132c57f10d3ce"/><br/>
        <input type="text" name="note" value="d89abb0ff9f68eef"/><br/>
        <input type="text" name="callbackUrl" value=""/><br/>
        <input type="text" name="notifyUrl" value="c4590250e0b0bb3a8f656f864c86"/><br/>
        <input type="text" name="orderType" value="e00c693e6c5b8a60"/><br/>
        <input type="text" name="riskInfo" value="7a94711f7277ed296a"/><br/>
        <input type="text" name="sign" value="S/Y1i3jm29xUB5jXFOPoM1"/><br/>
        <input type="text" name="tradeType" value="93e6c5"/><br/>
        <input type="text" name="industryCategoryCode" value=""/><br/>
        <input type="text" name="ip" value="800e91f63ddf9ba68fa3215ddd3d9743"/><br/>
        <input type="text" name="payMerchant" value="873f34ac549d1b50c4b630c"/><br/>
        <input type="submit" name="submit" value="提交"/><br/>
    </form>

8.3 在线支付接口

8.3.1业务功能

向京东支付服务发送支付请求数据集合,京东支付服务会根据请求数据验证商户身份,以及验证支付信息是否被篡改。验证通过后,京东支付服务会在当前页面弹出支付页面弹框。

8.3.2交互模式

1,向后台请求跳转京东支付页面所需的签名加密信息

2,后台处理成功,返回跳转京东支付页面所需的form表单信息( form表单内容以json形式保存在xml中 )

3,解析返回的xml数据,取得form表单内容

4,根据业务需求,将表单数据提交至京东支付链接完成支付跳转

5,用户支付,处理回调结果

8.3.3请求参数列表

请求 url: /jdpay/orders/saveorder

POST XML 内容体进行请求

请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <mch_id>100010</mch_id>
   <total_fee>10</total_fee>
   <out_trade_no>5812281</out_trade_no>
   <body>BODY unif 支付测试</body>
   <attach>ATTACH cust 订单额外描述</attach>
   <detail>DETAIL cust 刷卡支付测试</detail>
   <order_type>0</order_type>
   <user_id>张三</user_id>
   <pay_merchant>新鲜蔬菜店</pay_merchant>
   <notify_url>http://127.0.0.1:3001/jdpay/notify</notify_url>
   <nonce_str>e40534ec4a8d493b9759f105c2df8c3c</nonce_str>
   <payment_code>JD_OFFLINE_H5</payment_code>
   <sign>F68C75279E86B7EB8C0722D4AA314549</sign>
</xml>

返回值示例

<xml>
  <out_trade_no>5812281</out_trade_no>
  <transaction_id>7100015666075602429128206585856</transaction_id>
  <nonce_str>c24ebb422d653c1aa19ddb53a020a0b3</nonce_str>
  <form>{&#34;device&#34;:&#34;&#34;,
&#34;amount&#34;:&#34;e5a6c3761ab9ddaf&#34;,
&#34;notifyUrl&#34;:&#34;c4590250e0b0bb3a8f656f864c86&#34;,
&#34;tradeDesc&#34;:&#34;03e2128a74535caf&#34;,
&#34;userId&#34;:&#34;93e6c5&#34;,
&#34;riskInfo&#34;:&#34;7a94711f7277ed296a&#34;,
&#34;merchant&#34;:&#34;123456&#34;,
&#34;currency&#34;:&#34;ac7132c57f10d3ce&#34;,
&#34;tradeNum&#34;:&#34;9a97fc3733672d1830f159c&#34;,
&#34;tradeName&#34;:&#34;1db5fea7948338db1170a0cdaf77f38763f32235d083108b&#34;,
&#34;tradeTime&#34;:&#34;d9668085c69c2ecb92&#34;,
&#34;note&#34;:&#34;d89abb0ff9f68eef&#34;,
&#34;sign&#34;:&#34;S/Y1i3jm29xUB5jXFOPoM1=#34;,
&#34;ip&#34;:&#34;800e91f63ddf9ba68fa3215ddd3d9743&#34;,
&#34;version&#34;:&#34;V2.0&#34;,
&#34;orderType&#34;:&#34;e00c693e6c5b8a60&#34;,
&#34;callbackUrl&#34;:&#34;&#34;}</form>
  <sign>E7A4C59F01838B36C70319525E4F7B6C</sign>
  <return_code>SUCCESS</return_code>
  <mch_id>100010</mch_id>
  <result_code>SUCCESS</result_code>
</xml>

form字段html解码后内容

{
"device":"",
"amount":"e5a6c3761ab9ddaf",
"notifyUrl":"c4590250e0b0bb3a8f656f864c86",
"tradeDesc":"03e2128a74535caf",
"riskInfo":"7a94711f7277ed296a",
"merchant":"123456",
"currency":"ac7132c57f10d3ce",
"tradeNum":"9a97fc3733672d1830f159c",
"tradeName":"1db5fea7948338db1170a0cdaf77f38763f32235d083108b",
"tradeTime":"d9668085c69c2ecb92",
"note":"d89abb0ff9f68eef",
"sign":"S/Y1i3jm29xUB5jXFOPoM1=",
"ip":"800e91f63ddf9ba68fa3215ddd3d9743",
"version":"V2.0",
"orderType":"e00c693e6c5b8a60",
"callbackUrl":"",
"userId":"93e6c5"
}
变量名 必填 类型 说明
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) 终端设备号(门店号或收银设备ID)
out_trade_no String(32) 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
body String(128) 商品描述
detail String(128) 订单描述
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
order_type String(3) 固定值:0或者1 (0:实物,1:虚拟)
attach String(127) 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
notify_url String(256) 接收京东支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
spbill_create_ip String(16) 用户请求IP地址
time_expire Int 订单的失效时长。单位:秒,失效后则不能再支付,默认时效时间为2小时
payment_code String(32) 支付类型码:JD_ONLINE_H5 借贷通道,JD_ONLINE_H5_DEBIT 借记卡通道(不能使用信用卡支付)
user_id String(48) 商户平台用户的唯一账号。注:用户账号是商户端系统的用户唯一账号。

8.3.4返回结果

变量名 必填 类型 示例值 描述
return_code String(16) SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 签名失败 返回信息,如非空,为错误原因 “签名失败” 参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

变量名 必填 类型 描述
mch_id String(32) 商户号,由UChang分配
nonce_str String(32) 随机字符串,不长于 32 位
result_code String(16) 业务结果返回码:SUCCESS表示成功,其它值详见后面的错误信息表
result_desc String(32) 结果信息描述
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在return_code 和result_code都为成功的时候有返回

变量名 必填 类型 描述
out_trade_no String (128) 商户订单号
transaction_id String(32) UCHANG交易号。
form String(32) 跳转至京东支付页面时所需的form表单参数,为json格式

form字段的内容为json格式,将里面的键、值POST至京东的网页支付链接即可完成跳转支付

网页支付分有H5 / PC两个版本,分别对应两个链接:

PC版调用地址:https://wepay.jd.com/jdpay/saveOrder

H5版调用地址:https://h5pay.jd.com/jdpay/saveOrder

跳转至京东支付页面时,POST的form表单样例:

    <form action="https://wepay.jd.com/jdpay/saveOrder"  method="post" >
        <input type="text" name="version" value="V2.0"/><br/>
        <input type="text" name="merchant" value="123456"/><br/>
        <input type="text" name="device" value=""/><br/>
        <input type="text" name="tradeNum" value="9a97fc3733672d1830f159c"/><br/>
        <input type="text" name="tradeName" value="1db5fea7948338db1170a0"/><br/>
        <input type="text" name="tradeDesc" value="03e2128a74535caf"/><br/>
        <input type="text" name="tradeTime" value="d9668085c69c2ecb92"/><br/>
        <input type="text" name="amount" value="e5a6c3761ab9ddaf"/><br/>
        <input type="text" name="currency" value="ac7132c57f10d3ce"/><br/>
        <input type="text" name="note" value="d89abb0ff9f68eef"/><br/>
        <input type="text" name="callbackUrl" value=""/><br/>
        <input type="text" name="notifyUrl" value="c4590250e0b0bb3a8f656f864c86"/><br/>
        <input type="text" name="orderType" value="e00c693e6c5b8a60"/><br/>
        <input type="text" name="riskInfo" value="7a94711f7277ed296a"/><br/>
        <input type="text" name="sign" value="S/Y1i3jm29xUB5jXFOPoM1"/><br/>
        <input type="text" name="userId" value="93e6c5"/><br/>
        <input type="text" name="ip" value="800e91f63ddf9ba68fa3215ddd3d9743"/><br/>
        <input type="submit" name="submit" value="提交"/><br/>
    </form>

8.4 付款码支付接口

京东付款码功能稍后开放,敬请关注!

8.5 交易查询接口

8.5.1业务功能

根据商户订单号或者UCHANG订单号查询UCHANG的具体订单信息。

8.5.2交互模式

后台系统调用交互模式

8.5.3请求参数列表

请求 url: /jdpay/orders/query

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_trade_no>7009386</out_trade_no>
    <nonce_str>d4f774a374354a628e4e760d545489f8</nonce_str>
    <sign>F472D7440CC5E57C27B2ADD3B15E9BA6</sign>
</xml>

成功返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <nonce_str>d4f774a374354a628e4e760d545489f8</nonce_str>
    <sign>F472D7440CC5E57C27B2ADD3B15E9BA6</sign>
    <device_info></device_info>
    <out_trade_no>jd1711021002</out_trade_no>
    <transaction_id>71000000768699207636972131123200</transaction_id>
    <attach>this_is_note</attach>
    <total_fee>1</total_fee>
    <trade_state>2</trade_state>
    <pay_list>
        {
        "pay":[
            {
            "pay_type":"0",
            "fee":1,
            "currency":"CNY",
            "trade_time":"20171102000557",
            "detail":{
                "pay_money":"1",
                "card_holder_name":"*三丰",
                "card_holder_mobile":"158****8888",
                "card_holder_type":0,
                "card_holder_id":"****9999",
                "card_no":6666",
                "bank_code":"ABC",
                "card_type":"1"
               }
             }
           ]
        }
    </pay_list>
</xml>

失败返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>JMPT100029</result_code>
    <result_desc>交易不存在,请重新输入交易号查询。</result_desc>
    <mch_id>100010</mch_id>
    <nonce_str>d4f774a374354a628e4e760d545489f8</nonce_str>
    <sign>F472D7440CC5E57C27B2ADD3B15E9BA6</sign>
</xml>
变量名 必填 类型 说明
nonce_str String(32) 随机字符串,不长于32位
mch_id String(32) 商户号,由UCHANG分配
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
out_trade_no String(32) 商户系统内部的订单号, out_trade_no 和 transaction_id 至少一个必填
transaction_id String(32) UCHANG交 易 号 , out_trade_no 和 transaction_id 至少一个必填

8.3.4返回结果

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS表示成功
result_desc String (128) 结果信息描述

当return_code 和result_code都为成功的时,才会包括以下字段

变量名 必填 类型 说明
device_info String(128) 设备信息
out_trade_no String(128) 商户系统内部的定单号,32 个字符内、可包含字母
transaction_id String(128) UCHANG交易号
attach String(128) 商家数据包,原样返回
total_fee int 总金额,以分为单位,不允许包含任何字、 符号
trade_state String(128) 交易状态:0-创建、1-处理中、2-成功、3-关闭、4-失败
payment_code String(128) 支付类型码
pay_list pay的json数组 支付方式明细列表

pay支付方式结构:

变量名 必填 类型 说明
pay_type String(128) 支付方式:0-银行卡、1-白条、2-余额、3-优惠券、5-小金库、6-网关
fee String(128) 支付方式金额,单位:分
currency String(128) 交易币种,人民币:CNY
trade_time String(128) 交易时间:yyyyMMddHHmmss
detail pay_detail 支付明细

支付明细结构体:

变量名 必填 类型 说明
pay_money String(128) 支付方式金额,单位:分
card_holder_name String(128) 持卡人人姓名,掩码显示(隐去第一位)
card_holder_mobile string(128) 持卡人手机号,掩码显示(手机号的前三位与后四位)
card_holder_type int 证件类型:0-身份证、1-护照、2-军官证、3-士兵证、4-港奥台通行证、5-临时身份证、6-户口本、7-其它类型证件
card_holder_id String(128) 身份证号,掩码显示(身份证号的后四位)
card_no String(128) 卡号,卡号后四位
bank_code String(128) 银行编码
card_type String(128) 银行卡类型:1-借记卡、2-信用卡

8.6 撤销申请接口

8.6.1 业务功能

撤销申请接口提供给商户发起自动撤销的能力。对于未支付的订单(扫码支付除外)撤销后不可再次支付,对于支付成功的订单则发起退款。

8.6.2 交互模式

请求:后台请求交互模式

8.6.3 请求参数列表

请求 url: /jdpay/orders/reverse

请求示例

<xml>
    <mch_id>100010</mch_id>
    <device_info>1000</device_info>
    <out_trade_no>2507613</out_trade_no>
    <out_refund_no>2507613-ref</out_refund_no>
    <nonce_str>abba192ccd034bdca65d29223db1cbe9</nonce_str>
    <sign>8D551DE78830997A1FEAA325278C512C</sign>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) 设备信息
transaction_id String(32) UCHANG订单号,优先使用
out_trade_no String(32) 商户系统内部的订单号 ,32 个字符内、可包含字母,确保在商户系统唯一
out_refund_no String(32) 当触发退款时,为退款单号
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

8.6.4 返回结果

数据按 XML 的格式实时返回

成功返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <mch_id>100010</mch_id>
    <nonce_str>uuXse9FQKDOXn4We</nonce_str>
    <sign>1C227D46C440EC501C60B87BA4514633</sign>
    <result_code>SUCCESS</result_code>
    <result_desc>成功</result_desc>
    <device_info>1000</device_info>
    <total_fee>1</total_fee>
    <out_trade_no>2507613</out_trade_no>
    <out_refund_no>2507613-ref</out_refund_no>
    <transaction_id>112233445566</transaction_id>
    <refund_id>112233445566-ref</refund_id>
    <status>1</status>
</xml>

失败返回结果

<xml>
    <return_code>FAIL</return_code>
    <return_msg>order not found</return_msg>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码,SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS表示成功
result_desc String (128) 结果信息描述

当return_code 和result_code都成功时,还会包括以下字段

变量名 必填 类型 说明
device_info String(32) 设备信息
total_fee String(32) 商户订单的资金总额。单位:分,大于0
out_trade_no String(32) 商户支付订单号
out_refund_no String(32) 商户退款单号
transaction_id String(32) Uline支付订单号
refund_id String(32) Uline退款单号
status String(32) 交易状态:1-成功、2-失败

8.7退款申请接口

8.7.1业务功能

退款申请接口提供给商户发起自动退款的能力。如果用户在商户系统下单支付以后发起退款,商户验证通过之后可以自动发起退款请求

8.7.2交互模式

8.7.3请求参数列表

请求 url: /jdpay/refunds

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <nonce_str>abba192ccd034bdca65d29223db1cbe9</nonce_str>
    <sign>8D551DE78830997A1FEAA325278C512C</sign>
    <device_info>1000</device_info>
    <refund_fee>1</refund_fee>
    <out_trade_no>2507613</out_trade_no>
    <out_refund_no>2507613-ref</out_refund_no>
</xml>

成功返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <mch_id>100010</mch_id>
    <nonce_str>uuXse9FQKDOXn4We</nonce_str>
    <sign>1C227D46C440EC501C60B87BA4514633</sign>
    <result_code>SUCCESS</result_code>
    <result_desc>成功</result_desc>
    <device_info>1000</device_info>
    <refund_fee>1</refund_fee>
    <out_trade_no>2507613</out_trade_no>
    <out_refund_no>2507613-ref</out_refund_no>
    <transaction_id>123456001</transaction_id>
    <refund_id>123456001-ref</refund_id>
    <status>1</status>
</xml>

失败返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>RFND100002</result_code>
    <result_desc>退款金额超出可退额度</result_desc>
    <mch_id>100010</mch_id>
    <sign>1C227D46C440EC501C60B87BA4514633</sign>
    <nonce_str>uuXse9FQKDOXn4We</nonce_str>
    <device_info>1000</device_info>
    <refund_fee>1</refund_fee>
    <out_trade_no>2507613666</out_trade_no>
    <out_refund_no>2507613666-ref</out_refund_no>
    <transaction_id>123456001777</transaction_id>
    <refund_id>123456001777-ref</refund_id>
    <status>1</status>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
device_info String(32) UCHANG支付分配的终端设备号
refund_fee Int 总金额,以分为单位,不允许包含任何字、符号
out_trade_no String(32) 商户系统内部的订单号 ,32个字符内、 可包含字母,确保在商户系统唯一
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。同个退款单号多次请求,UChang当一个单处理,只会退一次款。如果出现退款不成功,请采用原退款单号重新发起,避免出现重复退款。

8.7.4返回结果

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS表示成功,具体错误码请看文档最后错误码列表
result_desc String(128) 结果信息描述
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
out_refund_no String(32) 商户退款单号现退款不成功,请采用原退款单号重新发起,避免出现重复退款。
device_info String(32) UChang支付分配的终端设备号
refund_fee Int 总金额,以分为单位,不允许包含任何字、符号
transaction_id String(32) ULINE订单号
refund_id String(32) ULINE退款单号
status Int 退款状态:0-处理中、1-成功、2-失败,最终状态,不用重试、3-失败,需要原单号发起重试

根据退款状态判断退款结果(忽略code):

i. 若status为空,则表示退款服务调用异常,需使用此次的交易流水号(tradeNum)重新发起退款申请;

ii. 若status不为空,则:

  1. status为0,表示退款处理中。需调用退款查询服务。

    • 若查询结果为无此退款交易,则需要原退款单号再次发起重试;
    • 若查询结果为处理中,则需要定时查询最终退款结果。
  2. status为1,表示退款成功。若退款到银行卡,具体到账时间以银行为准。

  3. status为2,表示退款失败。(如:原交易流水号不存在、商户可用余额不足、退款金额大于支付金额等。为了资金安全需要人工介入分析,若要再次发起退款,需换新的退款单号进行退款申请。)

  4. status为3,表示因系统问题导致退款失败,需使用此次的退款单号(tradeNum)重新发起退款申请。

8.8 退款查询接口

8.8.1业务功能

退款申请接口提供给商户发起自动退款的能力。如果用户在商户系统下单支付以后发起退款,商户验证通过之后可以自动发起退款请求。

8.8.2交互模式

8.8.3请求参数列表

请求 url: /jdpay/refunds/query

POST XML 内容体进行请求

请求示例

<xml>
    <mch_id>100010</mch_id>
    <out_refund_no>2507613</out_refund_no>
    <nonce_str>abba192ccd034bdca65d29223db1cbe9</nonce_str>
    <sign>8D551DE78830997A1FEAA325278C512C</sign>
</xml>

成功返回示例

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <nonce_str>d4f774a374354a628e4e760d545489f8</nonce_str>
    <sign>F472D7440CC5E57C27B2ADD3B15E9BA6</sign>
    <device_info></device_info>
    <out_trade_no>77889900</out_trade_no>
    <out_refund_no>77889900-ref</out_refund_no>
    <refund_id>123456789-ref</refund_id>
    <transaction_id>123456789</transaction_id>
    <refund_fee>1</refund_fee>
    <status>1</status>
</xml>

失败返回示例

<xml>
    <return_code>FAIL</return_code>
    <return_msg>必须传入out_refund_no 或 refund_id</return_msg>
</xml>
变量名 必填 类型 说明
nonce_str String(32) 随机字符串,不长于32位
mch_id String(32) 商户号,由UCHANG分配
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。
refund_id String(32) UChang退款单号 refund_id、out_refund_no 两个参数必填一个

8.8.4返回结果

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS表示成功
result_desc String (128) 结果信息描述
device_info String(32) UChang支付分配的终端设备号
out_refund_no String(32) 商户退款单号
out_trade_no String(32) 商户订单号
refund_id String(32) ULINE退款单号
transaction_id String(32) UCHANG 订单号
refund_fee int 退款总金额,单位为分,可以做部分退款
status int 退款状态:0-处理中、1-成功、2-失败,最终状态,不用重试、3-失败,需要原单号发起重试

8.9 异步通知接口

后台通知通过请求中的 notify_url 进行, post

8.9.1 通知结果参数列表

推荐的做法是, 当收到通知进行处理时, 首先检查对应业务数据的状态, 判断该通 知是否已经处理过, 如果没有处理过再进行处理, 如果处理过直接返回结果成功。 在对业务 数据进行状态检查和处理之前, 要采用数据锁进行并发控制, 以避免函数重入造成的数据混 乱。

ULINE后台通过 notify_url 通知商户,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:

示例数据

<xml>
    <return_code>SUCCESS</return_code>
    <result_code>SUCCESS</result_code>
    <mch_id>100010</mch_id>
    <nonce_str>d4f774a374354a628e4e760d545489f8</nonce_str>
    <sign>F472D7440CC5E57C27B2ADD3B15E9BA6</sign>
    <device_info></device_info>
    <out_trade_no>jd1711021002</out_trade_no>
    <transaction_id>71000000768699207636972131123200</transaction_id>
    <attach>this_is_note</attach>
    <total_fee>1</total_fee>
    <trade_state>2</trade_state>
    <pay_list>
        {
        "pay":[
            {
            "pay_type":"0",
            "fee":1,
            "currency":"CNY",
            "trade_time":"20171102000557",
            "detail":{
                "pay_money":"1",
                "card_holder_name":"*三丰",
                "card_holder_mobile":"158****8888",
                "card_holder_type":0,
                "card_holder_id":"****9999",
                "card_no":6666",
                "bank_code":"ABC",
                "card_type":"1"
               }
             }
           ]
        }
    </pay_list>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) UCHANG分配的终端设备号
result_code String(16) SUCCESS 表示成功 FAIL 表示失败
result_desc String (128) 结果信息描述
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
attach String(128) 商家数据包,原样返回
total_fee String(128) 支付总金额,单位:分
status String(128) 交易状态:2-成功
pay_list pay的json数组 支付方式明细列表

pay支付方式结构:

变量名 必填 类型 说明
pay_type String(128) 支付方式:0-银行卡、1-白条、2-余额、3-优惠券、5-小金库、6-网关
fee String(128) 支付方式金额,单位:分
currency String(128) 交易币种,人民币:CNY
trade_time String(128) 交易时间:yyyyMMddHHmmss
detail pay_detail 支付明细

支付明细结构体:

变量名 必填 类型 说明
pay_money String(128) 支付方式金额,单位:分
card_holder_name String(128) 持卡人人姓名,掩码显示(隐去第一位)
card_holder_mobile string(128) 持卡人手机号,掩码显示(手机号的前三位与后四位)
card_holder_type int 证件类型:0-身份证、1-护照、2-军官证、3-士兵证、4-港奥台通行证、5-临时身份证、6-户口本、7-其它类型证件
card_holder_id String(128) 身份证号,掩码显示(身份证号的后四位)
card_no String(128) 卡号,卡号后四位
bank_code String(128) 银行编码
card_type String(128) 银行卡类型:1-借记卡、2-信用卡

8.9.2 后台通知结果反馈

商户处理后同步返回给ULINE参数:

返回示例

<xml>
  <return_code>SUCCESS</return_code>
</xml>
变量名 必填 类型 示例 说明
return_code String(16) 返回状态码, SUCCESS SUCCESS/FAIL SUCCESS表示商户接收通知成功并校验成功
return_msg String(128) OK 返回信息,如非空,为错误原因: 签名失败 参数格式校验错误

8.10 错误码

接口调用成功返回码:SUCCESS

其余返回码表示接口调用失败

错误码 描述
JMPT100000 系统处理异常,请稍后再试。
JMPT100001 参数异常,请稍后重试。
JMPT100002 系统处理异常,请稍后再试。
JMPT100003 交易异常,请重新发起支付。
JMPT100005 该笔订单已过期,请重新下单支付。
JMPT100006 订单支付成功,请勿重复提交。
JMPT100007 该笔订单已取消,请重新下单支付。
JMPT100008 订单处理出现异常,请重新发起支付。
JMPT100009 支付处理异常,请你重新支付。
JMPT100011 很抱歉,该商户不支持收单。
JMPT100012 商户收单异常,请稍后重试。
JMPT100013 该商户信息不存在,请核对后重试。
JMPT100015 商户的用户ID为空,请核对后重试。
JMPT100016 撤销订单失败
JMPT100017 很抱歉,您未绑定银行卡等支付工具,请绑定后再支付。
JMPT100019 很抱歉,支付失败,请尝试使用其他银行卡或支付方式。
JMPT100020 抱歉,该商户不支持付款码支付。
JMPT100021 系统处理异常,请稍后再试。
JMPT100022 系统处理异常,请稍后再试。
JMPT100023 你多次请求的金额不一样,请重新下单支付。
JMPT300000 密码读取异常,请您稍后重试。
JMPT300001 系统异常,请您重新支付。
JMPT300004 系统异常,请您重新支付。
JMPT300005 商户信息异常,请稍后重试。
JMPT300007 系统处理异常,请稍后再试。
JMPT300008 系统处理异常,请稍后再试。
JMPT300010 系统处理异常,请稍后再试。
JMPT300011 订单号已存在,请勿重复提交。
JMPT300013 短信验证码错误,请检查后重新输入。
JMPT300014 支付密码错误,请检查后重新输入。
JMPT300015 营销参数异常,请您重新支付。
JMPT300016 支付处理中,请您稍后查询。
JMPT300017 优惠信息获取异常,请您稍后再试。
JMPT300018 该验证码已过期,请重新获取短信验证码。
JMPT300021 信息查询有误,请稍后重试。
JMPT300022 很抱歉,该笔订单不存在。
JMPT300023 该笔订单已完成,请勿重复操作。
JMPT300024 很抱歉,该商户不支持此卡,请尝试使用其他银行卡。
JMPT300026 系统异常,请稍后重试。
JMPT300027 系统处理异常,请稍后再试。
JMPT300028 很抱歉,该商户不支持指纹支付。
JMPT900000 很抱歉,网络异常,请稍后重试。
JMPT900002 密码输入错误,你还有 次尝试机会。
JMPT900003 支付密码错误次数超限,您可以选择忘记密码或2小时候再试。
CASH000000 该商户收单异常,请稍后重试
CASH000001 系统异常,请稍后重试
CASH000002 很抱歉,交易受限,请您更换支付方式或联系客服95118。
CASH000003 登录超时,请稍后重试
CASH000004 支付验签失败,请核对签名后重新支付。
CASH000005 支付金额有误,请核对金额后重新支付
CASH000006 支付解密异常,请核对加密参数后重新支付
CASH000007 系统校验支付签名异常,请核对签名后重新支付
CASH000008 获取短信验证码失败,请稍后重试
CASH000009 很抱歉,不支持该银行卡,请选用其他银行卡。
CASH000010 卡号有误,请核对后重新输入。
CASH000011 您的生日输入有误,请重新输入
CASH000012 验证码有误,请重新输入
CASH000013 生日校验次数已超限,请一小时后重试
CASH000014 支付提交参数异常,请核对后重新支付
CASH000015 订单信息获取失败,请您重试
CASH000016 系统异常,请稍后重试。
CASH000017 很抱歉,暂不支持该支付方式,请更换其他支付方式。
CASH000018 商户信息不存在,请核对后重新支付
CASH000019 商户des秘钥不存在,请核对后重试。
CASH000020 支付密码调用异常状态,降级发短信支付
CASH000021 京东支付1.0-class转2.0-class转化异常
CASH000022 商户限制身份信息为空,请核对后重新支付。
CASH000023 商户限制卡号为空,请核对后重新支付。
CASH000024 商户号为空,请核对后重新支付。
CASH000025 支付异常,请您重新支付
CASH000026 很抱歉,该笔订单信息有误。
CASH000027 订单信息获取失败,请您重试。
CASH000028 支付异常,请您重新支付。
CASH000030 商户证书有误,请联系京东相关人员核实。
JPGT999998 调下游服务失败
JPGT999999 网络超时,请稍后重试
JPGT100004 传入必须的参数为空
JPGT201000 商户信息不存在
JPGT100000 传入的参数验签失败
JPGT200000 退款处理中
JPGT200003 商户信息错误
JPGT100001 传入必须的参数jdpay为空
JPGT100005 商户号为空
JPGT200001 交易类型不存在

ULINE 银联固定二维码支付

9.1 补单查询接口

9.1.1 业务功能

补单查询

9.1.2 交互模式

请求:后台请求交互模式 返回结果:后台请求交互模式

9.1.3 请求参数列表

请求 url:/unionpay/staticquery

成功返回示例 xml <xml> <nonce_str>811bb02d01f6a81d6d8c97b8a3ceb095</nonce_str> <sign>5970EC2C91493AF6088639C9EBBD9EB8</sign> <return_code>SUCCESS</return_code> <result_code>SUCCESS</result_code> <transAt>30000</transAt> <tranTs>20171123 175959</tranTs> <accNo>6216***********2485</accNo> <mch_id>100000076869</mch_id> </xml>

POST XML 内容解析请求


变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章MD5 签名规则”
voucherNum String(32) 二维码凭证
变量名 必填 类型 示例值 描述
return_code String(16) SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 签名失败 返回信息,如非空,为错误原因 “签名失败” 参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS表示成功

以下字段在 result_code 为 SUCCESS 的时候有返回

变量名 必填 类型 描述
transAt String(32) 交易金额,单位分
tranTs String(32) 交易时间
accNo String(32) 支付账号

ULINE QQ钱包支付接口

10.1统一下单接口

10.1.1业务功能

下单

10.1.2交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

10.1.3请求参数列表

请求 url:/qqpay/orders
请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100000000060</mch_id>
    <nonce_str>123</nonce_str>
    <sign>4B825AD0DAA11C8BB1004533BB8FB14D</sign>
    <sub_appid></sub_appid>
    <total_fee>1</total_fee>
    <out_trade_no>121a1wq1</out_trade_no>
    <body>商品body</body>
    <spbill_create_ip>1.2.3.4</spbill_create_ip>
    <attach>附加</attach>
    <notify_url>http://127.0.0.1:2017/ali_payNotify</notify_url>
    <trade_type>NATIVE</trade_type>
    <sub_openid></sub_openid>
    <openid></openid>
    <limit_pay></limit_pay>
    <payment_code>QQ_OFFLINE_NATIVE</payment_code>
</xml>

成功返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <code_url>https://qpay.qq.com/qr/6363865e</code_url>
  <mch_id>100000000060</mch_id>
  <prepay_id>6Vd9939b96ad7af91deca861dcb486d3</prepay_id>
  <result_code>SUCCESS</result_code>
  <out_trade_no>121a1wq1</out_trade_no>
  <nonce_str>0ec0c3cc5f1134c5341a5b609c2a162e</nonce_str>
  <return_msg>SUCCESS</return_msg>
  <sign>840EE4262F3D78288ED66BD83A97EA8E</sign>
  <trade_type>NATIVE</trade_type>
  <return_code>SUCCESS</return_code>
</xml>

失败返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <return_code>FAIL</return_code>
   <return_msg>系统异常</return_msg>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
body String(128) 商品描述
attach String(127) 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
out_trade_no String(32) 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
fee_type String(16) 符合ISO 4217标准的三位字母代码,默认人民币:CNY
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
spbill_create_ip String(16) 用户端实际ip
time_expire String(14) 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。时区为GMT+8 beijing。该时间取自商户服务器。
limit_pay String(32) 可以针对当前的交易,限制用户的支付方式,如:仅允许使用余额,或者是禁止使用信用卡。详情见支付方式限制
trade_type String(16) 取值如下:JSAPI,NATIVE
notify_url String(256) 接收qq支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
device_info String(32) 调用接口提交的终端设备号
payment_code String(32) 支付通道代码 uline由分配,例如:QQ_OFFLINE_NATIVE

10.1.4返回结果

变量名 必填 类型 示例值 描述
return_code String(16) SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 签名失败 返回信息,如非空,为错误原因 “签名失败” 参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

变量名 必填 类型 描述
mch_id String(32) 商户号,由UChang分配
nonce_str String(32) 随机字符串,不长于 32 位
result_code String(16) 业务返回结果SUCCESS/FAIL
err_code String(32) 参考错误码
err_msg String (128) 结果信息描述
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

以下字段在return_code 和result_code都为SUCCESS的时候有返回

变量名 必填 类型 说明
trade_type String(16) 调用接口提交的交易类型,取值如下:JSAPI,NATIVE
prepay_id String(64) 2FF3D78E77957380ADFF91D55D912F10 是QQ钱包的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
code_url String(64) http://qpay.qq.com/qr/0e02ebc4 trade_type为NATIVE是有返回,可将该参数值生成二维码展示出来进行扫码支付

错误码: Qq orders

10.2付款码接口

10.2.1业务功能

支付后直接提交到泓龙,定时清关

10.2.2交互模式

2.2.3请求参数列表

请求 url: /qqpay/orders/micropay

POST XML 内容体进行请求

请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100000000060</mch_id>
    <nonce_str>123</nonce_str>
    <sign>964E366C51827CC12DD2B055A9298ECA</sign>
    <total_fee>1</total_fee>
    <out_trade_no>1212121a1</out_trade_no>
    <body>商品body</body>
    <spbill_create_ip>1.2.3.4</spbill_create_ip>
    <detail>详情</detail>
    <attach>附加</attach>
    <auth_code>910181492196072235</auth_code>
    <limit_pay></limit_pay>
    <payment_code>QQ_OFFLINE_MICROPAY</payment_code>
    <device_info>device_info xxx</device_info>
</xml>

成功返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <out_trade_no>1212121a1</out_trade_no>
  <mch_id>100000000060</mch_id>
  <nonce_str>0f6b1420c7d8f0efc1e898708d5004e3</nonce_str>
  <trade_state_desc>交易成功</trade_state_desc>
  <bank_type>BALANCE</bank_type>
  <fee_type>CNY</fee_type>
  <trade_state>SUCCESS</trade_state>
  <return_code>SUCCESS</return_code>
  <device_info>device_info xxx</device_info>
  <coupon_count>0</coupon_count>
  <cash_fee>1</cash_fee>
  <transaction_id>8100000000060624404091565117440</transaction_id>
  <return_msg>SUCCESS</return_msg>
  <time_end>20171205180945</time_end>
  <trade_type>MICROPAY</trade_type>
  <attach>附加</attach>
  <coupon_fee>0</coupon_fee>
  <sign>55E9B96C9DC86E820E11AF0A1747D954</sign>
  <result_code>SUCCESS</result_code>
  <total_fee>1</total_fee>
  <out_transaction_id>19000153816012201712051503982910</out_transaction_id>
</xml>

失败返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <nonce_str>fGXOc2UERrsVZDum</nonce_str>
    <sign>46D05A5F87A0CC1483174954DA9DCE6F</sign>
    <result_code>FAIL</result_code>
    <err_code>USERPAYING</err_code>
    <return_msg>OK</return_msg>
    <out_trade_no>2507613</out_trade_no>
    <mch_id>100010</mch_id>
    <err_code_des>需要用户输入支付密码</err_code_des>
    <return_code>SUCCESS</return_code>
    <device_info>1000</device_info>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于32位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
body String(127) 商品描述
attach String(128) 商户附加信息,可做扩展参数,255 字符内
out_trade_no String(32) 商户系统内部的订单号 ,32个字符内、 可包含字母,确保在商户系统唯一
fee_type String(16) 符合ISO 4217标准的三位字母代码,默认人民币:CNY
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
spbill_create_ip String(16) 订单生成的机器 IP
limit_pay String(32) 可以针对当前的交易,限制用户的支付方式,如:仅允许使用余额,或者是禁止使用信用卡。详情见支付方式限制
device_info String(32) UCHANG支付分配的终端设备号
auth_code String(128) 扫码支付授权码, 设备读取用户展示的条码或者二维码信息
payment_code String(32) 支付通道代码 uline由分配,例如:QQ_OFFLINE_NATIVE

2.2.4返回结果

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) UChang支付分配的终端设备号
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS/FAIL
err_code String(32) 具体错误码请看错误码列表
err_code_des String (128) 结果信息描述

当return_code 和result_code都为SUCCESS的时,还会包括以下字段

变量名 必填 类型 说明
device_info String(32) UChang支付分配的终端设备号
trade_type String(16) MICROPAY
trade_state String(32) 交易状态,SUCCESS 支付成功 ,REFUND 转入退款,REVOKED订单已撤销,CLOSED 订单已关闭 ,USERPAYING 用户支付中
bank_type String(16) 银行类型
fee_type String(16) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
total_fee Int 总金额,以分为单位,不允许包含任何字、符号
cash_fee Int 用户本次交易中,实际支付的金额
coupon_fee Int QQ钱包优惠金额<=订单总金额, 订单总金额-现金券金额为现金支付金额

| transaction_id | 是 | String(32) | UCHANG交易号。 | out_trade_no | 是 | String(32) | 商户系统内部的定单号,32 个字符内、可包含字母 | attach | 否 | String(128) | 商家数据包,原样返回 | time_end | 是 | String(14) | 支付完成时间,格式为 yyyyMMddhhmmss,如2009 年 12 月 27 日 9 点 10 分 10 秒表示为20091227091010。时区为 GMT+8 beijing。该时间取自UChang服务器 |trade_state_desc | 是 | String(256) | 对当前查询订单状态的描述和下一步操作的指引 | out_transaction_id | 是 | String(32) | qq交易号

错误码: Qq mirco

10.3关闭订单

10.3.1业务功能

以下情况需要调用关单接口:商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。

10.3.2 交互模式

请求:后台请求交互模式

返回结果:后台请求交互模式

10.3.3 参数请求列表

请求URL:/qqpay/orders/close

请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100000000060</mch_id>
    <nonce_str>123</nonce_str>
    <sign>D08333776E172C47489625CF6BA20428</sign>
    <out_trade_no>121a1wq1</out_trade_no>
</xml>

成功返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <return_msg>SUCCESS</return_msg>
  <result_code>SUCCESS</result_code>
  <sign>67277C963E40B79901E234C496018A9F</sign>
  <out_trade_no>121a1wq1</out_trade_no>
  <return_code>SUCCESS</return_code>
  <mch_id>100000000060</mch_id>
  <nonce_str>775dad2b0824c09ec62765f2796fce40</nonce_str>
</xml>

失败返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100010</mch_id>
    <nonce_str>YalRxVWOlPyOa4Jq</nonce_str>
    <sign>2948FD5731C82C67534CD5688FC0E2DB</sign>
    <err_code>ORDERPAID</err_code>
    <err_code_des>order paid</err_code_des>
    <return_code>SUCCESS</return_code>
    <result_code>FAIL</result_code>
    <return_msg>OK</return_msg>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号
sub_appid String(32) 公众账号ID
out_trade_no String(32) 商户系统内部的订单号
nonce_str String(32) 随机字符串
sign String(32) 签名

5.3.4 返回结果

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) SUCCESS/FAIL
return_msg String(16) 返回信息,如非空,为错误原因;签名失败;参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号
nonce_str String(32) 随机字符串,不长于32位
sign String(32) 签名
result_code String(16) 业务返回结果SUCCESS/FAIL
err_code String(32) 详细参见错误描述
err_code_des String(128) 结果信息描述

错误码: Qq close

10.4 冲正接口

10.4.1 业务功能

应用场景(付款码支付使用): 支付交易返回失败或支付系统超时,调用该接口撤销交易。如果此订单用户支付失败,QQ钱包系统会将此订单关闭;如果用户支付成功,QQ钱包系统会将此订单资金退还给用户。

10.4.2 交互模式

请求:后台请求交互模式

10.4.3 请求参数列表

请求 url: /qqpay/orders/reverse

请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100000000060</mch_id>
    <nonce_str>123</nonce_str>
    <sign>1F10A3423F6489B7C07467C61A378CB4</sign>
    <out_trade_no>121a1wq1</out_trade_no>
    <op_user_id>test123@1900015381</op_user_id>
    <op_user_passwd>47ec2dd791e31e2ef2076caf64ed9b3d</op_user_passwd>
</xml>

POST XML 内容体进行请求

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
transaction_id String(32) UCHANG订单号,优先使用
out_trade_no String(32) 商户系统内部的订单号 ,32 个字符内、可包含字母,确保在商户系统唯一
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

10.4.4 返回结果

数据按 XML 的格式实时返回

成功返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <return_msg>OK</return_msg>
    <nonce_str>EFJCuYgkQY1aKgiy</nonce_str>
    <result_code>SUCCESS</result_code>
    <sign>DC449FF7869A8BBFEB075E797BEC3C1C</sign>
    <recall>N</recall>
    <return_code>SUCCESS</return_code>
    <mch_id>100010</mch_id>
</xml>

失败返回结果

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <return_msg>OK</return_msg>
    <mch_id>100010</mch_id>
    <nonce_str>oUS5MI0QYDA5IQ0G</nonce_str>
    <sign>567F4CF3BBB6D842D1588DF2E2661F6B</sign>
    <err_code>ERROR</err_code>
    <return_code>SUCCESS</return_code>
    <result_code>FAIL</result_code>
    <err_code_des>不是刷卡支付不允许使用撤销接口</err_code_des>
    <recall>Y</recall>
</xml>
变量名 必填 类型 说明
return_code String(16) 返回状态码,SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败; SUCCESS 表示关单成功, 此笔订单不能再发起支付;若已支付完成,则会发起退款; FAIL 或其它表示关单接口异常,可再次发起关单操作;
err_code String(32) 具体错误码请看错误码列表
err_code_des String (128) 结果信息描述

以下字段在 retsult_code 为 SUCCESS 的时候有返回 | 变量名 | 必填 | 类型 | 说明 | | :—: | :—: | :—: | :—: | | recall | 是 | String(1) | 是否需要继续调用撤销,Y-需要,N-不需要|

错误码: Qq reverse

10.5 订单查询接口

10.5.1 业务功能

根据商户订单号或者UCHANG订单号查询UCHANG的具体订单信息。

10.5.2 交互模式

后台系统调用交互模式

10.5.3 请求参数列表

请求 url:/qqpay/orders/query


请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100000000060</mch_id>
    <nonce_str>123</nonce_str>
    <sign>D08333776E172C47489625CF6BA20428</sign>
    <out_trade_no>121a1wq1</out_trade_no>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
transaction_id String(32) UCHANG交 易 号 , out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先。
out_trade_no String(32) 商户系统内部的订单号, out_trade_no 和 transaction_id 至少一个必填,同时存在时transaction_id 优先
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”

3.1.4 返回结果

返回成功示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <trade_state>CLOSED</trade_state>
  <trade_type>APP</trade_type>
  <nonce_str>c69b15765c702c1bec7885d879b87d17</nonce_str>
  <result_code>SUCCESS</result_code>
  <return_msg>SUCCESS</return_msg>
  <sign>42B00C95C7216A39056DE8E0AD9F5162</sign>
  <trade_state_desc>订单已经关闭</trade_state_desc>
  <return_code>SUCCESS</return_code>
  <transaction_id>8100000000060624407666504634368</transaction_id>
  <mch_id>100000000060</mch_id>
  <out_trade_no>121a1wq1</out_trade_no>
  <total_fee>1</total_fee>
</xml>

数据按 XML 的格式实时返回

变量名 必填 类型 说明
return_code String(16) 返回状态码, SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 trade_state 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
device_info String(32) UCHANG分配的终端设备号
trade_type String(16) 交易类型, JSAPI,NATIVE, MICROPAY
trade_state String(32) SUCCESS—支付成功
REFUND—转入退款
CLOSED—已关闭
REVERSE—已冲正
REVOKED—已撤销
USERPAYING—用户支付中
bank_type String(16) 银行类型
fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
total_fee Int 总金额,以分为单位,不允许包含任何字、 符号
cash_fee Int 现金支付金额订单现金支付金额
coupon_fee Int 现金券支付金额<=订单总金额, 订单总金额 -现金券金额为现金支付金额
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
attach String(128) 商家数据包,原样返回
time_end String(14) 支付完成时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自UChang服务器
trade_state_desc String(256) 对当前查询订单状态的描述和下一步操作的指引
out_transaction_id String(32) QQ钱包订单号

错误码: Qq query

10.6退款接口

10.6.1业务功能

商户针对某一个已经成功支付的订单发起退款,操作结果在同一会话中同步返回。

同一笔单的部分退款需要设置相同的订单号和不同的 out_refund_no 。一笔退款失败后重新 交,要采用原来 的 out_refund_no。总退款金额不能超过用户实际支付金额(现金券金额不能退款)。

退款时,会检查当天商户的QQ钱包交易收益余额是否足够退款,如果充足则可以退款。如果商户今日收益不足,则退款报错,需要等该商户当日收益增加到足够退款后,才能退款成功。

10.6.2 交互模式

后台系统调用交互模式

10.6.3 请求参数列表

请求url:/qqpay/refunds

POST XML 内容体进行请求

请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100000000060</mch_id>
    <nonce_str>123</nonce_str>
    <sign>EDA8E597A0B162F6642B3A214B4CCB48</sign>
    <transaction_id>8100000000060624438346714320896</transaction_id>
    <out_refund_no>1212121a4</out_refund_no>
    <refund_fee>1</refund_fee>
    <op_user_id>test123@1900015381</op_user_id>
    <op_user_passwd>47ec2dd791e31e2ef2076caf64ed9b3d</op_user_passwd>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UChang分配
device_info String(32) 终端设备号
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
transaction_id String(32) UChang单号, out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_trade_no String(32) 商 户 系 统 内 部 的 订 单 号 , out_trade_no 和 transaction_id 至少一个必填,同时存在时 transaction_id 优先
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。同个退款单号多次请求,UChang当一个单处理,只会退一次款。如果出现退款不成功,请采用原退款单号重新发起,避免出现重复退款。
refund_fee Int 退款总金额,单位为分,可以做部分退款

10.6.4 返回结果

数据按 XML 的格式实时返回

返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
 <result_code>SUCCESS</result_code>
  <total_fee>1</total_fee>
  <out_refund_no>1212121a4</out_refund_no>
  <out_transaction_id>19000153816011201712051388911417</out_transaction_id>
  <refund_channel>ORIGINAL</refund_channel>
  <nonce_str>106c5371cac5a624d8b68e1aecc8e5f1</nonce_str>
  <mch_id>100000000060</mch_id>
  <transaction_id>8100000000060624438346714320896</transaction_id>
  <return_code>SUCCESS</return_code>
  <refund_id>1000000000602624438786529562624</refund_id>
  <return_msg>SUCCESS</return_msg>
  <sign>588951AA1D7FF451D7799BD60DE62ADE</sign>
  <refund_fee>1</refund_fee>
  <out_trade_no>1212121a3</out_trade_no>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易 标识,交易是否成功需要查 看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
transaction_id String(28) UCHANG 订单号
out_trade_no String(32) 商户订单号
out_refund_no String(32) 商户退款单号
refund_id String(28) ULINE退款单号
refund_channel String(16) 退款渠道, ORIGINAL—原路退款 BALANCE—退回到余额
refund_fee Int 退款总金额,单位为分,可以做部分退款
total_fee Int 订单总金额,单位为分,只能为整数

错误码: Qq refund

10.7 退款查询接口

应用场景: 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用余额支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。

10.7.1 请求参数列表

请求url:/qqpay/refunds/query

POST XML 内容体进行请求

请求示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <mch_id>100000000060</mch_id>
    <nonce_str>123</nonce_str>
    <sign>4475C46B735670354797F9A69FE618FA</sign>
    <out_refund_no>1212121a4</out_refund_no>
</xml>
变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
device_info String(32) 商户自定义的终端设备号,如门店编号、设备的ID等
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
transaction_id String(32) UCHANG单号
out_refund_no String(32) 商户退款单号,32 个字符内、可包含字母,确保在商户系统唯一。
refund_id String(32) UChang退款单号 refund_id、out_refund_no 、 transaction_id 三个参数必填一个, 如果同事存在优先级为: refund_id>out_refund_no>transaction_id

10.7.2 返回结果

数据按 XML 的格式实时返回

返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
 <return_msg>SUCCESS</return_msg>
  <out_trade_no>1212121a3</out_trade_no>
  <cash_refund_fee_0>1</cash_refund_fee_0>
  <fee_type>CNY</fee_type>
  <refund_channel_0>ORIGINAL</refund_channel_0>
  <total_fee>1</total_fee>
  <transaction_id>8100000000060624438346714320896</transaction_id>
  <refund_fee_0>1</refund_fee_0>
  <refund_recv_accout_0>用户余额</refund_recv_accout_0>
  <refund_id_0>1000000000602624438786529562624</refund_id_0>
  <sign>86BE15569898ECAB9E967E2F246C912B</sign>
  <return_code>SUCCESS</return_code>
  <refund_count>1</refund_count>
  <mch_id>100000000060</mch_id>
  <out_transaction_id>19000153816011201712051388911417</out_transaction_id>
  <cash_fee>1</cash_fee>
  <out_refund_no_0>1212121a4</out_refund_no_0>
  <refund_status_0>SUCCESS</refund_status_0>
  <result_code>SUCCESS</result_code>
  <coupon_refund_fee_0>0</coupon_refund_fee_0>
  <nonce_str>eb890883dd492551162c6677d686304e</nonce_str>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功非 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

refund_status_$n 退款状态说明

SUCCESS—退款成功
FAIL—退款失败
PROCESSING—退款处理中
CHANGE—转入代发
退款到银行发现用户的卡作废或者冻结了
导致原路退款银行卡失败,资金回流到商户的现金帐号
需要商户人工干预,通过线下或者财付通转账的方式进行退款。
变量名 必填 类型 说明
result_code String(16) 业务结果,SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 错误代码,参考错误码
err_code_des String(128) 错误代码描述
mch_id String(32) 商户号
nonce_str String(32) 随机字符串
sign String(32) 签名

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

变量名 必填 类型 说明
transaction_id String(32) UCHANG交易号。
out_transaction_id String(32) QQ 交易号。
out_trade_no String(32) 商户系统内部的订单号
refund_count Int 退款记录数
total_fee int 订单总金额,单位为分,只能为整数
fee_type String(8) 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
cash_fee int 现金支付金额,单位为分,只能为整数
out_refund_no\$n String(32) 商户退款单号 \$n为下标
refund_id_\$n String(32) UCHANG退款单号 \$n为下标
refund_channel_\$n String(16) ORIGINAL—原路退款, BALANCE—退回到余额 \$n为下标
refund_fee_\$n Int 退款总金额,单位为分,可以做部分退款 \$n为下标
cash_refund_fee_\$n Int 现金退款金额,单位为分,只能为整数 \$n为下标
coupon_refund_fee_\$n Int 现金券退款金额 <= 退款金额, 退款金额-现金券退款金额为现金额
refund_recv_accout_\$n String(64) 退款入账账户
refund_status_\$n String(32) 退款状态

10.8支付通知接口

后台通知通过请求中的 notify_url 进行, post

10.8.1 通知结果参数列表

推荐的做法是, 当收到通知进行处理时, 首先检查对应业务数据的状态, 判断该通 知是否已经处理过, 如果没有处理过再进行处理, 如果处理过直接返回结果成功。 在对业务 数据进行状态检查和处理之前, 要采用数据锁进行并发控制, 以避免函数重入造成的数据混 乱。

ULINE后台通过 notify_url 通知商户,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:

示例数据

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <total_fee>1</total_fee>
    <time_end>20171205185125</time_end>
    <sign>222E942182E31B96C1F448311DE5E587</sign>
    <out_transaction_id>19000153816011201712051189104853</out_transaction_id>
    <bank_type>BALANCE</bank_type>
    <fee_type>CNY</fee_type>
    <coupon_fee>0</coupon_fee>
    <attach>附加</attach>
    <return_code>SUCCESS</return_code>
    <out_trade_no>121a1wq12</out_trade_no>
    <cash_fee>1</cash_fee>
    <mch_id>100000000060</mch_id>
    <trade_type>NATIVE</trade_type>
    <result_code>SUCCESS</result_code>
    <transaction_id>8100000000060624445887317938176</transaction_id>
    <device_info></device_info>
</xml>
变量名 必填 类型 说明
return_code String(16) SUCCESS 表示成功 FAIL 表示失败 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg String(128) 返回信息,如非空,为错误原因签名失败参 数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

变量名 必填 类型 说明
mch_id String(32) 商户号,由UCHANG分配
nonce_str String(32) 随机字符串,不长于 32 位
sign String(32) MD5 签名结果,详见“第 4 章 MD5 签名规则”
result_code String(16) SUCCESS 表示成功 FAIL 表示失败
err_code String(32) 参考错误码
err_code_des String (128) 结果信息描述
device_info String(32) UCHANG分配的终端设备号
transaction_id String(32) UCHANG交易号。
out_trade_no String(32) 商户系统内部的定单号,32 个字符内、可包含字母
attach String(128) 商家数据包,原样返回
time_end String(14) 支付完成时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自UChang服务器
trade_type String(16) 交易类型, JSAPI MICROPAY
bank_type String(16) 银行类型
total_fee Int 总金额,以分为单位,不允许包含任何字、 符号
fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
cash_fee Int 现金支付金额订单现金支付金额
coupon_fee Int 现金券支付金额<=订单总金额, 订单总金额 -现金券金额为现金支付金额
out_transaction_id String(32) qq交易号

10.8.2 后台通知结果反馈

商户处理后同步返回给ULINE参数:

返回示例

<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <return_code>SUCCESS</return_code>
</xml>
变量名 必填 类型 示例 说明
return_code String(16) 返回状态码, SUCCESS SUCCESS/FAIL SUCCESS表示商户接收通知成功并校验成功
return_msg String(128) OK 返回信息,如非空,为错误原因: 签名失败 参数格式校验错误