聚合支付

支付

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

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

Charge对象

属性

类型

描述

id

String

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

created

Timestamp

支付创建时的 Unix 时间戳

order_no

String

商户订单号

livemode

boolean

是否为测试模式

app_id

String

商户发起支付的应用 id,不同的前端应用将无法使用该 Charge对象 完成支付

pay_channel

String

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

amount

String

交易金额,单位:元

currency

String

详见 货币代码

query_url

String

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

description

String

订单附加说明

extra

Map

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

status

String

当前订单支付状态,参见 支付状态 说明

failure_code

String

错误码,详见 错误

failure_msg

String

错误描述,详见 错误

type

String

错误类型,详见 错误

param

String

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

创建支付

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

请求参数

参数

类型

必填

描述

order_no

String(64)

Y

商户订单号

app_id

String(10)

Y

商户交易使用的应用对象 id

pay_channel

String(20)

Y

支付渠道,参见 支付渠道

amount

String(14)

Y

订单总金额(必须大于 0),单位:元

subject

String(32)

Y

商品标题

body

String(128)

Y

商品描述信息

currency

String(3)

N

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

description

String(128)

N

订单附加说明

time_expire

String(20)

N

订单失效时间,输入格式:yyyyMMddHHmmSS,默认失效时间为创建订单后的 15分钟

device_info

Map

N

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

extra

Map

N

特定渠道发起交易时需要的额外参数,JSON格式,数据内容 key-value 形式填入,详见 支付渠道 extra参数

响应

同步返回一个 Charge对象 的 JSON。

调用示例

Java

// 请求参数
Map<String, Object> chargeParams = new HashMap<String, Object>();
chargeParams.put("order_no",  "123456789");
chargeParams.put("amount", "998.00");
chargeParams.put("app_id", "001");
chargeParams.put("pay_channel",  "alipay");
chargeParams.put("subject",  "Your Subject");
chargeParams.put("body",  "Your Body");

// 调用创建方法,获取 Charge对象_
Charge ch = Charge.create(chargeParams);

PHP

// 调用创建方法,获取 Charge对象
$ch = \AdaPay\Charge::create(array(
    'order_no'  => '123456789',
    'amount'    => '998.00',
    'app_id'       => 'sfjeijibbTe5jLGCi5rzfH4OqPW9KCif913',
    'pay_channel'   => 'alipay',
    'subject'  => 'Your Subject',
    'body' => 'Your Body'
  ));

Python

// 调用创建方法,获取 Charge对象
ch = AdaPay.Charge.create(
    order_no = '1234567890',
    amount = 998.00,
    app_id = 'sfjeijibbTe5jLGCi5rzfH4OqPW9KCif913',
    pay_channel = 'alipay',
    subject = 'Your Subject',
    body = 'Your Body'
)

成功响应

{
  "id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
  "created": 1410778843,
  "order_no": "123456789",
  "livemode": true,
  "app_id": "sfjeijibbTe5jLGCi5rzfH4OqPW9KCif913",
  "pay_channel": "alipay",
  "amount": "998.00",
  "currency": "cny",
  "query_url": "https://AdaPay.cloudpnr.com/charge/tmp?token=5jLGCi5rzfH4OqPW9KCi",
  "status": "pending",
  "description": "Charge Discription",
  "extra": {
    "pay_info": "bax028781ovixf6i8xyf60be"
  }
}

支付查询

您可以在任何时候,使用查询接口确认支付状态。通过 Charge对象 的 id 查询一个已创建的 Charge对象。

请求参数

参数

类型

必填

描述

charge_id

String

Y

由 Adapay 生成的支付对象 id

响应

同步返回一个 Charge对象 的 JSON。

调用示例

Java

// 在完成初始化设置情况下,调用查询方法,获取 Charge 查询结果
Charge ch = Charge.query("ch_Hm5uTSifDOuTy9iLeLPSurrD");

PHP

// 在完成初始化设置情况下,调用查询方法,获取 Charge 查询结果
$ch = \AdaPay\Charge::query('ch_Hm5uTSifDOuTy9iLeLPSurrD');

Python

// 在完成初始化设置情况下,调用查询方法,获取 Charge 查询结果
ch = Charge.query('ch_Hm5uTSifDOuTy9iLeLPSurrD');

成功响应

{
  "id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
  "created": 1410778843,
  "order_no": "123456789",
  "livemode": true,
  "app_id": "sfjeijibbTe5jLGCi5rzfH4OqPW9KCif913",
  "pay_channel": "alipay",
  "amount": "998.00",
  "currency": "cny",
  "query_url": "https://AdaPay.cloudpnr.com/charge/tmp?token=5jLGCi5rzfH4OqPW9KCi",
  "status": "pending",
  "description": "Charge Discription",
  "extra": {
    "pay_info": "bax028781ovixf6i8xyf60be"
  }
}

关单

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

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

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

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

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

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

请求参数

参数

类型

必填

描述

charge_id

String(32)

Y

由 Adapay 生成的支付对象 id

description

String(255)

Y

关单描述

响应

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

参数

描述

charge_id

由 Adapay 生成的支付对象 id

created

支付创建时的 Unix 时间戳

status

当前订单状态

failure_code

错误码,当发生参数、网络或支付等相关错误时会存在内容,详见 错误

failure_msg

错误描述,当发生参数、网络或支付等相关错误时会存在内容,详见 错误

type

错误类型,当发生参数、网络或支付等相关错误时会存在内容,详见 错误

param

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

调用示例

Java

// 在完成初始化设置情况下,调用关单方法获取结果
String result = Charge.close("ch_Hm5uTSifDOuTy9iLeLPSurrD", "Description");

PHP

// 在完成初始化设置情况下,调用关单方法获取结果
$result = \AdaPay\Charge::close(array(
  'charge_id'  => 'ch_Hm5uTSifDOuTy9iLeLPSurrD',
  'discription'  => 'Description'
));

Python

// 在完成初始化设置情况下,调用关单方法获取结果
result = AdaPay.Charge.close(
    'charge_id'  => 'ch_Hm5uTSifDOuTy9iLeLPSurrD',
    'discription'  => 'Description'
  );

成功响应

{
  "charge_id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
  "created": 1410778843,
  "status": "success"
}

退款

当您的业务需要发起退款时,可通过 Adapay 系统提供的创建 Refund对象 方法创建一个退款对象,发起退款请求。

Refund对象

属性

类型

描述

id

String

由 Adapay 生成的退款对象 id

charge_id

String

退款目标支付对象 id

amount

String

退款金额

trans_state

String

退款状态

created

String

退款对象创建时间

fee_amt

String

退款手续费

failure_code

String

错误码,当发生参数、网络或支付等相关错误时会存在内容,详见 错误

failure_msg

String

错误描述,当发生参数、网络或支付等相关错误时会存在内容,详见 错误

type

String

错误类型,当发生参数、网络或支付等相关错误时会存在内容,详见 错误

param

String

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

创建退款

通过 Adapay 系统提供的方法可创建 Refund对象 方法,退款只能对已经发生交易并且没有全额退款的 Charge对象 发起。 在退款总额未超过原交易金额时,可以进行多次退款。对于每次退款交易,Adapay 都会通过 异步消息通知 告知退款结果。

请求参数

参数

类型

必填

描述

charge_id

String(32)

Y

由 Adapay 生成的支付对象 id

order_no

String(64)

Y

由商户系统生成退款订单号

amount

String(14)

Y

退款金额,单位:元

description

String(512)

N

退款描述

extra

String(512)

N

扩展域

dev_info

String(1024)

N

设备静态信息

响应

同步返回一个 Refund对象 的 JSON。

调用示例

Java

// 在完成初始化设置情况下,调用方法,获取 Refund对象
Map<String, Object> refundParams = new HashMap<String, Object>();
refundParams.put("charge_id",  "ch_Hm5uTSifDOuTy9iLeLPSurrD");
refundParams.put("amount", "998.00");
Refund rf = Refund.create(refundParams);

PHP

// 在完成初始化设置情况下,调用方法,获取 Refund对象
$rf = \AdaPay\Refund::create(array(
  'charge_id'  => 'ch_Hm5uTSifDOuTy9iLeLPSurrD',
  'amount'    => '998.00'
));

Python

ch = AdaPay.Charge.create(
    charge_id = '1234567890',
    amount = 998.00
)

成功响应

{
  "id": "rf_Hm5uTSifDOuTy9iLeLPSurrD",
  "created": 1410778843,
  "charge_id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
  "amount": "99.00",
  "trans_state": "refunded",
  "fee_amt": "0.00",
  "status": "pending"
}

退款查询

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

请求参数

参数

类型

必填

描述

refund_id

String(64)

Y

由 Adapay 生成的退款对象 id

响应

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

调用示例

Java

// 在完成初始化设置情况下,调用查询方法,获取 Refund 查询结果
Refund rf = Refund.query("rf_Hm5uTSifDOuTy9iLeLPSurrD");

PHP

// 在完成初始化设置情况下,调用查询方法,获取 Refund 查询结果
$rf = \AdaPay\Refund::query('rf_Hm5uTSifDOuTy9iLeLPSurrD');

Python

// 在完成初始化设置情况下,调用查询方法,获取 Refund 查询结果
rf = AdaPay.Refund.query('rf_Hm5uTSifDOuTy9iLeLPSurrD');

成功响应

{
  "id": "rf_Hm5uTSifDOuTy9iLeLPSurrD",
  "created": 1410778843,
  "charge_id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
  "amount": "99.00",
  "trans_state": "refunded",
  "fee_amt": "0.00",
  "status": "pending"
}