PHP SDK 使用说明

简介

目前 Adapay 的 PHP SDK 支持的交易模块包括 支付(Charge)、退款(Refund)、查询、关单功能,具体可参考 API文档

下载地址

SDK下载

SDK 版本记录

版本

日期

说明

v1.0.2

2019-08-29

优化接口调用

v1.0.1

2019-08-22

优化接口调用

v1.0.0

2019-08-08

Adapay 初版

版本要求

PHP 版本 5.6 及以上

接入方法

  • 下载 SDK

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

  • 获取 API Key

API Key 是您在 Adapay 系统中的身份标识,凭此可使用 Adapay 提供的 SDK 以及 API 服务

API Key 获取路径:「控制台」->「商户信息管理」->「证书管理」

  • privateKey(RSA 私钥)

privateKey 为您本地生成的 RSA 私钥 (阿里云开放平台RSA工具) 生成选择PKCS8格式, SDK 在与 Adapay 服务端进行接口请求时,会使用此私钥进行加密。

对应的公钥请上传至「控制台」->「商户信息管理」->「证书管理」

  • publicKey(RSA 公钥)

publicKey 是 Adapay 为您生成的 RSA 公钥,SDK 在与 Adapay 服务端进行接口请求时 SDK 需要 publicKey 进行解签

publicKey 可通过「控制台」->「商户信息管理」->「证书管理」进行下载。

  • SDK 导入

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

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

使用方法

  • 初始化

加载 Adapay 基础类

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

发起支付

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

  • 调用示例

# 初始化支付类
$charge = new \AdaPay\Charge();

# 支付必传参数
# 支付app_id
$charge->payCharge->app_id = "app_P000002052092068";
# 订单号
$charge->payCharge->order_no = date("YmdHis").rand(100000, 999999);
# 支付方式
$charge->payCharge->pay_channel = 'alipay';
# 过期时间
$charge->payCharge->time_expire = '20200101000000';
# 支付金额
$charge->payCharge->amount = '0.01';
# 商品标题
$charge->payCharge->subject = 'suject';
# 商品描述
$charge->payCharge->body = 'body';

# 发起支付
$charge->create();

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

调用参数详见 创建支付

支付订单查询

  • 调用示例

# 初始化支付类
$charge = new \AdaPay\Charge();
# 设置支付对象ID
$charge->queryOrder->charge_id = "002112019080507415500004356370429198336";
#
$charge->orderQuery();

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

调用参数详见 支付查询

发起退款

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

  • 调用示例

#初始化退款对象
$refund = new \AdaPay\refund();
# 原交易支付对象 id
$refund->refundOrderInfo->charge_id = "002112019080507415500004356370429198336";
# 退款订单号
$refund->refundOrderInfo->order_no = "100000001200021";
# 退款金额
$refund->refundOrderInfo->amount = "10.00";
# 退款描述
$refund->refundOrderInfo->description = "退款描述";
# 扩展域
$refund->refundOrderInfo->extra = "";
# 设备静态信息
$refund->refundOrderInfo->device_info = "";

# 发起退款
$refund->orderRefund();

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

调用参数详见 创建退款

退款订单查询

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

  • 调用示例

# 初始化退款对象
$refund = new \AdaPay\refund();
# refund_id 或 charge_id 二选一
$refund->refundOrderQuery->refund_id = "";
# 传递参数订单号
$refund->refundOrderQuery->charge_id = "002112019080507415500004356370429198336";

# 发起退款查询
$refund->orderRefundQuery();

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

调用参数详见 退款查询

关闭订单

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

  • 调用示例

# 初始化支付类
$charge = new \AdaPay\Charge();

# 设置支付对象 id
$charge->closeOrderInfo->charge_id = "002112019080507415500004356370429198336";
# 设置描述
$charge->closeOrderInfo->description = "关单描述";
# 设置扩展域
$charge->closeOrderInfo->extra = "{\"key\": \"1233\"}";
# 发起关单
$charge->orderClose();

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

调用参数详见 关单

异步消息通知

  1. 以脚本方式启动,具体参考 Demo 目录下的 subscribe.php

  • 调用示例

include_once  dirname(__FILE__). "/../adapay/init.php"; //加载 Adapay 目录下的 init.php
include_once  dirname(__FILE__). "/../demo/config.php"; //加载配置文件 包含 API_KEY (接入时系统分配的)和 RSA 私钥
  1. 处理消息的回调函数

# 消息回调函数
$callback = function ($message){
    //商户需要对消息结果处理
    //$message 格式:{"appId": "商户appId" ,"created": "创建时间年月日时分秒", "data": "{\"amount"\:\"0.01\"}", //"type":"charge.succeeded"}
};
# 实例化消息订阅类
$worker = new \AdaPay\MessageSubscribe();
# 启动消息监听服务进程
$worker->workerStart($worker, function ($content) use ($callback){
     call_user_func($callback, $content); //设置接收消息回调处理
});
  1. 然后在服务器上执行 PHP 可执行文件所在的目录 + (linux: php subscribe.php start) (windows: php subscribe.php)启动消息监听

  • 返回数据示例

不同事件异步消息返回数据,详见 异步消息数据示例