聚合支付

支付对象

关于支付,Adapay 系统内数据是通过 Payment对象 的形式进行流转,所有的支付相关信息都会存储在这个对象中,您可以通过 Adapay 开放的方法创建一个新的 Payment对象,也可以通过 Payment对象 的唯一标识 id 来查询一个已经存在的 Payment对象 状态。

使用 Adapay 前端 SDK 进行支付时,也会用到 Payment对象,服务端在传 Payment对象 到客户端进行支付前,请先使用序列化方式将对象转换成 JSON 字符串。

属性

类型

描述

id

String(64)

由 Adapay 生成的支付对象 id, 该 id 在 Adapay 系统内唯一

object

String(20)

支付对象,payment

created_time

Timestamp

支付创建时的 10 位时间戳

order_no

String(64)

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

prod_mode

String(5)

是否 prod模式,true 是 prod模式,false 是 mock模式

app_id

String(64)

控制台 主页面应用的app_id

pay_channel

String(20)

支付渠道,参见 支付渠道 说明

pay_amt

String(16)

交易金额(必须大于 0),保留两位小数点,如0.10、100.05等

currency

String(3)

详见 货币代码

query_url

String(128)

可临时用来查询支付订单状态的链接,此链接的有效期与订单有效期相同

description

String(128)

订单附加说明

expend

Map

支付渠道请求成功返回的额外参数。详见 支付渠道 expend参数 说明

party_order_id

String(64)

用户账单上的商户订单号

end_time

String(14)

用户支付完成时间

status

String(16)

当前交易状态,参见 状态 说明

error_code

String(32)

错误码,详见 错误

error_msg

String(128)

错误描述,详见 错误

error_type

String(32)

错误类型,详见 错误

invalid_param

String(32)

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

创建支付对象

当您想发起一次支付请求时需要通过 Adapay 提供的创建方法获取一个新的 Payment对象,您可使用此 Payment对象 发起支付。 对于支付结果,Adapay 会发送 异步消息通知 告知。

请求参数

参数

类型

必填

描述

order_no

String(64)

Y

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

app_id

String(64)

Y

控制台 主页面应用的app_id

pay_channel

String(20)

Y

支付渠道,参见 支付渠道

pay_amt

String(14)

Y

交易金额,必须大于0,保留两位小数点,如0.10、100.05等

pay_mode

String(20)

N

支付模式,delay- 延时分账模式;值为空时,表示实时分账;值为 delay 时,div_members 字段必须为空

goods_title

String(64)

Y

商品标题

goods_desc

String(127)

Y

商品描述信息

currency

String(3)

N

3位 ISO 货币代码,小写字母,默认为人民币:cny,详见 货币代码

div_members

String

N

分账对象信息列表,json 数组形式,详见 分账对象信息列表

description

String(128)

N

订单附加说明

time_expire

String(20)

N

订单失效时间,输入格式:yyyyMMddHHmmss,默认失效时间为微信、支付宝:反扫类:3分钟;非反扫类:2小时;云闪付:1天

device_info

Map

N

前端设备信息,详见 设备信息

expend

Map

?

支付渠道额外参数,JSON格式,条件可输入,详见 支付渠道 expend参数

notify_url

String(250)

N

异步通知地址,默认使用轻量、简单MQTT通知(强烈建议使用),url为http/https路径,服务器POST回调,URL 上请勿附带参数

响应

同步返回一个 支付对象 的 JSON。

调用示例

Java

// 请求参数
Map<String, Object> paymentParams = new HashMap<String, Object>();
paymentParams.put("order_no",  "123456789");
paymentParams.put("pay_amt", "0.05");
paymentParams.put("app_id", "app_XXXXXXXX");
paymentParams.put("pay_channel",  "alipay");
paymentParams.put("goods_title",  "Your goods_title");
paymentParams.put("goods_desc",  "Your goods_desc");
paymentParams.put("description",  "payment Discription");
paymentParams.put("div_members",  [{"amount":"0.05", "fee_flag":"Y", "member_id":"member_id_test"}]);
// 调用创建方法,获取 Payment对象_
Map<String, Object> response = Payment.create(paymentParams);

成功响应

{
  "id": "002112020012010545810065165317376983040",
  "created_time": "1579488898",
  "order_no": "123456789",
  "prod_mode": "true",
  "app_id": "app_XXXXXXXX",
  "pay_channel": "alipay",
  "pay_amt": "0.05",
  "currency": "cny",
  "query_url": "https://api.adapay.tech/v1/expire/payments/1/49a10b45183a876b6269acb0f517bdcf",
  "status": "succeeded",
  "description": "payment Discription",
  "expend": {
    "pay_info": "bax028781ovixf6i8xyf60be"
  }
}

查询支付对象

通过 Payment对象 的 id 查询一个已创建的 Payment对象。仅支持查询支付交易发起之后3天内的交易状态,3天之后的交易状态请使用 对账单下载 对账,或登陆 控制台 查询。

请求参数

参数

类型

必填

描述

payment_id

String

Y

由 Adapay 生成的支付对象 id

响应

查询的结果将通过一个 JSON 同步返回,返回参数如下:

参数

描述

id

String(64)

Y

由 Adapay 生成的支付对象 id

order_no

String(64)

Y

请求订单号,只能为英文、数字或者下划线的一种或多种组合

pay_channel

String(20)

Y

支付渠道,参见 支付渠道

pay_amt

String(16)

N

交易金额,必须大于 0,保留两位小数点,如0.10、100.05等

status

String(16)

Y

当前交易状态,参见 状态 说明

error_code

String(32)

N

错误码,详见 错误

error_msg

String(128)

N

错误描述,详见 错误

error_type

String(32)

N

错误类型,详见 错误

invalid_param

String(32)

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

调用示例

Java

// 在完成初始化设置情况下,调用查询方法,获取 Payment 查询结果
Map<String, Object> response = Payment.query("002112020012010545810065165317376983040");

成功响应

{
  "id": "002112020012010545810065165317376983040",
  "order_no": "123456789",
  "pay_amt": "0.05",
  "pay_channel": "alipay",
  "status": "succeeded"
}

支付关单

针对已经创建的 支付对象,您可以调用关单接口进行交易的关闭。调用此接口后,该用户订单将不再能支付成功。 对于关单功能的使用有如下规则:

1.存在关单记录,不能再次关单

2.交易时间 1分钟 内无法关单成功

3.正扫交易时间超过 2小时 无法关单成功

4.支付宝正扫接口,如果用户没有扫码,订单不能关闭成功(二维码给用户展示,如果用户没有用手机去扫码,那这笔就不能关单; 如果用户扫过了的话(无需支付成功)就可以关单了)—-微信正扫无此条限制

对于已经成功付款的订单,请使用 退款对象 接口进行退款处理。我们建议您只有针对未支付的订单调用关单接口。

请求参数

参数

类型

必填

描述

payment_id

String(32)

Y

由 Adapay 生成的支付对象 id

reason

String(255)

N

关单描述

expend

String(255)

N

扩展域

notify_url

String(250)

N

异步通知地址,默认使用轻量、简单MQTT通知(强烈建议使用),url为http/https路径,服务器POST回调,URL 上请勿附带参数

响应

关单的结果将通过一个 JSON 同步返回,返回参数如下:

参数

描述

id

String(64)

Y

由 Adapay 生成的支付对象 id

created_time

String(10)

Y

支付创建时的时间戳

status

String(16)

Y

当前交易状态,参见 状态 说明

error_code

String(32)

N

错误码,详见 错误

error_msg

String(128)

N

错误描述,详见 错误

error_type

String(32)

N

错误类型,详见 错误

invalid_param

String(32)

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

调用示例

Java

// 在完成初始化设置情况下,调用关单方法获取结果
Map<String, Object> response = Payment.close("002112020012010545810065165317376983040");

成功响应

{
  "payment_id": "002112020012010545810065165317376983040",
  "created_time": "1579488898",
  "status": "succeeded"
}

退款对象

属性

类型

描述

id

String(64)

由 Adapay 生成的退款对象 id

object

String(20)

退款对象,refund

refund_order_no

String(64)

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

payment_id

String(64)

退款目标支付对象 id

refund_amt

String(16)

退款金额(必须大于 0),保留两位小数点,如0.10、100.05等

prod_mode

String(5)

是否 prod模式,true 是 prod模式,false 是 mock模式

trans_state

String(16)

退款状态

created_time

String(10)

退款对象创建时间

succeed_time

String(16)

退款成功时间

fee_amt

String(16)

退款手续费

status

String(16)

当前交易状态,参见 状态 说明

error_code

String(32)

错误码,详见 错误

error_msg

String(128)

错误描述,详见 错误

error_type

String(32)

错误类型,详见 错误

invalid_param

String(32)

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

创建退款对象

当您的业务需要发起退款时,可通过 Adapay 系统提供的创建 Refund对象 方法创建一个退款对象,资金会原路退回用户的支付宝或微信中。 支持一次全额或多次部分退款,退款次数最多不超过10次。多次部分退款时,当前退款金额 + 已退款金额不能大于原支付金额。 对于每次撤销交易,Adapay 都会通过 异步消息通知 告知结果。

注:创建退款对象同步返回成功,表示 Adapay 受理成功,退款结果以异步通知为准。

请求参数

参数

类型

必填

描述

id

String(64)

Y

当支付确认成功后进行退款,请传入支付确认对象的id;当实时分账成功后进行退款,请传入支付对象的id。

refund_order_no

String(64)

Y

请求订单号,只能为英文、数字或者下划线的一种或多种组合

refund_amt

String(16)

Y

退款金额,若退款金额小于原交易金额,则认为是部分退款,必须大于0,保留两位小数点,如0.10、100.05等

reason

String(512)

N

退款描述

expend

String(512)

N

扩展域

device_info

String(1024)

N

前端设备信息,详见 设备信息

div_members

String(1024)

N

分账对象信息列表,json 形式,详见 分账对象信息列表 ;若原交易对象未分账,则创建退款对象时,该字段不传;若原交易对象分账,则退款分账对象必须在原交易参与的分账方范围内,分账对象列表内的总金额必须等于退款金额,每个分账对象的退分账金额必须满足:退分账金额+已退分账金额 <= 原交易分账对象的分账金额。

notify_url

String(250)

N

异步通知地址,默认使用轻量、简单MQTT通知(强烈建议使用),url为http/https路径,服务器POST回调,URL 上请勿附带参数

响应

同步返回一个 退款对象 的 JSON。

调用示例

Java

// 在完成初始化设置情况下,调用方法,获取 Refund对象
String id = "002112020012010545810065165317376983040";
Map<String, Object> refundParams = new HashMap<String, Object>();
refundParams.put("refund_amt", "0.05");
refundParams.put("refund_order_no", "123456789");
Map<String, Object> response = Refund.create(id, refundParams);

成功响应

{
  "id": "002112020012010545810065165317376983041",
  "created_time": "1410778843",
  "payment_id": "002112020012010545810065165317376983040",
  "refund_amt": "0.05",
  "trans_state": "refunded",
  "fee_amt": "0.00",
  "status": "pending"
}

查询退款对象

您可以在任何时候,通过退款查询接口确认退款状态。通过 退款对象 的 id 或支付对象的id查询已创建的退款对象。

请求参数

参数

类型

必填

描述

refunrd_id

String(64)

N

Adapay生成的退款对象id,两者必传其一

payment_id

String(64)

N

Adapay生成的支付对象id,两者必传其一

响应

参数

类型

必填

描述

prod_mode

String(5)

Y

是否 prod模式,true 是 prod模式,false 是 mock模式

refunds

List

N

退款对象列表

status

String(16)

Y

当前交易状态,参见 状态 说明

error_code

String(32)

N

错误码,详见 错误

error_msg

String(128)

N

错误描述,详见 错误

error_type

String(32)

N

错误类型,详见 错误

invalid_param

String(32)

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

refunds字段说明:

参数

类型

必填

描述

refund_id

String(64)

Y

Adapay生成的退款对象id

trans_status

String(1)

Y

退款状态:I-初始,P-处理中,F-失败,S-成功

payment_id

String(64)

Y

Adapay生成的支付对象id

refund_amt

String(16)

Y

退款金额

fee_amt

String(16)

N

退款手续费,退款成功时有值

调用示例

Java

Map<String, Object> refundParams = new HashMap<>(2);
refundParams.put("payment_id", payment_id);
refundParams.put("refund_id", refund_id);
Map<String, Object> refund = Refund.query(refundParams, apiKey);

成功响应

{
    "status": "succeeded",
    "prod_mode": "true",
    "refunds": [
        {
            "payment_id": "002112019110811022810038712892084113408",
            "refund_id": "0021120191108110337980038713178955902976",
            "trans_status": "P",
            "refund_amt": "0.01",
            "fee_amt": ""
        }
    ]
}

用户

个人用户( Member)

属性

类型

描述

app_id

String(64)

控制台 主页面应用的app_id

member_id

String(64)

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

location

String(128)

用户地址

email

String(64)

用户邮箱

gender

String(16)

MALE:男,FEMALE:女

tel_no

String(11)

用户手机号

nickname

String

用户昵称

user_name

String(64)

用户姓名

cert_type

String(2)

证件类型,仅支持:00-身份证

cert_id

String(64)

证件号

created_time

String(10)

创建时的时间戳

prod_mode

String(5)

是否 prod模式,true 是 prod模式,false 是 mock模式

disabled

String(1)

是否禁用该用户,Y:是,N:否

identified

String(1)

是否已实名认证,Y:是,N:否

settle_accounts

List

SettleAccount对象 列表

status

String(16)

当前交易状态,参见 状态 说明

error_code

String(32)

错误码,详见 错误

error_msg

String(128)

错误描述,详见 错误

error_type

String(32)

错误类型,详见 错误

invalid_param

String(32)

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

创建用户对象

创建用户对象用于将商户 member_id 与 Adapay 系统做关联,商户需要保证 member_id 在应用 app_id 下唯一。关联完成后, 可以创建结算账户用于用户分账功能,也可以更新用户对象禁用用户状态,禁用用户所有交易功能。

注:若历史已创建结算账户成功的 member_id,则可以直接使用收银台对象功能。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

location

String(128)

N

用户地址

email

String(64)

N

用户邮箱

gender

String(16)

N

MALE:男,FEMALE:女,为空时表示未填写

nickname

String(16)

N

用户昵称

tel_no

String(11)

N

用户手机号,使用 收银台对象 功能必填

user_name

String(64)

N

用户姓名,使用 收银台对象 功能必填

cert_type

String(2)

N

证件类型,仅支持:00-身份证,使用 收银台对象 功能必填

cert_id

String(64)

N

证件号,使用 收银台对象 功能必填

  • 响应

成功时同步返回一个包含 Member对象 的 JSON。

  • 调用示例

Java

Map<String, Object> memberParams = new  HashMap<String, Object>(7);
memberParams.put("member_id", "member_id_test");
memberParams.put("app_id", "app_XXXXXXXX");
memberParams.put("location", "上海市徐汇区宜山路700号");
memberParams.put("email", "123@163.com");
memberParams.put("gender", "MALE");
memberParams.put("tel_no", "13153333333");
memberParams.put("nickname", "nick_name");
Map<String, Object> member = Member.create(memberParams);
  • 成功响应

{
  "member_id": "member_id_test",
  "created_time": "1568908104",
  "gender": "MALE",
  "identified": "N",
  "tel_no": "13153333333",
  "prod_mode": "true",
  "nickname": "nick_name",
  "disabled": "N",
  "location": "上海市徐汇区宜山路700号",
  "app_id": "app_XXXXXXXX",
  "email": "123@163.com",
  "object": "member",
  "status": "succeeded"
}

更新用户对象

对创建完成用户对象更新用户基本信息,可对用户状态禁用,禁用后用户不能做其它交易。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

location

String(128)

N

用户地址

email

String(64)

N

用户邮箱

gender

String(16)

N

MALE:男,FEMALE:女,为空时表示未填写

tel_no

String(11)

N

用户手机号

nickname

String(16)

N

用户昵称

disabled

String(1)

N

是否禁用该用户,Y:是,N:否

  • 响应

成功时同步返回一个包含 Member对象 的 JSON。

  • 调用示例

Java

Map<String, Object> memberParams = new  HashMap<String, Object>(7);
memberParams.put("member_id", "member_id_test");
memberParams.put("app_id", "app_XXXXXXXX");
memberParams.put("location", "上海市徐汇区宜山路700号");
memberParams.put("email", "1234@163.com");
memberParams.put("gender", "MALE");
memberParams.put("tel_no", "13153333333");
memberParams.put("nickname", "nick_name");
memberParams.put("disabled", "Y");
Map<String, Object> member = Member.update(memberParams);

成功响应

{
    "member_id": "member_id_test",
    "created_time": "1568908104",
    "gender": "MALE",
    "identified": "N",
    "tel_no": "13153333333",
    "prod_mode": "true",
    "nickname": "nick_name",
    "disabled": "Y",
    "location": "上海市徐汇区宜山路700号",
    "app_id": "app_XXXXXXXX",
    "email": "1234@163.com",
    "object": "member",
    "status": "succeeded"
}

查询用户对象

查询已创建的单个用户对象

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

  • 响应

成功时同步返回一个包含 Member对象 的 JSON。

  • 调用示例

Java

Map<String, Object> memberParams = new  HashMap<String, Object>(2);
memberParams.put("member_id", "member_id_test");
memberParams.put("app_id", "app_XXXXXXXX");
Map<String, Object> member = Member.query(memberParams);

成功响应

{
    "member_id": "member_id_test",
    "created_time": "1568908104",
    "gender": "MALE",
    "identified": "N",
    "tel_no": "13153333333",
    "prod_mode": "true",
    "nickname": "nick_name",
    "disabled": "Y",
    "location": "上海市徐汇区宜山路700号",
    "app_id": "app_XXXXXXXX",
    "email": "1234@163.com",
    "object": "member",
    "status": "succeeded"
}

查询用户对象列表

查询商户应用 id 下已创建的用户对象列表

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

page_index

int

N

当前页码,取值范围 1~300000,默认值为 1

page_size

int

N

页面容量,取值范围 1~20,默认值为 10

created_gte

String

N

查询大于等于创建时间(13位时间戳)

created_lte

String

N

查询小于等于创建时间(13位时间戳);若不为空时,created_gte 字段值不能为空且小于created_lte 时间

  • 响应

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

object

String

N

用户对象列表,list

members

List

N

Member对象 列表

prod_mode

String(5)

Y

是否 prod模式,true 是 prod模式,false 是 mock模式

has_more

boolean

Y

是否还有更多,true-是,false-否

  • 调用示例

Java

Map<String, Object> memberParams = new  HashMap<String, Object>(2);
memberParams.put("page_index", "1");
memberParams.put("app_id", "app_XXXXXXXX");
memberParams.put("page_size", "20");
memberParams.put("created_gte", String.valueOf(System.currentTimeMillis() - 5 * 60 * 1000));
memberParams.put("created_lte", String.valueOf(System.currentTimeMillis()));
Map<String, Object> member = Member.queryList(memberParams);
  • 成功响应

{
    "members": [{
        "member_id": "member_id_test",
        "created_time": "1568908104",
        "gender": "MALE",
        "identified": "N",
        "tel_no": "13153333333",
        "prod_mode": "true",
        "nickname": "nick_name",
        "disabled": "Y",
        "location": "上海市徐汇区宜山路700号",
        "app_id": "app_XXXXXXXX",
        "email": "1234@163.com",
        "object": "member",
        "status": "succeeded"
    }],
    "prod_mode": "true",
    "has_more": false,
    "object": "list",
    "status": "succeeded"
}

企业用户(CorpMember)

属性

类型

描述

app_id

String(64)

控制台 主页面应用的app_id

order_no

String(64)

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

member_id

String(64)

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

name

String(50)

企业名称

prov_code

String(4)

省份编码 (省市编码

area_code

String(4)

地区编码 (省市编码

social_credit_code

String(18)

统一社会信用码

social_credit_code_expires

String(8)

统一社会信用证有效期(格式:YYYYMMDD,例如:20190909)

business_scope

String(200)

经营范围

legal_person

String(20)

法人姓名

legal_cert_id

String(20)

法人身份证号码

legal_cert_id_expires

String(8)

法人身份证有效期(格式:YYYYMMDD,例如:20190909)

legal_mp

String(11)

法人手机号

address

String(256)

企业地址

zip_code

String(6)

邮编

telphone

String(30)

企业电话

email

String(40)

企业邮箱

attach_file

File

上传附件,传入的中文文件名称为 UTF-8 字符集 URLEncode 编码后的字符串。内容须包含三证合一证件照、法人身份证正面照、法人身份证反面照、开户银行许可证照。 压缩 zip包后上传,最大限制为 4 M。

bank_code

String(8)

银行代码,如果需要自动开结算账户,本字段必填(详见附录 银行代码

bank_acct_type

String(1)

银行账户类型:1-对公;2-对私,如果需要自动开结算账户,本字段必填

card_no

String(40)

银行卡号,如果需要自动开结算账户,本字段必填

card_name

String(64)

银行卡对应的户名,如果需要自动开结算账户,本字段必填

settle_accounts

List

SettleAccount对象 列表

status

String(16)

当前交易状态,参见 状态 说明

error_code

String(32)

错误码,详见 错误

error_msg

String(128)

错误描述,详见 错误

error_type

String(32)

错误类型,详见 错误

invalid_param

String(32)

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

创建企业用户对象

创建企业用户对象是将商户 member_id 与 Adapay 系统做关联,商户需要保证 member_id 在应用 id 下唯一。 创建企业用户对象实际是发起企业用户申请,同步返回 pending 状态表示申请已受理,人工审核后,审核成功或失败结果会 异步消息通知 告知。

审核成功,则创建企业用户对象成功;审核失败,您可根据审核失败原因修改对应要素,重新调用创建企业用户对象发起申请。

创建企业用户对象若上送了银行代码、银行账户类型、银行卡号、银行卡开户姓名要素时,人工审核成功后,Adapay 系统自动创建企业用户结算账户对象;若未上送,则不会自动创建结算账户对象,但您可调用创建结算账户对象单独创建结算账户。

注:当银行账户类型为2-对私时,请务必绑定一张 Ⅰ类 银行卡,若绑定了一张 Ⅱ类 银行卡时,当结算金额超过10000元时,银行会提示金额超限导致结算失败。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

order_no

String(64)

Y

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

name

String(50)

Y

企业名称

prov_code

String(4)

Y

省份编码 (省市编码

area_code

String(4)

Y

地区编码 (省市编码

social_credit_code

String(18)

Y

统一社会信用码

social_credit_code_expires

String(8)

Y

统一社会信用证有效期

business_scope

String(200)

Y

经营范围

legal_person

String(20)

Y

法人姓名

legal_cert_id

String(20)

Y

法人身份证号码

legal_cert_id_expires

String(8)

Y

法人身份证有效期

legal_mp

String(11)

Y

法人手机号

address

String(256)

Y

企业地址

zip_code

String(6)

N

邮编

telphone

String(30)

N

企业电话

email

String(40)

N

企业邮箱

attach_file

File

Y

上传附件,传入的中文文件名称为 UTF-8 字符集 URLEncode 编码后的字符串。内容须包含三证合一证件照、法人身份证正面照、法人身份证反面照、开户银行许可证照。 压缩 zip包后上传,最大限制为 4 M。

bank_code

String(8)

N

银行代码,如果需要自动开结算账户,本字段必填(详见附录 银行代码

bank_acct_type

String(1)

N

银行账户类型:1-对公;2-对私,如果需要自动开结算账户,本字段必填

card_no

String(40)

N

银行卡号,如果需要自动开结算账户,本字段必填

card_name

String(64)

N

银行卡对应的户名,如果需要自动开结算账户,本字段必填

notify_url

String(250)

N

异步通知地址,默认使用轻量、简单MQTT通知(强烈建议使用),url为http/https路径,服务器POST回调,URL 上请勿附带参数

  • 同步返回

参数

类型

必填

描述

order_no

String(64)

Y

请求订单号

member_id

String(64)

Y

商户下的用户id

app_id

String(64)

Y

控制台主页面应用的app_id

created_time

String(8)

Y

创建时的时间戳

prod_mode

String(5)

Y

是否 prod模式,true 是 prod模式,false 是 mock模式

  • 调用示例

Java

Map<String, Object> memberParams = new  HashMap<String, Object>(2);
memberParams.put("member_id", "jsdk_member\_"+System.currentTimeMillis());
memberParams.put("app_id", "app_XXXXXXXX");
memberParams.put("order_no","jsdk_order\_"+System.currentTimeMillis());
memberParams.put("social_credit_code_expires", "1111");
memberParams.put("business_scope", "123");
memberParams.put("name", "中国测试有限公司");
memberParams.put("prov_code", "0011");
memberParams.put("area_code", "1100");
memberParams.put("social_credit_code", "201932658452655");
memberParams.put("legal_person", "张测试");
memberParams.put("legal_cert_id", "321485199014234852");
memberParams.put("legal_cert_id_expires", "20220112");
memberParams.put("legal_mp", "13958465215");
memberParams.put("address", "中国上海");
memberParams.put("zip_code", "225485");
memberParams.put("telphone", "41164452");
memberParams.put("email" , "ceshi@qq.com");
memberParams.put("bank_code", "652142");
memberParams.put("bank_acct_type", "1");
memberParams.put("card_no", "622546895642156");
memberParams.put("card_name", "中国测试有限公司");
File file = new File("/demo/test.zip");
Map<String, Object> member = CorpMember.create(memberParams,file);
  • 成功响应

{
    "member_id": "jsdk_member_1568908107580",
    "order_no": "jsdk_order_1568908107580",
    "created_time": "20190919234828",
    "prod_mode": "true",
    "app_id": "app_XXXXXXXX",
    "status": "pending"
}

查询企业用户对象

查询已创建的企业用户对象

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

  • 响应

成功时同步返回一个包含 CorpMember对象 的 JSON。

  • 调用示例

Java

Map<String, Object> memberParams = new  HashMap<String, Object>(2);
memberParams.put("member_id", "member_id_test");
memberParams.put("app_id", "app_XXXXXXXX");
Map<String, Object> member = CorpMember.query(memberParams);
  • 成功响应

{
  "address": "湖南省滨州市",
  "app_id": "app_XXXXXXXX",
  "area_code": "4201",
  "business_scope": "",
  "email": "",
  "legal_cert_id": "#011pvYcG/6l6ofY38Ql6P31eUb/xoAqNLSL",
  "legal_cert_id_expires": "",
  "legal_mp": "#0 11HGjFbJFO8mBejceLLqFypw==",
  "legal_person": "xxxx",
  "member_id": "member_id_test",
  "name": "测试企业用户信息 4",
  "prov_code": "0042",
  "social_credit_code": "91410300X148288455",
  "social_credit_code_expires": "",
  "telphone": "",
  "zip_code": "",
  "status": "succeeded",
  "prod_mode": "true"
}

结算账户(SettleAccount)

属性

类型

描述

id

String(64)

由 Adapay 生成的结算账户对象 id

object

String(20)

结算账户对象,settle_account

channel

String(16)

目前仅支持:bank_account(银行卡)

created_time

String(10)

创建时的时间戳

prod_mode

String(5)

是否 prod模式,true 是 prod模式,false 是 mock模式

account_info

Object

结算账户信息,参见 结算账户信息对象

status

String(16)

当前交易状态,参见 状态 说明

error_code

String(32)

错误码,详见 错误

error_msg

String(128)

错误描述,详见 错误

error_type

String(32)

错误类型,详见 错误

invalid_param

String(32)

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

创建结算账户对象

创建结算账户对象是为一个已创建用户对象创建结算账户,用于对用户分账金额的结算,目前仅支持绑定银行卡结算账户。

用户创建对私结算账户时,会对银行卡号、银行卡开户姓名、身份证号三要素认证,若认证失败,则创建结算账户失败。

每个结算账户对象 Adapay 系统会生成一个唯一的 id,可用于查询结算账户对象,或者删除结算账户对象。

注:当银行账户类型为2-对私时,请务必绑定一张 Ⅰ类 银行卡,若绑定了一张 Ⅱ类 银行卡时,当结算金额超过10000元时,银行会提示金额超限导致结算失败。

注:若创建结算账户对象是在22:30分之后创建成功的,那么该用户的结算会延后一个结算日结算;若是在22:30分之前,用户会正常结算。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

channel

String

Y

目前仅支持:bank_account(银行卡)

account_info

Object

Y

结算账户信息,参见 结算账户信息对象

  • 响应

成功时同步返回一个包含 SettleAccount对象 的 JSON。

  • 调用示例

Java

Map<String, Object> settleCountParams = new  HashMap<String, Object>(4);
Map<String, Object> accountInfo = new  HashMap<String, Object>(9);
accountInfo.put("card_id","6222021703001692221");
accountInfo.put("card_name","袁电茜");
accountInfo.put("cert_id","310109200006062491");
accountInfo.put("cert_type","00");
accountInfo.put("tel_no","18888888881");
accountInfo.put("bank_code","03060000");
accountInfo.put("bank_acct_type","2");
accountInfo.put("prov_code","0031");
accountInfo.put("area_code","3100");
settleCountParams.put("member_id", "member_id_test");
settleCountParams.put("app_id", "app_XXXXXXXX");
settleCountParams.put("channel","bank_account");
settleCountParams.put("account_info", accountInfo);
Map<String, Object> settleCount = SettleAccount.create(settleCountParams);
  • 成功响应

{
  "account_info": {
      "area_code": "1401",
      "bank_acct_type": "2",
      "bank_code": "0105999",
      "bank_name": "",
      "card_id": "622700****0576",
      "card_name": "xxx",
      "cert_id": "1401****0631",
      "cert_type": "00",
      "prov_code": "0014",
      "tel_no": "137****xxxx"
  },
  "app_id": "app_XXXXXXXX",
  "channel": "bank_account",
  "create_time": "1568963254",
  "id": "0006440476699456",
  "type": "",
  "status": "succeeded",
  "prod_mode": "true"
}

查询结算账户对象

使用 Adapay 系统生成的结算账户对象 id 查询已创建的结算账户对象信息。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

settle_account_id

String(64)

Y

由 Adapay 生成的结算账户对象 id

  • 响应

成功时同步返回一个包含 SettleAccount对象 的 JSON。

  • 调用示例

Java

Map<String, Object> settleCountParams = new  HashMap<String, Object>(3);
settleCountParams.put("settle_account_id", "0006440476699456");
settleCountParams.put("member_id", "member_id_test");
settleCountParams.put("app_id", "app_XXXXXXXX");
Map<String, Object> settleCount = SettleAccount.query(settleCountParams);
  • 成功响应

{
  "account_info": {
      "area_code": "1401",
      "bank_acct_type": "2",
      "bank_code": "0105999",
      "bank_name": "",
      "card_id": "622700****0576",
      "card_name": "xxx",
      "cert_id": "1401****0631",
      "cert_type": "00",
      "prov_code": "0014",
      "tel_no": "137****xxxx"
  },
  "app_id": "app_XXXXXXXX",
  "channel": "bank_account",
  "create_time": "1568963254",
  "id": "0006440476699456",
  "type": "",
  "status": "succeeded",
  "prod_mode": "true"
}

删除结算账户对象

删除结算账户对象是对已创建完成的结算账户对象进行删除操作。删除结算账户成功后,支付时不再支持分账功能。您可再调用创建结算账户对象创建新的结算账户。删除结算账户对象需要 Adapay 系统生成的结算账户对象 id 进行删除。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

settle_account_id

String(64)

Y

由 Adapay 生成的结算账户对象 id

  • 响应

参数

类型

必填

描述

id

String(64)

Y

由 Adapay 生成的结算账户对象 id

prod_mode

boolean

Y

是否 prod模式,true 是 prod模式,false 是 mock模式

status

String

Y

当前交易的状态,参见 状态 说明

error_code

String

N

错误码,详见 错误

error_msg

String

N

错误描述,详见 错误

error_type

String

N

错误类型,详见 错误

invalid_param

String

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

  • 调用示例

Java

Map<String, Object> settleCountParams = new  HashMap<String, Object>(2);
settleCountParams.put("settle_account_id", "0006440476699456");
settleCountParams.put("member_id", "member_id_test");
settleCountParams.put("app_id", "app_XXXXXXXX");
Map<String, Object> settleCount = SettleAccount.delete(settleCountParams);
  • 成功响应

{
  "status": "successed",
  "id":"0006440476699456",
  "prod_mode": "true"
}

修改结算配置

修改结算配置用于修改用户结算账户的配置,可修改用户结算的起始金额、结算留存金额、结算信息摘要等。

注:本接口不能更改结算卡,如需更改结算账户的结算卡,请先删除结算账户,再重新创建结算账户。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户下的用户id,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

settle_account_id

String(64)

Y

Adapay系统返回的结算账户id

min_amt

String(16)

N

结算起始金额 ( 0.00格式,整数部分最长13位,小数部分最长2位) min_amt, remained_amt,channel_remark至少有一个不为空

remained_amt

String(16)

N

结算留存金额 ( 0.00格式,整数部分最长13位,小数部分最长2位)

channel_remark

String(200)

N

结算信息摘要,银行出款时摘要信息

  • 响应

参数

类型

必填

描述

id

String(64)

Y

由Adapay生成的结算账户对象id

object

String(8)

Y

结算账户对象,settle_account

created_time

String(16)

Y

创建时的时间戳

prod_mode

String(16)

Y

是否prod模式,true是prod模式,false是mock模式

channel

String(16)

Y

目前仅支持:bank_account(银行卡)

account_info

Object

Y

结算账号信息

status

String

Y

当前交易的状态,参见 状态 说明

error_code

String

N

错误码,详见 错误

error_msg

String

N

错误描述,详见 错误

error_type

String

N

错误类型,详见 错误

invalid_param

String

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

account_info字段说明:

参数

类型

非空

说明

card_id

String(64)

Y

银行卡号

card_name

String(16)

Y

银行账户名称

cert_id

String(30)

Y

身份证号

cert_type

String(2)

N

默认:00-身份证

tel_no

String(11)

Y

手机号

bank_code

String(8)

Y

详见开户银行编码附录

bank_name

String(64)

N

开户银行名称

bank_acct_type

String(1)

Y

银行账户类型:1-对公;2-对私

prov_code

String(4)

Y

省份

area_code

String(4)

Y

地区

min_amt

String(16)

N

结算起始金额 ( 0.00格式,整数部分最长13位,小数部分最长2位),修改结算配置时返回

remained_amt

String(16)

N

结算留存金额 ( 0.00格式,整数部分最长13位,小数部分最长2位),修改结算配置时返回

channel_remark

String(200)

N

结算信息摘要,银行出款时摘要信息,修改结算配置时返回

  • 调用示例

Java

Map<String,  Object>  params  =  new  HashMap<>(6);
params.put("app_id", "app_XXXXXXXX");
params.put("member_id", "member_id_test");
params.put("settle_account_id", "0006440476699456");
params.put("min_amt", "20.00");
params.put("remained_amt", "50.00");
params.put("channel_remark", "摘要测试");
Map<String,  Object>  settleCount  =  SettleAccount.modify(params, apiKey);
  • 成功响应

{
    "object":  "settle_account",
    "status":  "succeeded",
    "prod_mode":  "true",
    "id":  "0006440476699456",
    "create_time":  "1573020003",
    "app_id":  "app_XXXXXXXX",
    "channel":  "bank_account",
    "account_info":  {
        "card_id":  "622202****2228",
        "card_name":  "吕雄然",
        "cert_type":  "00",
        "cert_id":  "3101****5961",
        "tel_no":  "138****4636",
        "bank_code":  "03060000",
        "bank_name":  "",
        "bank_acct_type":  "2",
        "prov_code":  "0011",
        "area_code":  "1100",
        "min_amt":  "20.00",
        "remained_amt":  "50.00",
        "channel_remark":  "摘要测试"
    }
}

查询结算明细列表

用户创建结算账户成功后,可查询该用户在Adapay系统发起结算明细,查询时间间隔必须小于等于31天。若查询商户自身结算明细时,用户id可输入0。

  • 请求参数

参数

类型

必填

描述

app_id

String(64)

Y

控制台 主页面应用的app_id

member_id

String(64)

Y

商户用户对象 id,只能为英文、数字或者下划线的一种或多种组合,若查询商户本身时,传入值0

settle_account_id

String

N

由Adapay生成的结算账户对象id,若查询商户本身时,可以为空

begin_date

String(8)

Y

结算起始日期,格式为 yyyyMMdd

end_date

String(8)

Y

结算结束日期,格式为 yyyyMMdd,日期间隔必须小于等于31天

  • 响应

参数

类型

必填

描述

object

String(20)

Y

结算明细列表,list

prod_mode

String

Y

是否 prod模式,true 是 prod模式,false 是 mock模式

settle_details

List

N

结算账户已发起结算明细列表

status

String

Y

当前交易状态,参见 状态 说明

error_code

String

N

错误码,详见 错误

error_msg

String

N

错误描述,详见 错误

error_type

String

N

错误类型,详见 错误

invalid_param

String

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

settle_details字段说明:

参数

类型

必填

描述

card_name

String(64)

Y

结算账户名称

card_no

String(64)

Y

脱敏的结算账号

settle_date

String(8)

Y

结算日期

settle_amt

String(16)

Y

结算金额

settle_fee_amt

String(16)

Y

结算手续费金额

settle_stat

String(16)

Y

结算状态,succeeded:成功;failed:失败;pending:处理中;no-started:未发起结算

settle_type

String(2)

Y

结算类型,T1:T+1日结算;D1: D+1日结算

  • 调用示例

Java

Map<String, Object> queryParams = new  HashMap<String, Object>(5);
queryParams.put("settle_account_id", "0006440476699456");
queryParams.put("member_id", "member_id_test");
queryParams.put("app_id", "app_XXXXXXXX");
queryParams.put("begin_date", "20191012");
queryParams.put("end_date", "20191015");
Map<String, Object> settleCount = SettleAccount.querySettleDetails(queryParams);
  • 成功响应

{
    "prod_mode": "true",
    "settle_details": [
        {
            "settle_type": "T1",
            "settle_stat": "successed",
            "card_no": "130234****8399",
            "settle_amt": "6.98",
            "settle_fee_amt": "0.00",
            "settle_date": "20191014",
            "card_name": "adapay测试商户"
        },
        {
            "settle_type": "T1",
            "settle_stat": "successed",
            "card_no": "130234****8399",
            "settle_amt": "5.00",
            "settle_fee_amt": "0.00",
            "settle_date": "20191012",
            "card_name": "adapay测试商户"
        }
    ],
    "object": "list",
    "status": "succeeded"
}

支付确认对象

参数

类型

说明

id

String(64)

Adapay生成的支付确认对象id

object

String(20)

支付确认对象,payment_confirm

created_time

String(10)

创建时的时间戳

prod_mode

String(4)

是否prod模式,true是prod模式,false是mock模式

app_id

String(64)

控制台 主页面应用的app_id

payment_id

String(64)

Adapay生成的支付对象id

order_no

String(64)

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

confirm_amt

String(14)

确认金额, 必须大于0,保留两位小数点,如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。

confirmed_amt

String(16)

原支付对象已确认金额。

reserved_amt

String(16)

原支付对象已撤销金额,包括已撤销完成金额和撤销处理中的金额。

refunded_amt

String(16)

当前支付确认对象已退款金额,包括已退款完成金额和退款处理中的金额。

description

String(128)

附加说明

div_members

List

分账对象信息列表,可用于用户分账。json对象 形式,详见 分账对象信息列表

status

String(16)

当前交易状态,参见 状态 说明

error_code

String(32)

错误码,详见 错误

error_msg

String(128)

错误描述,详见 错误

error_type

String(32)

错误类型,详见 错误

invalid_param

String(32)

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

创建支付确认对象

创建支付确认对象适用于延时分账的场景。只有已支付完成且延时分账的Payment对象,才支持调用创建支付确认对象。支持一次全额或多次部分确认,多次部分确认时,当前确认金额 + 已确认金额 + 已撤销金额不能大于原支付金额。

请求参数

参数

类型

必填

说明

payment_id

String(64)

Y

Adapay生成的支付对象id

order_no

String(64)

Y

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

confirm_amt

String(14)

Y

确认金额,必须大于0,保留两位小数点,如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。

description

String(128)

N

附加说明

div_members

List

N

分账对象信息列表,可用于用户分账。json对象 形式,详见 分账对象信息列表

响应

成功时同步返回一个包含 支付确认对象 的 JSON。

调用示例

Java

Map<String, Object> confirmParams = new HashMap<>();
confirmParams.put("payment_id", "002112019101810164110031091225392021504");
confirmParams.put("order_no", "java\_sdk\_paymemt\_confirm\_" + System.currentTimeMillis());
confirmParams.put("confirm_amt", "0.02");
confirmParams.put("description", "description");
List<Map<String, String>> memberList = new ArrayList<>();
Map<String, String> divMember = new HashMap<>(3);
divMember.put("member_id", "0");
divMember.put("amount", "0.02");
divMember.put("fee_flag", "Y");
memberList.add(divMember);
confirmParams.put("div_members", memberList);
Map<String, Object> paymentConfirm = Payment.createConfirm(confirmParams);
  • 成功响应

{
    "app_id": "app_XXXXXXXX",
    "confirm_amt": "0.02",
    "confirmed_amt": "0.00",
    "created_time": "1571378447",
    "description": "description",
    "div_members": [
        {
            "amount": "0.02",
            "fee_flag": "Y",
            "member_id": "0"
        }
    ],
    "id": "002112019101814004710031147620004315136",
    "object": "payment_confirm",
    "order_no": "jsdk_payment_confirm_1571378445992",
    "refunded_amt": "0.00",
    "reserved_amt": "0.00",
    "status": "succeeded",
    "prod_mode": "true"
}

查询支付确认对象

请求参数

参数

类型

必填

说明

payment_confirm_id

String(64)

Y

Adapay生成的支付确认对象id

响应

成功时同步返回一个包含 支付确认对象 的 JSON。

调用示例

Java

Map<String, Object> confirmParams = new HashMap<>();
confirmParams.put("payment_confirm_id", "002112019101814004710031147620004315136");
Map<String, Object> paymentConfirm = Payment.queryConfirm(confirmParams);
  • 成功响应

{
    "app_id": "app_XXXXXXXX",
    "confirm_amt": "0.02",
    "confirmed_amt": "0.00",
    "created_time": "1571378447",
    "description": "description",
    "div_members": [
        {
            "amount": "0.02",
            "fee_flag": "Y",
            "member_id": "0"
        }
    ],
    "id": "002112019101814004710031147620004315136",
    "object": "payment_confirm",
    "order_no": "jsdk_payment_confirm_1571378445992",
    "refunded_amt": "0.00",
    "reserved_amt": "0.00",
    "status": "succeeded",
    "prod_mode": "true"
}

查询支付确认对象列表

请求参数

参数

类型

必填

说明

app_id

String(64)

Y

控制台 主页面应用的app_id

payment _id

String(64)

N

Adapay生成的支付对象id

page_index

int

N

当前页码,取值范围1~300000,默认值为1

page_size

int

N

页面容量,取值范围1~20,默认值为10

created_gte

String

N

查询大于等于创建时间戳

created_lte

String

N

查询小于等于创建时间戳;若不为空时,created_gte字段值不能为空且小于created_lte时间

响应

参数

类型

必填

说明

object

String(8)

Y

支付确认对象列表,list

prod_mode

String(4)

Y

是否prod模式,true是prod模式,false是mock模式

app_id

String(64)

Y

控制台 主页面应用的app_id

payment_id

String(64)

N

Adapay生成的支付对象id

has_more

boolean

Y

是否还有更多,true-是,false-否

payment_confirms

List

N

支付确认对象 列表

status

String(16)

Y

当前交易状态,参见 状态 说明

error_code

String(32)

N

错误码,详见 错误

error_msg

String(128)

N

错误描述,详见 错误

error_type

String(32)

N

错误类型,详见 错误

invalid_param

String(32)

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

调用示例

Java

Map<String, Object> confirmParams = new HashMap<>();
confirmParams.put("app_id", "app_XXXXXXXX");
confirmParams.put("payment_id", "");
confirmParams.put("page_index", "1");
confirmParams.put("page_size", "10");
confirmParams.put("created_gte", "1571466657929");
confirmParams.put("created_lte", "1571898657929");
Map<String, Object> paymentConfirmList = Payment.queryConfirmList(confirmParams);
  • 成功响应

{
    "app_id": "app_XXXXXXXX",
    "has_more": true,
    "object": "list",
    "payment_confirms": [
        {
            "app_id": "app_XXXXXXXX",
            "confirm_amt": "0.02",
            "confirmed_amt": "0.00",
            "created_time": "1571378447",
            "description": "description",
                "div_members": [
                {
                    "amount": "0.02",
                    "fee_flag": "Y",
                    "member_id": "0"
                }
            ],
            "id": "002112019101814004710031147620004315136",
            "object": "payment_confirm",
            "order_no": "jsdk_payment_confirm_1571378445992",
            "refunded_amt": "0.00",
            "reserved_amt": "0.00",
            "status": "succeeded",
            "prod_mode": "true"
        }
    ],
    "status": "succeeded",
    "prod_mode": "true"
}

支付撤销对象

参数

类型

必填

说明

id

String(64)

Y

Adapay生成的支付撤销对象id

order_no

String(64)

Y

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

object

String(8)

Y

支付撤销对象,payment_reverse

prod_mode

String(4)

Y

true是prod模式,false是mock模式

payment_id

String(64)

Y

原支付交易id

app_id

String(64)

Y

控制台 主页面应用的app_id

reverse_amt

String(16)

Y

撤销金额,必须大于0,保留两位小数点,如0.10、100.05等

reversed_amt

String(16)

Y

原支付对象已撤销金额,包括已撤销完成金额和撤销处理中的金额

confirmed_amt

String(16)

Y

当前支付对象已确认金额

refunded_amt

String(16)

Y

当前支付确认对象已退款金额,包括已退款完成金额和退款处理中的金额

notify_url

String(250)

N

异步通知地址,默认使用轻量、简单MQTT通知(强烈建议使用),url为http/https路径,服务器POST回调,URL 上请勿附带参数

created_time

String(13)

N

创建时间戳

succeed_time

String(13)

N

撤销成功时间戳

channel_no

String(64)

N

扫码收银台返回的退款交易流水号

status

String(16)

Y

当前支付撤销状态,参见 状态 说明

error_code

String(32)

N

错误码,详见 错误

error_msg

String(128)

N

错误描述,详见 错误

error_type

String(32)

N

错误类型,详见 错误

invalid_param

String(32)

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

创建支付撤销对象

创建支付撤销对象适用于延时分账的场景。只有已支付完成且为延时分账的 Payment 对象,在没有创建支付确认对象成功之前,可以调用创建支付撤销对象,用来撤销支付,资金会原路退回用户的支付宝或微信中。 支持一次全额或多次部分撤销,撤销次数最多不超过10次。多次部分撤销时,当前撤销金额 + 已撤销金额 + 已确认金额不能大于原支付金额。 对于每次撤销交易,Adapay 都会通过 异步消息通知 告知结果。

注:创建支付撤销对象同步返回成功,表示 Adapay 受理成功,撤销结果以异步通知为准。

请求参数

参数

类型

必填

说明

payment_id

String(64)

Y

Adapay生成的支付对象id

app_id

String(64)

Y

控制台 主页面应用的app_id

order_no

String(64)

Y

请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一

notify_url

String(250)

N

异步通知地址,默认使用轻量、简单MQTT通知(强烈建议使用),url为http/https路径,服务器POST回调,URL 上请勿附带参数。

reverse_amt

String(14)

Y

撤销金额,必须大于0,保留两位小数点,如0.10、100.05等。撤销金额必须小于等于支付金额 - 已确认金额 - 已撤销(撤销成功+撤销中)金额。

reason

String(512)

N

撤销描述

expand

String(512)

N

扩展域

device_info

String(1024)

N

设备静态信息,详见 设备信息

响应

成功时同步返回一个包含 支付撤销对象 的 JSON。

调用示例

Java

Map<String, Object> reverseParams = new HashMap<>();
reverseParams.put("app_id", "app_XXXXXXXX");
reverseParams.put("payment_id", "002112019101810164110031091225392021504");
reverseParams.put("reverse_amt", "0.01");
reverseParams.put("order_no", "jsdk_reverse" + System.currentTimeMillis());
Map<String, Object> paymentReverse = Payment.createReverse(reverseParams);
  • 成功响应

{
    "id":  "002112019102413120700033309700010668032",
    "object":  "payment_reverse",
    "status":  "succeeded",
    "prod_mode":  "true",
    "order_no":  "jsdk_reverse1571893921558",
    "payment_id":  "002112019101810164110031091225392021504",
    "app_id":  "app_XXXXXXXX",
    "reverse_amt":  "0.01",
    "reversed_amt":  "0.00",
    "confirmed_amt":  "0.00",
    "refunded_amt":  "0.00",
    "created_time":  "1571893927000",
    "succeed_time":  "1571894004000",
    "channel_no":  "2019102499R0ida0"
}

查询支付撤销对象

请求参数

参数

类型

必填

说明

reverse_id

String(64)

Y

Adapay生成的支付撤销对象id

响应

成功时同步返回一个包含 支付撤销对象 的 JSON。

调用示例

Java

Map<String, Object> reverseParams = new HashMap<>();
reverseParams.put("reverse_id", "002112019102413120700033309700010668032");
Map<String, Object> paymentReverse = Payment.queryReverse(reverseParams, apiKey);
  • 成功响应

{
    "id":  "002112019102413120700033309700010668032",
    "object":  "payment_reverse",
    "status":  "succeeded",
    "prod_mode":  "true",
    "order_no":  "jsdk_reverse1571893921558",
    "payment_id":  "002112019101810164110031091225392021504",
    "app_id":  "app_XXXXXXXX",
    "reverse_amt":  "0.01",
    "reversed_amt":  "0.00",
    "confirmed_amt":  "0.00",
    "refunded_amt":  "0.00",
    "created_time":  "1571893927000",
    "succeed_time":  "1571894004000",
    "channel_no":  "2019102499R0ida0"
}

查询支付撤销对象列表

请求参数

参数

类型

必填

说明

app_id

String(64)

Y

控制台 主页面应用的app_id

payment _id

String(64)

N

Adapay生成的支付对象id

page_index

int

N

当前页码,取值范围1~300000,默认值为1

page_size

int

N

页面容量,取值范围1~20,默认值为10

created_gte

String

N

查询大于等于创建时间戳

created_lte

String

N

查询小于等于创建时间戳;若不为空时,created_gte字段值不能为空且小于created_lte时间

响应

参数

类型

必填

说明

object

String(8)

Y

支付确认对象列表,list

prod_mode

String(4)

Y

是否prod模式,true是prod模式,false是mock模式

app_id

String(64)

Y

控制台 主页面应用的app_id

payment_id

String(64)

N

Adapay生成的支付对象id

has_more

boolean

Y

是否还有更多,true-是,false-否

payment_reverses

List

N

支付撤销对象 列表

status

String(16)

Y

当前交易状态,参见 状态 说明

error_code

String(32)

N

错误码,详见 错误

error_msg

String(128)

N

错误描述,详见 错误

error_type

String(32)

N

错误类型,详见 错误

invalid_param

String(32)

N

当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误

调用示例

Java

Map<String, Object> reverseParams = new HashMap<>();
reverseParams.put("app_id", "app_XXXXXXXX");
reverseParams.put("payment_id", "");
reverseParams.put("page_index", "1");
reverseParams.put("page_size", "10");
reverseParams.put("created_gte", "1571466657929");
reverseParams.put("created_lte", "1571898657929");
Map<String, Object> paymentReverseList = Payment.queryReverseList(reverseParams);
  • 成功响应

{
    "app_id": "app_XXXXXXXX",
    "has_more": true,
    "object": "list",
    "payment_confirms": [
        {
            "id":  "002112019102413120700033309700010668032",
                "object":  "payment_reverse",
                "status":  "succeeded",
                "prod_mode":  "true",
                "order_no":  "jsdk_reverse1571893921558",
                "payment_id":  "002112019101810164110031091225392021504",
                "app_id":  "app_XXXXXXXX",
                "reverse_amt":  "0.01",
                "reversed_amt":  "0.00",
                "confirmed_amt":  "0.00",
                "refunded_amt":  "0.00",
                "created_time":  "1571893927000",
                "succeed_time":  "1571894004000",
                "channel_no":  "2019102499R0ida0"
        }
    ],
    "status": "succeeded",
    "prod_mode": "true"
}