PHP SDK 使用文档

简介

目前 Adapay 的 PHP SDK 支持的交易模块包括 支付(Payment)、退款(Refund)、查询、关单功能、 企业用户创建和查询、用户创建、用户查询、用户更新、用户列表查询、结算账户创建、结算账户查询、结算账户删除, 具体可参考 API文档

下载地址

SDK下载

SDK 版本记录

版本

日期

说明

v1.4.4

2022-08-19

修复bug

v1.4.3

2022-04-10

修复bug

v1.4.2

2022-04-01

优化代码

v1.4.1

2021-04-22

新增通用接口调用功能

v1.3.1

2021-03-15

新增服务商分账功能

v1.3.0

2020-12-10

新增解冻、冻结、绑卡、快捷支付

v1.2.1

2020-11-05

新增账户转账接口

v1.2.0

2020-10-29

优化代码

v1.1.3

2020-08-31

增加 MQTT 断开重连机制

v1.1.2

2020-07-21

增加取现结果查询功能

v1.1.1

2020-05-29

增加钱包收银台相关接口功能

v1.1.0

2020-02-28

增加钱包相关接口功能

版本要求

PHP 版本 5.6 及以上

接入方法

  • 下载 SDK

下载文件里包含 SDK 和 Demo 两个目录。SDK 目录下为待添加到项目中的文件,Demo 目录下为示例项目,供接入时参考使用。

  • 上传 RSA 公钥

您需要在本地生成一对 RSA 公私钥,将生成的公钥内容上传到 「控制台」 ->「商户信息管理」->「证书管理」->「商户公钥」

证书生成方法具体详见帮助中心 证书生成

  • 下载配置文件

配置文件获取路径: 「控制台」 ->「商户信息管理」->「证书管理」->「导出配置文件」

_images/certManager.png
  • SDK 导入

在支付模块中引入 SDK, 参考如下:

// 加载基础 adapay 基础类
// SDK 初始化文件加载
include_once  dirname(__FILE__). "/../AdapaySdk/init.php";
// 在文件中设置 DEBUG 为 true 时, 则可以打印日志到指定的日志目录下 LOG_DIR
include_once  dirname(__FILE__). "/config.php";

使用方法

  • 初始化

加载 Adapay 基础类,导入配置文件

/**
  * 商户接入AdaPay SDK时需要设置的初始化参数
  * 设置配置从配置文件读取
  */
  \AdaPay\AdaPay::init(dirname(__FILE__). "/config/config.json", "live");

支付对象

发起支付

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

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\Payment();

# 支付设置
$payment_params = array(
    "app_id"=> "app_P000002052092068",
    "order_no"=> date("YmdHis").rand(100000, 999999),
    "pay_channel"=> "alipay",
    "time_expire"=> "20200101000000",
    "pay_amt"=> "0.01",
    "goods_title"=> "subject",
    "goods_desc"=> "body",
    "description"=> "description"
);
# 发起支付
$payment->create($payment_params);

# 对支付结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 创建支付

支付订单查询

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\Payment();
#发起支付订单查询
$payment->query(["payment_id"=> "002112019091919132010020717028587851776"]);

# 对关单结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
# 加载SDK需要的文件
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 支付查询

查询支付对象列表

通过该接口,实现对已发起的支付对象查询功能,支持使用请求订单号、支付对象id、以及按时间范围分页查询。

  • 调用示例

# 加载SDK需要的文件
include_once  dirname(__FILE__). "/../../AdapaySdk/init.php";
# 加载商户的配置文件
include_once  dirname(__FILE__). "/../config.php";
# 初始化支付类
$payment = new \AdaPaySdk\Payment();
# 请求参数
$payment_params = array(
    "app_id"=> "app_7d87c043-aae3-4357-9b2c-269349a980d6",
    "payment_id"=> "10000000000000001",
    "order_no"=> "20190919071231283468359213",
    "page_index"=> "",
    "page_size"=> "",
    "created_gte"=> "",
    "created_lte"=> ""
);
$payment->queryList($payment_params);
# 对支付结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 支付对象列表查询

关闭订单

针对已经创建的 Payment,您可以调用关单接口进行交易的关闭。

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\Payment();
$payment_params = array(
    # 设置支付对象ID
    "payment_id"=> "002112019091919132010020717028587851776",
    # 设置描述
    "reason"=> "关单描述",
    # 设置扩展域
    "expend"=> "{"key": "1233"}"
);
# 发起关单
$payment->orderClose($payment_params);
# 对关单结果进行处理
# $payment->result 类型为数组
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 关单

退款对象

发起退款

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

  • 调用示例

#初始化退款对象
$refund = new \AdaPaySdk\refund();
$refund_params = array(
    # 原交易支付对象ID
    "payment_id"=> "002112019091919132010020717028587851776",
    # 退款订单号
    "refund_order_no"=> "20190919073834683566123",
    # 退款金额
    "refund_amt"=> "0.01",
    # 退款描述
    "reason"=> "退款描述",
    # 扩展域
    "expend"=> "",
    # 设备静态信息
    "device_info"=> ""
);
# 发起退款
$refund->orderRefund($refund_params);
# 对退款结果进行处理
# $refund->result 类型为数组
if ($refund->isError()){
    //失败处理
    var_dump($refund->result);
} else {
    //成功处理
    var_dump($refund->result);
}
  • 参数说明

调用参数详见 创建退款

退款订单查询

通过 Refund对象 的 id 查询一个已创建的退款记录。

  • 调用示例

# 初始化退款对象
$refund = new \AdaPaySdk\refund();
# refund_id或charge_id二选一
# 发起退款查询
$refund->orderRefundQuery(["payment_id"=> "002112019091919132010020717028587851776"]);
# 对退款结果进行处理
# $refund->result 类型为数组
if ($refund->isError()){
    //失败处理
    var_dump($refund->result);
} else {
    //成功处理
    var_dump($refund->result);
}
  • 参数说明

调用参数详见 退款查询

支付撤销对象

创建支付撤销对象

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\PaymentReverse();
$payment_params = array(
    # 支付对象ID
    "payment_id"=> "10000000000000001",
    # 商户app_id
    "app_id"=> "app_P000002052092068",
    # 撤销订单号
    "order_no"=> "R".date("YmdHis").rand(100000, 999999),
    # 撤销金额
    "reverse_amt"=> "0.01",
    # 通知地址
    "notify_url"=> "",
    # 撤销原因
    "reason"=> "订单支金额错误",
    # 扩展域
    "expand"=> "",
    # 设备信息
    "device_info"=> "",
);
# 发起支付撤销
$payment->create($payment_params);
# 对支付撤销结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 创建支付撤销对象

查询支付撤销对象

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\PaymentReverse();
# 支付撤销设置
$payment_params = array(
    "reverse_id"=> "1000000000001123333333"
);
# 发起支付撤销查询
$payment->query($payment_params);
# 对支付撤销结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 查询支付撤销对象

查询支付撤销对象列表

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\PaymentReverse();
# 支付撤销参数设置
$payment_params = array(
    # 商户app_id
    "app_id"=> "1231123123123131231",
    # 支付对象ID
    "payment_id"=> "10023123123101",
    # 当前页码,取值范围1~300000,默认值为1
    "page_index"=> "",
    # 页面容量,取值范围1~20,默认值为10
    "page_size"=> "",
    # 查询大于等于创建时间
    "created_gte"=> "",
    # 查询小于等于创建时间
    "created_lte"=> ""
);

 # 发起支付撤销查询
$payment->queryList($payment_params);
# 对支付结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 查询支付撤销对象列表

支付确认对象

创建支付确认对象

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\PaymentConfirm();

# 支付确认参数设置
$payment_params = array(
    "payment_id"=> "123123123131231231",
    "order_no"=> date("YmdHis").rand(100000, 999999),
    "confirm_amt"=> "0.01",
    "description"=> "附件说明",
    "div_members"=> "" //分账参数列表 默认是数组List
);

# 发起支付确认创建
$payment->create($payment_params);

# 对支付确认创建结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 创建支付确认对象

查询支付确认对象

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\PaymentConfirm();

# 查询支付确认参数设置
$payment_params = array(
    "payment_confirm_id"=> "100000000000012312344"
);

# 发起支付确认查询
$payment->query($payment_params);

# 对支付确认查询结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 查询支付确认对象

查询支付确认对象列表

  • 调用示例

# 初始化支付类
$payment = new \AdaPaySdk\PaymentConfirm();

# 支付确认列表参数设置
$payment_params = array(
    "app_id"=> "1231123123123131231",
    "payment_id"=> "10023123123101",
    "page_index"=> "",
    "page_size"=> "",
    "created_gte"=> "",
    "created_lte"=> ""
);

# 发起支付确认列表查询
$payment->queryList($payment_params);

# 对支付确认列表结果进行处理
if ($payment->isError()){
    //失败处理
    var_dump($payment->result);
} else {
    //成功处理
    var_dump($payment->result);
}
  • 参数说明

调用参数详见 查询支付确认对象列表

个人用户对象

创建用户对象

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

  • 调用示例

$member = new \AdaPaySdk\Member();
$member_params = array(
    # app_id
    "app_id"=> "app_f8b14a77-dc24-433b-864f-98a62209d6c4",
    # 用户id
    "member_id"=> "hf_test_201999999999_1001",
    # 用户地址
    "location"=> "测试地址",
    # 用户邮箱
    "email"=> "123123@126.com",
    # 性别
    "gender"=> "MALE",
    # 用户手机号
    "tel_no"=> "18177722312",
    # 用户昵称
    "nickname"=> "test"
);
# 创建
$member->create($member_params);

# 对创建用户对象结果进行处理
if ($member->isError()){
    //失败处理
    var_dump($member->result);
} else {
    //成功处理
    var_dump($member->result);
}
  • 参数说明

调用参数详见 创建用户对象

查询用户对象

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

  • 调用示例

$member = new \AdaPaySdk\Member();

# 查询用户对象
$member->query(["app_id"=> "app_P000002052092068", "member_id"=> "hf_test_member_id_account2"]);

# 对查询用户对象结果进行处理
if ($member->isError()){
    //失败处理
    var_dump($member->result);
} else {
    //成功处理
    var_dump($member->result);
}
  • 参数说明

调用参数详见 查询用户对象

更新用户对象

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

  • 调用示例

$member = new \AdaPaySdk\Member();

# 更新用户对象设置
$member_params = array(
    # app_id
    "app_id"=> "app_P000002052092068",
    # 用户id
    "member_id"=> "hf_test_member_id_account5",
    # 用户地址
    "location"=> "上海市徐汇区",
    # 用户邮箱
    "email"=> "12389919@qq.com",
    # 性别
    "gender"=> "M",
    # 用户手机号
    "tel_no"=> "app_f8b14a77-dc24-433b-864f-98a62209d6c4",
    # 是否禁用该用户
    "disabled"=> "N",
    # 用户昵称
    "nickname"=> "test",
);
# 更新用户对象
$member->update($member_params);

# 对更新用户对象结果进行处理
if ($member->isError()){
    //失败处理
    var_dump($member->result);
} else {
    //成功处理
    var_dump($member->result);
}
  • 参数说明

调用参数详见 更新用户对象

查询用户对象列表

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

  • 调用示例

$member = new \AdaPaySdk\Member();
$member_params = array(
    "app_id"=> "app_P000002052092068"
);
# 查询用户对象
$member->query_list($member_params);

# 对查询用户对象结果进行处理
if ($member->isError()){
    //失败处理
    var_dump($member->result);
} else {
    //成功处理
    var_dump($member->result);
}
  • 参数说明

调用参数详见 用户对象列表

企业用户对象

创建企业用户对象

通过本接口您可以创建企业用户,企业用户需要人工审核,审核完成后会发送异步消息通知,若审核成功,则商户用户 member_id 与 Adapay 系统关联成功,若审核失败,则可再次调用本接口提交正确的资料信息。

  • 调用示例

$member = new \AdaPaySdk\CropMember();
$file_real_path = realpath('123.zip');
$member_params = array(
    # app_id
    "app_id"=> "app_P000002052092068",
    # 商户用户id
    "member_id"=> "hf_test_member_id3",
    # 订单号
    "order_no"=> date("YmdHis").rand(100000, 999999),
    # 企业名称
    "name"=> "测试企业",
    # 省份
    "prov_code"=> "0031",
    # 地区
    "area_code"=> "3100",
    # 统一社会信用码
    "social_credit_code"=> "social_credit_code",
    "social_credit_code_expires"=> "20301109",
    # 经营范围
    "business_scope"=> "123123",
    # 法人姓名
    "legal_person"=> "frname",
    # 法人身份证号码
    "legal_cert_id"=> "1234567890",
    # 法人身份证有效期
    "legal_cert_id_expires"=> "20301010",
    # 法人手机号
    "legal_mp"=> "13333333333",
    # 企业地址
    "address"=> "1234567890",
    # 邮编
    "zip_code"=> "企业地址测试",
    # 企业电话
    "telphone"=> "1234567890",
    # 企业邮箱
    "email"=> "1234567890@126.com",
    # 上传附件
    "attach_file"=> new CURLFile($file_real_path),
    # 银行代码
    "bank_code"=> "1001",
    # 银行账户类型
    "bank_acct_type"=> "1",
);
# 创建企业用户
$member->create($member_params);
# 对创建企业用户结果进行处理
if ($member->isError()){
    //失败处理
    var_dump($member->result);
} else {
    //成功处理
    var_dump($member->result);
}
  • 参数说明

调用参数详见 创建企业用户对象

查询企业用户对象

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

  • 调用示例

$member = new \AdaPaySdk\CropMember();

# 查询企业用户
$member->query(["app_id"=> "app_P000002052092068", "member_id"=> "a123456"]);

# 对查询企业用户结果进行处理
if ($member->isError()){
    //失败处理
    var_dump($member->result);
} else {
    //成功处理
    var_dump($member->result);
}
  • 参数说明

调用参数详见 查询企业用户对象

结算账户对象

创建结算账户对象

商户的 member_id 与 Adapay 系统做关联后,可以创建结算账户,用于用户分账功能,目前只支持绑定银行卡。

  • 调用示例

$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
    "app_id"=> "app_P000002052092068",
    "member_id"=> "hf_test_201999999999",
    "channel"=> "bank_account",
    "account_info"=> [
        "card_id" => "622202170300169222",
        "card_name" => "余益兰",
        "cert_id" => "310109200006068391",
        "cert_type" => "00",
        "tel_no" => "18888888881",
        "bank_code" => "03060000",
        "bank_name" => "建",
        "bank_acct_type" => "1",
        "prov_code" => "0031",
        "area_code" => "3100",
    ]
);
# 创建结算账户
$account->create_settle($account_params);
# 对创建结算账户结果进行处理
if ($account->isError()){
    //失败处理
    var_dump($account->result);
} else {
    //成功处理
    var_dump($account->result);
}
  • 参数说明

调用参数详见 创建结算账户对象

查询账户余额

通过本接口查询账户余额

  • 调用示例

# 初始化账户余额对象类
$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'member_id'=> 'user_00008',
    'settle_account_id'=> '0035172521665088'
);
# 查询账户余额
$account->balance($account_params);
# 对查询账户余额结果进行处理
if ($account->isError()){
    //失败处理
    var_dump($account->result);
} else {
    //成功处理
    var_dump($account->result);
}
  • 请求参数

调用参数详见 查询账户余额

查询结算账户对象

查询已绑定的结算账户对象。

  • 调用示例

$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
    "app_id"=> "app_P000002052092068",
    "member_id"=> "hf_test_201999999999",
    "settle_account_id"=> "0006124815051328"
);
# 查询结算账户
$account->query_settle($account_params);
# 对查询结算账户结果进行处理
if ($account->isError()){
    //失败处理
    var_dump($account->result);
} else {
    //成功处理
    var_dump($account->result);
}
  • 参数说明

调用参数详见 查询结算账户对象

查询结算明细列表

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

  • 调用示例

# 初始化用户对象类
$account = new \AdaPaySdk\SettleAccount();

$account_params = array(
    "app_id"=> "app_P000002052092068",
    "member_id"=> "hf_test_member_id_account5",
    "settle_account_id"=> "0006017543466816",
    "begin_date"=> "20190705",
    "end_date"=> "20190806"
);

# 查询结算账户
$account->query_settle_details($account_params);

# 对查询结算账户结果进行处理
if ($account->isError()){
    //失败处理
    var_dump($account->result);
} else {
    //成功处理
    var_dump($account->result);
}
  • 参数说明

调用参数详见 查询结算明细列表

删除结算账户对象

删除已绑定的结算账户对象。

  • 调用示例

$account = new \AdaPaySdk\SettleAccount();

$account_params = array(
    'app_id'=> 'app_f8b14a77-dc24-433b-864f-98a62209d6c4',
    'member_id'=> 'hf_test_member_id_account5',
    'settle_account_id'=> '0006017543466816'
);

# 结算账户
$account->delete_settle($account_params);

# 对删除结算账户结果进行处理
if ($account->isError()){
    //失败处理
    var_dump($account->result);
} else {
    //成功处理
    var_dump($account->result);
}
  • 参数说明

调用参数详见 删除结算账户对象

修改结算账户对象

修改已绑定的结算账户对象信息。

  • 调用示例

$account = new \AdaPaySdk\SettleAccount();

$account_params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'member_id'=> 'hf_test_201999999999',
    'settle_account_id'=> '0006124815051328',
    'min_amt'=> '',
    'remained_amt'=> '',
    'channel_remark'=> '123'
);

# 修改结算账户
$account->modify_settle($account_params);

# 对修改结算账户结果进行处理
if ($account->isError()){
    //失败处理
    var_dump($account->result);
} else {
    //成功处理
    var_dump($account->result);
}
  • 参数说明

调用参数详见 修改结算配置

钱包账户对象

钱包支付

通过该接口,实现对商户钱包支付功能,下单成功返回支付跳转地址

  • 调用示例

$wallet_params = array(
    # 商户的应用 id
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    # 用户ID
    'order_no'=> "WL_". date("YmdHis").rand(100000, 999999),
    # 订单总金额(必须大于0)
    'pay_amt'=> '0.10',
    # 3 位 ISO 货币代码,小写字母
    'currency'=> 'cny',
    # 商品标题
    'goods_title'=> '12314',
    # 商品描述信息
    'goods_desc'=> '123122123',
);
$account->payment($wallet_params);
  • 请求参数

调用参数详见 钱包支付

取现对象

创建取现对象

通过该接口,实现对指定商户或者商户下用户的结算账户可用余额发起主动提现操作,金额从账户中提到绑定的结算银行卡中。取现结果以异步通知为准。

  • 调用示例

$drawcash = new \AdaPaySdk\Drawcash();
$cash_params = array(
    'order_no'=> "CS_". date("YmdHis").rand(100000, 999999),
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'cash_type'=> 'T1',
    'cash_amt'=> '0.02',
    'member_id'=> 'user_00008',
    'notify_url'=> ''
);
# 账户取现
$drawcash->create($cash_params);
# 对账户取现结果进行处理
if ($drawcash->isError()){
    //失败处理
    var_dump($drawcash->result);
} else {
    //成功处理
    var_dump($drawcash->result);
}
  • 请求参数

调用参数详见 钱包取现

取现查询

通过该接口,可以查询已发起的取现交易状态。

  • 调用示例

# 初始化账户取现对象类
$drawcash = new \AdaPaySdk\Drawcash();
$cash_params = array(
    'order_no'=> "CS_20200720081844501083"
);
# 账户取现
$drawcash->query($cash_params);
# 对账户取现结果进行处理
if ($drawcash->isError()){
    //失败处理
    var_dump($drawcash->result);
} else {
    //成功处理
    var_dump($drawcash->result);
}
  • 请求参数

调用参数详见 取现查询

收银台对象

创建收银台对象

通过该接口,实现对商户钱包收银台支付功能,下单成功返回支付跳转地址

  • 调用示例

# 加载SDK需要的文件
include_once  dirname(__FILE__). "/../AdapaySdk/init.php";
# 加载商户的配置文件
include_once  dirname(__FILE__). "/config.php";
#初始化钱包对象
$checkout = new \AdaPaySdk\Checkout();
$wallet_params = array(
    # 应用ID
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    # 用户ID
    'member_id'=> 'user_00013',
    'order_no'=>  "CK_". date("YmdHis").rand(100000, 999999),
    'pay_amt'=> '0.01',
    'goods_title'=> '收银台测试',
    'goods_desc'=> '收银台测试',
    'div_members'=> [],
    'currency'=> '',
    'time_expire'=> '',
    'description'=> '',
    'notify_url'=> '',
    'callback_url'=> ''
);
$checkout->create($wallet_params);
  • 请求参数

调用参数详见 钱包收银台支付

查询收银台对象列表

通过该接口,实现对商户钱包收银台对象查询功能,支持使用请求订单号、商户下用户id、以及按时间范围分页查询

  • 调用示例

# 加载SDK需要的文件
include_once  dirname(__FILE__). "/../AdapaySdk/init.php";
# 加载商户的配置文件
include_once  dirname(__FILE__). "/config.php";
#初始化钱包对象
$checkout = new \AdaPaySdk\Checkout();
#钱包支付接口参数
$wallet_params = array(
    # 商户的应用 id
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    # 用户ID
    'order_no'=> "WL_". date("YmdHis").rand(100000, 999999),
    # 商户用户id
    'member_id'=> 'hf_prod_member_20190920',
    "page_index"=> "",
    "page_size"=> "",
    "created_gte"=> "",
    "created_lte"=> ""
);
$checkout->queryList($wallet_params);
# 对钱包进行处理
# $checkout->result 类型为数组
if ($checkout->isError()){
    //失败处理
    var_dump($checkout->result);
} else {
    //成功处理
    var_dump($checkout->result);
}
  • 请求参数

调用参数详见 钱包收银台对象列表查询

钱包

钱包登录

通过该接口,实现对商户登录钱包功能,登录成功返回跳转地址

  • 调用示例

$wallet = new \AdaPaySdk\Wallet();
$wallet_params = array(
    # 应用ID
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    # 用户ID
    'member_id'=> 'hf_prod_member_20191013',
    # IP
    'ip'=> '192.168.1.152'
);
# 创建
$wallet->login($wallet_params);
echoExecuteResult($wallet, "钱包登录");
  • 请求参数

调用参数详见 钱包登录

账户转账对象

创建账户转账对象

创建账户转账对象仅支持同一商户下的用户与用户、用户与商户之间的转账。

  • 调用示例

# 初始化结算账户对象类
$account_transfer = new \AdaPaySdk\SettleAccountTransfer();
$params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'order_no'=> "TF_". date("YmdHis").rand(100000, 999999),
    'trans_amt'=> '0.10',
    'out_member_id'=> '0',
    'in_member_id' => 'user_000031'
);
# 创建结算账户
$account_transfer->create($params);
# 对创建结算账户结果进行处理
if ($account_transfer->isError()){
    //失败处理
    var_dump($account_transfer->result);
} else {
    //成功处理
    var_dump($account_transfer->result);
}
  • 请求参数

调用参数详见 创建账户转账对象

查询账户转账对象列表

可以基于时间范围进行查询,也可以使用原转账对象的订单号和状态进行查询

  • 调用示例

# 初始化结算交易账户对象类
$account_transfer = new \AdaPaySdk\SettleAccountTransfer();
$params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'order_no'=> '',
    'status'=> '',
    'page_index'=> '1',
    'page_size'=> '10',
    'created_gte'=> '',
    'created_lte'=> ''
);
# 查询结算交易账户
$account_transfer->queryList($params);
# 对查询结算交易账户结果进行处理
if ($account_transfer->isError()){
    //失败处理
    var_dump($account_transfer->result);
} else {
    //成功处理
    var_dump($account_transfer->result);
}
  • 请求参数

调用参数详见 查询转账对象列表

账户冻结

创建账户冻结对象

通过该接口,实现对商户或者商户下用户的结算账户可用余额进行冻结操作。

  • 调用示例

# 初始化账户冻结对象
$fz_account = new \AdaPaySdk\FreezeAccount();

$fz_params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'order_no'=> 'FZ_'. date("YmdHis").rand(100000, 999999),
    'trans_amt'=> '0.10',
    'member_id'=> 'member_id_test'
);

# 创建账户冻结对象
$fz_account->create($fz_params);

# 对创建账户冻结对象结果进行处理
if ($fz_account->isError()){
    //失败处理
    var_dump($fz_account->result);
} else {
    //成功处理
    var_dump($fz_account->result);
}
  • 请求参数

调用参数详见 账户冻结对象

查询账户冻结对象列表

通过该接口,查询已发起的账户解冻交易,支持使用原解冻交易的请求订单号,以及时间范围查询。

  • 调用示例

# 初始化账户冻结对象
$fz_account = new \AdaPaySdk\FreezeAccount();

$fz_params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'order_no'=> 'FZ_'. date("YmdHis").rand(100000, 999999),
    'status'=> 'succeeded', //succeeded-成功,failed-失败,pending-处理中
    'page_index'=> 1,
    'page_size'=> 1,
    'created_gte'=> '',
    'created_lte'=> ''
);

# 查询账户冻结对象
$fz_account->queryList($fz_params);

# 对查询账户冻结对象结果进行处理
if ($fz_account->isError()){
    //失败处理
    var_dump($fz_account->result);
} else {
    //成功处理
    var_dump($fz_account->result);
}
  • 请求参数

调用参数详见 查询账户冻结对象列表

账户解冻

创建账户解冻对象

通过该接口,实现对已冻结的交易进行全额解冻操作。

  • 调用示例

# 初始化解冻账户对象类
$un_fz_account = new \AdaPaySdk\UnFreezeAccount();

$un_fz_params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'order_no'=> 'FZ_'. date("YmdHis").rand(100000, 999999),
    'account_freeze_id'=> '002112020111717230410174704123849117696'
);

# 创建解冻账户
$un_fz_account->create($un_fz_params);

# 对创建解冻账户结果进行处理
if ($un_fz_account->isError()){
    //失败处理
    var_dump($un_fz_account->result);
} else {
    //成功处理
    var_dump($un_fz_account->result);
}
  • 请求参数

调用参数详见 创建账户解冻对象

查询账户解冻对象列表

通过该接口,查询已发起的账户解冻交易,支持使用原解冻交易的请求订单号,以及时间范围查询。

  • 调用示例

# 初始化解冻账户对象类
$un_fz_account = new \AdaPaySdk\FreezeAccount();

$un_fz_params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'order_no'=> 'FZ_'. date("YmdHis").rand(100000, 999999),
    'status'=> 'succeeded', //succeeded-成功,failed-失败,pending-处理中
    'page_index'=> 1,
    'page_size'=> 1,
    'created_gte'=> '',
    'created_lte'=> ''
);

# 查询解冻账户
$un_fz_account->queryList($un_fz_params);

# 对查询解冻账户结果进行处理
if ($un_fz_account->isError()){
    //失败处理
    var_dump($un_fz_account->result);
} else {
    //成功处理
    var_dump($un_fz_account->result);
}
  • 请求参数

调用参数详见 查询账户解冻对象列表

快捷支付

创建快捷绑卡

个人用户使用快捷支付前,对个人用户的银行卡进行验证。该功能实现对用户银行卡进行四要素验证,验证成功后,会向用户银行卡对应的预留手机号发送短信验证码。

  • 调用示例

  • 请求参数

调用参数详见 创建快捷绑卡申请

创建快捷绑卡确认

快捷绑卡申请成功后,用户输入收到的短信验证码进行短信验证,若验证成功,Adapay会返回快捷卡唯一标识token_no。若同步返回pending状态时,Adapay会发送 异步消息通知 告知。

  • 调用示例

  • 请求参数

调用参数详见 创建快捷绑卡确认

查询快捷卡对象列表

查询已绑定的快捷银行卡列表。

  • 调用示例

  • 请求参数

调用参数详见 查询快捷卡对象列表

创建快捷支付确认

当 创建支付对象 中 pay_channel 为 fast_pay 时,Adapay 会向用户已绑定快捷卡对应的预留手机号发送短信验证码,需要通过该功能输入用户收到的短信验证码进行验证。 验证结果,Adapay 会发送 异步消息通知 告知。

  • 调用示例

# 初始化快捷支付对象
$fast_pay = new \AdaPaySdk\FastPay();

$fp_params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'payment_id'=> '002112020012010545810065165317376983040',
    'sms_code'=> '123456'
);

# 创建快捷支付确认
$fast_pay->payConfirm($fp_params);

# 对创建快捷支付确认结果进行处理
if ($fast_pay->isError()){
    //失败处理
    var_dump($fast_pay->result);
} else {
    //成功处理
    var_dump($fast_pay->result);
}
  • 请求参数

调用参数详见 创建快捷支付确认

创建快捷支付短信重发

给创建的快捷支付的卡绑定的手机发送短信验证

  • 调用示例

# 初始化快捷支付对象
$fast_pay = new \AdaPaySdk\FastPay();

$fp_params = array(
    'payment_id'=> '20190912'
);

# 创建快捷支付短信发送
$fast_pay->paySmsCode($fp_params);

# 对创建快捷支付短信发送结果进行处理
if ($fast_pay->isError()){
    //失败处理
    var_dump($fast_pay->result);
} else {
    //成功处理
    var_dump($fast_pay->result);
}
  • 请求参数

调用参数详见 创建快捷支付短信重发

服务商分账对象

创建服务商分账对象

  • 调用示例

# 初始化分账账户对象类
$account_commissions = new \AdaPaySdk\SettleAccountCommissions();

$params = array(
    'payment_id'=> '002112021012814392510200754865217691648',
    'order_no'=> "CMS_". date("YmdHis").rand(100000, 999999),
    'trans_amt'=> '0.10'
);

# 创建分账账户
$account_commissions->create($params);

# 对创建分账账户结果进行处理
if ($account_commissions->isError()){
    //失败处理
    var_dump($account_commissions->result);
} else {
    //成功处理
    var_dump($account_commissions->result);
}
  • 参数说明

调用参数详见 创建服务商分账对象

查询服务商分账对象列表

  • 调用示例

# 初始化分账账户对象类
$account_commissions = new \AdaPaySdk\SettleAccountCommissions();

$params = array(
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    'order_no'=> '',
    'status'=> '',
    'page_index'=> '1',
    'page_size'=> '10',
    'created_gte'=> '',
    'created_lte'=> ''
);

# 查询分账交易账户
$account_commissions->queryList($params);

# 对查询分账账户结果进行处理
if ($account_commissions->isError()){
    //失败处理
    var_dump($account_commissions->result);
} else {
    //成功处理
    var_dump($account_commissions->result);
}
  • 参数说明

调用参数详见 查询服务商分账对象列表

工具类

下载对账单

您可通过本接口下载您交易日期的对账单。比如掉单、系统错误等导致商户侧和 Adapay 侧数据不一致,通过对账单核对后可校正支付状态。

  • 调用示例

# 初始化对账单下载对象类
$bill = new \AdaPaySdk\Bill();

# 对账单日期

# 对账单下载
$bill->download(["bill_date"=> "20190905"]);

# 对账单下载结果进行处理
if ($bill->isError()){
    //失败处理
    var_dump($bill->result);
} else {
    //成功处理
    var_dump($bill->result);
}
  • 请求参数

参数

类型

描述

bill_date

String(8)

对账单的日期,格式:20180808

  • 返回参数

参数

类型

描述

bill_download_url

String(8)

对账单文件下载 url

获取云闪付用户标识

通过本接口获取银联云闪付用户标识

  • 调用示例

$union_user = new \AdaPaySdk\Tools();

# 获取银联云闪付用户标识
$union_params = array(
    # app_id
    'app_id'=> 'app_7d87c043-aae3-4357-9b2c-269349a980d6',
    # 用户授权码
    'user_auth_code'=> '5yRGbi+IRda5khIQoQf1Hw==',
    # App 标识
    'app_up_identifier'=> 'CloudPay',
    # 订单号
    'order_no'=> "_". date("YmdHis").rand(100000, 999999)
);
# 获取银联云闪付用户标识
$union_user->unionUserId($union_params);

# 获取银联云闪付用户标识结果进行处理
if ($union_user->isError()){
    //失败处理
    var_dump($union_user->result);
} else {
    //成功处理
    var_dump($union_user->result);
}
  • 请求参数

调用参数详见 获取银联云闪付用户标识

验签方法

通过此方法,商户可对 HTTP 回调参数进行签名验证。

返回示例详见 http response

  • 调用示例

<?php
/**
* 判断支付异步回调业务处理
* User: shuaishuai.niu
* Date: 2020/11/16
* Time: 14:01
*/


# 加载SDK需要的文件
include_once dirname(__FILE__) . "/../../AdapaySdk/init.php";
# 加载商户的配置文件
include_once dirname(__FILE__) . "/../config.php";

$adapay_tools = new \AdaPaySdk\AdapayTools();

# POST 接收的数据的key
# create_time, data, prod_mode, sign, id, type,app_id
#   array(
#       'app_id' => 'app_fe1ec54d-e7cd-432a-a994-c12c3d8295f8',
#       'created_time' => '20201115182858',
#       'end_time' => '20201115182904',
#       'expend' => [
#                'bank_type' => 'OTHERS',
#                'open_id' => '1123213123123',
#                'sub_open_id'=> '36323333333'
#       ],
#       'id' => '002112020111518285710173995928213929984',
#       'order_no' => 'SH20201115182857625624',
#       'out_trans_id' => '4200000839202011155051561044',
#       'party_order_id' => '02212011156653808201465',
#       'pay_amt' => '02212011156653808201465',
#       'pay_channel' => '02212011156653808201465',
#       'status' => 'succeeded'
#   )
$post = file_get_contents("php://input");
$post_data_str = isset($post['data']) ? $post['data']: '';
$post_sign_str = isset($post['sign']) ? $post['sign']: '';

// 此处只是个示例 需要测试请去掉注释
//$post_data_str = "{\"app_id\":\"app_fe1ec54d-e7cd-432a-a994-c12c3d8295f8\",\"created_time\":\"20201115182858\",\"end_time\":\"20201115182904\",\"expend\":{\"bank_type\":\"OTHERS\",\"open_id\":\"o8jhotwaUEffs1fyWE5O3N4HWvbk\",\"sub_open_id\":\"o4WGIxA59TYBzEKdwz_s6actNIYY\"},\"id\":\"002112020111518285710173995928213929984\",\"order_no\":\"SH20201115182857625624\",\"out_trans_id\":\"4200000839202011155051561044\",\"party_order_id\":\"02212011156653808201465\",\"pay_amt\":\"0.01\",\"pay_channel\":\"wx_pub\",\"status\":\"succeeded\"}";
//
//$sign_flag = $adapay_tools->verifySign($post_data_str,"YXOWP5pyL38cZvXbVTyr4Lp9tpr2IzYmc5+EXuNofMTPPlCMfgXX4aBHT8QhxmKMYe95TBklWrM6IAdSLqIBXyc7CYnEYh0o54QHH4H\/yKy5yiOqFCbcHAHPhtJPU28rj+dHbG7YG\/4Qk5psFoBuOTP99ACizLy\/uiILYY3UhJk=");

# 先校验签名和返回的数据的签名的数据是否一致
$sign_flag = $adapay_tools->verifySign($post_data_str, $post_sign_str);

if ($sign_flag){
    var_dump("签名验证通过");
    # 业务方自己的逻辑
}else{
    var_dump("签名验证失败");
    # 业务方自己的逻辑
}