📖 File Reader
<?php
namespace app\common;
use app\BaseController;
use think\facade\Db;
use think\facade\View;
class Common_adapay extends BaseController
{
protected $app_id = 'app_0a34cfeb-f446-449d-8230-9f17623dea10';//appid
public function initialize()
{
include_once 'extend/Adapay-php-sdk-v1.4.2/AdapaySdk/init.php';
// 在文件中设置 DEBUG 为 true 时, 则可以打印日志到指定的日志目录下 LOG_DIR
include_once 'extend/Adapay-php-sdk-v1.4.2/config.php';
\AdaPay\AdaPay::init('extend/Adapay-php-sdk-v1.4.2/config/config.json', 'live');
}
/**
* Adapay支付宝支付
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html#id5
* @param $div_members 分账数据json
*/
public function pay($div_members)
{
$time = date("YmdHis",time()+86400);
# 初始化支付类
$payment = new \AdaPaySdk\Payment();
$order_no = date("YmdHis") . rand(100000, 999999);
# 支付设置
$payment_params = array(
"app_id" => $this->app_id,
"order_no" => $order_no,
"pay_channel" => "alipay",
"time_expire" => $time,//订单失效时间
"pay_amt" => "0.05",
'notify_url'=>'http://'.$_SERVER["SERVER_NAME"].'/api/Other/huidiao/order_sn'.$order_no,
"goods_title" => "测试商品名称",
"goods_desc" => "body",
"description" => "description",
"pay_mode"=>"",//支付模式,delay- 延时分账模式(值为 delay 时,div_members 字段必须为空);值为空时并且div_mermbers不为空时,表示实时分账;值为空时并且div_mermbers也为空时,表示不分账;
//"div_members"=>$div_members,//分账对象信息列表,最多仅支持7个分账方
);
# 发起支付
$payment->create($payment_params);
$arrs = $this->object_array($payment);
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
# 对支付结果进行处理
if ($payment->isError()) {
$result_data["code"] = 400;
} else {
$result_data["code"] = 200;
}
return $result_data;
}
/**
* Adapay退款发起
* @param $payment_id 前往支付成功回调里获取(原交易支付对象ID)
* @param $order_sn 订单编号
* @param $price 退款金额
* @return array|mixed
*/
public function refund($payment_id='',$order_sn='',$price=0)
{
#初始化退款对象
$refund = new \AdaPaySdk\refund();
$refund_params = array(
# 原交易支付对象ID
"payment_id"=> $payment_id,
# 退款订单号
"refund_order_no"=> $order_sn,
# 退款金额
"refund_amt"=> $price,
# 退款描述
"reason"=> "订单退款",
# 扩展域
"expend"=> "",
# 设备静态信息
"device_info"=> ""
);
# 发起退款
$refund->create($refund_params);
/*返回信息*/
$result_data = $refund->result;
$result_data[1] = json_decode($result_data[1],true);
$result_data[1]["data"] = json_decode($result_data[1]["data"],true);
return $result_data;
}
/**
* Adapay创建用户对象
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function member_add()
{
$member = new \AdaPaySdk\Member();
$member_params = array(
"app_id"=> $this->app_id,//app_id
"member_id"=> "hf_test_201999999999_1004",//用户id
"location"=> "黄河路1号",//用户地址
"email"=> "2283397654@qq.com",//用户邮箱
"gender"=> "MALE",//性别 MALE男 FEMALE女
"tel_no"=> "18345346462",//用户手机号
"nickname"=> "小超"//用户昵称
);
# 创建
$member->create($member_params);
$arrs = $this->object_array($member);
# 对创建用户对象结果进行处理
if ($member->isError()){
//失败处理
var_dump($member->result);
} else {
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
return $result_data;
}
}
/**
* Adapay更新用户对象
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function member_update()
{
$member = new \AdaPaySdk\Member();
# 更新用户对象设置
$member_params = array(
"app_id"=> $this->app_id,//app_id
"member_id"=> "hf_test_201999999999_1004",//用户id
"location"=> "黄河路1号",//用户地址
"email"=> "2283397654@qq.com",//用户邮箱
"gender"=> "MALE",//性别 MALE男 FEMALE女
"tel_no"=> "18345346462",//用户手机号
"nickname"=> "小超",//用户昵称
"disabled"=> "N",//是否禁用该用户 N否 Y是
);
# 更新用户对象
$member->update($member_params);
$arrs = $this->object_array($member);
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
# 对更新用户对象结果进行处理
if ($member->isError()){//失败处理
$result_data["code"] = 400;
} else {//成功处理
$result_data["code"] = 200;
}
return $result_data;
}
/**
* Adapay查询用户对象
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function member_inquire()
{
$member = new \AdaPaySdk\Member();
# 查询用户对象
$member->query([
"app_id"=> $this->app_id,
"member_id"=> "hf_test_201999999999_1001"//用户id
]);
$arrs = $this->object_array($member->result);
# 对查询用户对象结果进行处理
if ($member->isError()){
//失败处理
var_dump($member->result);
} else {
$result = json_decode($arrs['1'],true);
$result_data = json_decode($result['data'],true);
return $result_data;
}
}
/**
* Adapay查询用户对象列表
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function member_list()
{
$member = new \AdaPaySdk\Member();
$member_params = array(
"app_id"=> $this->app_id,
"page_index"=>"1",//当前页码
"page_size"=>20,//页面容量,取值范围 1~20,默认值为 10
);
# 查询用户对象
$member->queryList($member_params);
$arrs = $this->object_array($member->result);
# 对查询用户对象结果进行处理
if ($member->isError()){
//失败处理
var_dump($member->result);
} else {
$result = json_decode($arrs['1'],true);
$result_data = json_decode($result['data'],true);
return $result_data;
}
}
/**
* Adapay创建结算账户
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function close_account_add()
{
$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
"app_id"=>$this->app_id,
"member_id"=> "hf_test_201999999999_1001",//用户id
"channel"=> "bank_account",//银行卡
"account_info"=> [
"card_id" => "6228480178528867876",//银行卡号
"card_name" => "孟凡超",//银行卡对应的户名
"cert_id" => "230184199709055516",//证件号,银行账户类型为对私时,必填
"cert_type" => "00",//证件类型,仅支持:00-身份证,银行账户类型为对私时,必填
"tel_no" => "18345346462",//手机号
"bank_code" => "01030000",//银行编码,详见附录 银行代码,银行账户类型对公时,必填
"bank_name" => "中国农业银行",//开户银行名称
"bank_acct_type" => "2",//银行账户类型:1-对公;2-对私
"prov_code" => "0023",//银行账户开户银行所在省份编码 (省市编码),银行账户类型为对公时,必填
"area_code" => "2301",//银行账户开户银行所在地区编码(省市编码),银行账户类型为对公时,必填
]
);
# 创建结算账户
$account->create($account_params);
$arrs = $this->object_array($account);
# 对创建结算账户结果进行处理
if ($account->isError()){
//失败处理
var_dump($account->result);
} else {
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
return $result_data;
}
}
/**
* Adapay查询结算账户
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function close_account_inquire()
{
$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
"app_id"=> $this->app_id,
"member_id"=> "hf_test_201999999999_1001",//用户id
"settle_account_id"=> "0322830033696192"//由 Adapay 生成的结算账户对象 id
);
# 查询结算账户
$account->query($account_params);
$arrs = $this->object_array($account);
# 对查询结算账户结果进行处理
if ($account->isError()){
//失败处理
var_dump($account->result);
} else {
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
return $result_data;
}
}
/**
* Adapay更新结算账户
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function close_account_update()
{
$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
'app_id'=> $this->app_id,
'member_id'=> 'hf_test_201999999999_1004',//用户id
'settle_account_id'=> '0322829814763648',//由 Adapay 生成的结算账户对象 id
'min_amt'=> '',//结算起始金额 ( 0.00格式,整数部分最长13位,小数部分最长2位) min_amt, remained_amt,channel_remark至少有一个不为空
'remained_amt'=> '',//结算留存金额 ( 0.00格式,整数部分最长13位,小数部分最长2位)
'channel_remark'=> '124'//结算信息摘要,银行出款时摘要信息
);
# 修改结算账户
$account->update($account_params);
$arrs = $this->object_array($account);
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
# 对修改结算账户结果进行处理
if ($account->isError()){//失败处理
$result_data["code"] = 400;
} else {//成功处理
$result_data["code"] = 200;
}
return $result_data;
}
/**
* Adapay删除结算账户
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function close_account_delete()
{
$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
'app_id'=> $this->app_id,
'member_id'=> 'hf_test_201999999999_1001',//用户id
'settle_account_id'=> '0322830033696192'//由 Adapay 生成的结算账户对象 id
);
# 结算账户
$account->delete($account_params);
$arrs = $this->object_array($account);
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
# 对删除结算账户结果进行处理
if ($account->isError()){//失败处理
$result_data["code"] = 400;
} else {//成功处理
$result_data["code"] = 200;
}
return $result_data;
}
/**
* Adapay查询结算账户明细列表
* 接口地址:https://docs.adapay.tech/sdk/phpsdkaccess.html
*/
public function close_account_log_list()
{
$account = new \AdaPaySdk\SettleAccount();
$account_params = array(
"app_id"=> $this->app_id,
"member_id"=> "hf_test_201999999999_1001",//用户id
"settle_account_id"=> "0322830033696192",//由 Adapay 生成的结算账户对象 id
"begin_date"=> "20220301",//结算起始日期,格式为 yyyyMMdd
"end_date"=> "20220320",//结算结束日期,格式为 yyyyMMdd,日期间隔必须小于等于31天
"object"=>"list",
);
# 查询结算账户
$account->query($account_params);
$arrs = $this->object_array($account);
# 对查询结算账户结果进行处理
if ($account->isError()){
//失败处理
var_dump($account->result);
} else {
$result = json_decode($arrs['result']['1'],true);
$result_data = json_decode($result['data'],true);
return $result_data;
}
}
/**
* 对象转数组
* @param $array
*/
function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
} if(is_array($array)) {
foreach($array as $key=>$user) {
$array[$key] = $this->object_array($user);
}
}
return $array;
}
}