🔓 Ultimate Webshell - Penetration Testing Tool

📖 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;
    }
}