Init Repo
This commit is contained in:
commit
f0ef89dfbb
BIN
._.DS_Store
Executable file
BIN
._.DS_Store
Executable file
Binary file not shown.
4
.gitignore
vendored
Executable file
4
.gitignore
vendored
Executable file
@ -0,0 +1,4 @@
|
||||
.idea/
|
||||
down/
|
||||
*.zip
|
||||
hyhproject/common/conf/database.php
|
8
.htaccess
Executable file
8
.htaccess
Executable file
@ -0,0 +1,8 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
Options +FollowSymlinks -Multiviews
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
|
||||
</IfModule>
|
26
404.html
Executable file
26
404.html
Executable file
@ -0,0 +1,26 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>404</title>
|
||||
<style>
|
||||
body{
|
||||
background-color:#444;
|
||||
font-size:14px;
|
||||
}
|
||||
h3{
|
||||
font-size:60px;
|
||||
color:#eee;
|
||||
text-align:center;
|
||||
padding-top:30px;
|
||||
font-weight:normal;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h3>404,您请求的文件不存在!</h3>
|
||||
</body>
|
||||
</html>
|
4
addons/.htaccess
Executable file
4
addons/.htaccess
Executable file
@ -0,0 +1,4 @@
|
||||
<FilesMatch (.*)\.(html|php)$>
|
||||
order allow,deny
|
||||
deny from all
|
||||
</FilesMatch>
|
76
addons/cron/Cron.php
Executable file
76
addons/cron/Cron.php
Executable file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
namespace addons\cron; // 注意命名空间规范
|
||||
|
||||
|
||||
use think\addons\Addons;
|
||||
use addons\cron\model\Crons as DM;
|
||||
|
||||
/**
|
||||
* 计划任务功能
|
||||
* @author HSF
|
||||
*/
|
||||
class Cron extends Addons{
|
||||
// 该插件的基础信息
|
||||
public $info = [
|
||||
'name' => 'Cron', // 插件标识
|
||||
'title' => '计划任务', // 插件名称
|
||||
'description' => '计划任务管理,若用户没有在系统里配置定时任务则建议开启该插件', // 插件简介
|
||||
'status' => 0, // 状态
|
||||
'author' => 'HSF',
|
||||
'version' => '1.0.0'
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* 插件安装方法
|
||||
* @return bool
|
||||
*/
|
||||
public function install(){
|
||||
$m = new DM();
|
||||
$flag = $m->install();
|
||||
WSTClearHookCache();
|
||||
return $flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件卸载方法
|
||||
* @return bool
|
||||
*/
|
||||
public function uninstall(){
|
||||
$m = new DM();
|
||||
$flag = $m->uninstall();
|
||||
WSTClearHookCache();
|
||||
return $flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件启用方法
|
||||
* @return bool
|
||||
*/
|
||||
public function enable(){
|
||||
WSTClearHookCache();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件禁用方法
|
||||
* @return bool
|
||||
*/
|
||||
public function disable(){
|
||||
WSTClearHookCache();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件设置方法
|
||||
* @return bool
|
||||
*/
|
||||
public function saveConfig(){
|
||||
WSTClearHookCache();
|
||||
return true;
|
||||
}
|
||||
|
||||
public function initCronHook($params){
|
||||
echo "<img style='display:none' src='".request()->root(true)."/addon/cron-cron-runCrons.html'>";
|
||||
}
|
||||
}
|
5
addons/cron/config.php
Executable file
5
addons/cron/config.php
Executable file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
);
|
56
addons/cron/controller/Cron.php
Executable file
56
addons/cron/controller/Cron.php
Executable file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
namespace addons\cron\controller;
|
||||
|
||||
use think\addons\Controller;
|
||||
use addons\cron\model\Crons as M;
|
||||
/**
|
||||
* ============================================================================
|
||||
* 计划任务控制器
|
||||
*/
|
||||
class Cron extends Controller{
|
||||
|
||||
public function index(){
|
||||
return $this->fetch("admin/list");
|
||||
}
|
||||
/**
|
||||
* 获取分页
|
||||
*/
|
||||
public function pageQuery(){
|
||||
$m = new M();
|
||||
return WSTGrid($m->pageQuery());
|
||||
}
|
||||
public function toEdit(){
|
||||
$m = new M();
|
||||
$rs = $m->getById(Input("id/d",0));
|
||||
$this->assign("data",$rs);
|
||||
return $this->fetch("admin/edit");
|
||||
}
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
public function edit(){
|
||||
$m = new M();
|
||||
return $m->edit();
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行计划任务
|
||||
*/
|
||||
public function runCron(){
|
||||
$m = new M();
|
||||
return $m->runCron();
|
||||
}
|
||||
public function runCrons(){
|
||||
$m = new M();
|
||||
return $m->runCrons();
|
||||
}
|
||||
|
||||
/**
|
||||
* 停用计划任务
|
||||
*/
|
||||
public function changeEnableStatus(){
|
||||
$m = new M();
|
||||
return $m->changeEnableStatus();
|
||||
}
|
||||
|
||||
}
|
0
addons/cron/install.sql
Executable file
0
addons/cron/install.sql
Executable file
318
addons/cron/model/Crons.php
Executable file
318
addons/cron/model/Crons.php
Executable file
@ -0,0 +1,318 @@
|
||||
<?php
|
||||
namespace addons\cron\model;
|
||||
use think\addons\BaseModel as Base;
|
||||
use think\Db;
|
||||
/**
|
||||
* ============================================================================
|
||||
* 计划任务业务处理
|
||||
*/
|
||||
class Crons extends Base{
|
||||
/***
|
||||
* 安装插件
|
||||
*/
|
||||
public function install(){
|
||||
Db::startTrans();
|
||||
try{
|
||||
$hooks = ['initCronHook'];
|
||||
$this->bindHoods("Cron", $hooks);
|
||||
//管理员后台
|
||||
$rs = Db::name('menus')->insert(["parentId"=>2,"menuName"=>"计划任务","menuSort"=>11,"dataFlag"=>1,"isShow"=>1,"menuMark"=>"cron"]);
|
||||
if($rs!==false){
|
||||
$datas = [];
|
||||
$parentId = Db::name('menus')->getLastInsID();
|
||||
$datas[] = ["menuId"=>$parentId,"privilegeCode"=>"CRON_JHRW_00","privilegeName"=>"查看计划任务","isMenuPrivilege"=>1,"privilegeUrl"=>"/addon/cron-cron-index","otherPrivilegeUrl"=>"/addon/cron-cron-pageQuery","dataFlag"=>1,"isEnable"=>1];
|
||||
$datas[] = ["menuId"=>$parentId,"privilegeCode"=>"CRON_JHRW_04","privilegeName"=>"操作计划任务","isMenuPrivilege"=>0,"privilegeUrl"=>"/addon/cron-cron-toEdit","otherPrivilegeUrl"=>"/addon/cron-cron-edit,/addon/cron-cron-changeEnableStatus,/addon/cron-cron-runCron","dataFlag"=>1,"isEnable"=>1];
|
||||
Db::name('privileges')->insertAll($datas);
|
||||
}
|
||||
installSql("cron");
|
||||
Db::commit();
|
||||
return true;
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除菜单
|
||||
*/
|
||||
public function uninstall(){
|
||||
Db::startTrans();
|
||||
try{
|
||||
$hooks = ['initCronHook'];
|
||||
$this->unbindHoods("Cron", $hooks);
|
||||
Db::name('menus')->where(["menuMark"=>"cron"])->delete();
|
||||
Db::name('privileges')->where(["privilegeCode"=>array("like","CRON_%")])->delete();
|
||||
uninstallSql("cron");//传入插件名
|
||||
Db::commit();
|
||||
return true;
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 分页
|
||||
*/
|
||||
public function pageQuery(){
|
||||
return $this->order('id desc')->paginate(input('limit/d'));
|
||||
}
|
||||
/**
|
||||
* 列表
|
||||
*/
|
||||
public function listQuery(){
|
||||
return $this->order('id desc')->select();
|
||||
}
|
||||
public function getById($id){
|
||||
$rs = $this->get($id);
|
||||
if($rs['cronJson']!='')$rs['cronJson'] = unserialize($rs['cronJson']);
|
||||
return $rs;
|
||||
}
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
public function edit(){
|
||||
$data = input('post.');
|
||||
$data['cronMinute'] = str_replace(',',',',$data['cronMinute']);
|
||||
if($data['cronMinute']=='')$data['cronMinute'] = '0';
|
||||
Db::startTrans();
|
||||
try{
|
||||
$corn = $this->get((int)$data['id']);
|
||||
$corn->cronCycle = (int)$data['cronCycle'];
|
||||
if(!in_array($corn->cronCycle,[0,1,2]))return WSTReturn('无效的计划时间');
|
||||
if($corn->cronCycle==0)$corn->cronDay = $data['cronDay'];
|
||||
if($corn->cronDay<=0 || $corn->cronDay>=32)return WSTReturn('无效的计划日期');
|
||||
if($corn->cronCycle==1)$corn->cronWeek = $data['cronWeek'];
|
||||
if($corn->cronWeek<0 || $corn->cronWeek>6)return WSTReturn('无效的计划星期');
|
||||
$corn->cronHour = $data['cronHour'];
|
||||
if($corn->cronCycle<0 || $corn->cronCycle>23)return WSTReturn('无效的计划时间');
|
||||
$corn->cronMinute = $data['cronMinute'];
|
||||
$json = unserialize($corn->cronJson);
|
||||
if(!empty($json)){
|
||||
foreach ($json as $key => $v) {
|
||||
$json[$key]['fieldVal'] = input('post.'.$v['fieldCode']);
|
||||
}
|
||||
}
|
||||
$corn->cronJson = serialize($json);
|
||||
$corn->isEnable = (int)input('post.isEnable');
|
||||
$corn->nextTime = $this->getNextRunTime($corn);
|
||||
$result = $corn->save();
|
||||
if(false !== $result){
|
||||
cache('WST_CRONS',null);
|
||||
Db::commit();
|
||||
return WSTReturn("编辑成功", 1);
|
||||
}
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
}
|
||||
return WSTReturn('编辑失败',-1);
|
||||
}
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
public function changeEnableStatus(){
|
||||
$id = (int)input('post.id/d');
|
||||
$status = ((int)input('post.status/d')==1)?1:0;
|
||||
Db::startTrans();
|
||||
try{
|
||||
$result = $this->setField(['isEnable'=>$status,'id'=>$id]);
|
||||
if(false !== $result){
|
||||
cache('WST_CRONS',null);
|
||||
Db::commit();
|
||||
return WSTReturn("操作成功", 1);
|
||||
}
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
}
|
||||
return WSTReturn('操作失败',-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行计划任务
|
||||
*/
|
||||
public function runCron(){
|
||||
$id = (int)input('post.id');
|
||||
$cron = $this->get($id);
|
||||
if(!$cron)return WSTReturn('计划任务不存在,跳过此次执行',1);
|
||||
if($cron->isEnable==0)return WSTReturn('任务执行未开启中,跳过此次执行',1);
|
||||
if($cron->isRunning==1)return WSTReturn('已有任务执行中,跳过此次执行',1);
|
||||
$cron->runTime = date('Y-m-d H:i:s');
|
||||
$cron->nextTime = $this->getNextRunTime($cron);
|
||||
Db::startTrans();
|
||||
try{
|
||||
$cron->isRunning = 1;
|
||||
$cron->save();
|
||||
$domain = request()->root(true);
|
||||
$domain = $domain."/".$cron->cronUrl;
|
||||
$data = $this->http($domain);
|
||||
$data = json_decode($data,true);
|
||||
$cron->isRunning = 0;
|
||||
if($data['status']==1){
|
||||
$cron->isRunSuccess = 1;
|
||||
}else{
|
||||
$cron->isRunSuccess = 0;
|
||||
}
|
||||
$cron->save();
|
||||
Db::commit();
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
$cron->isRunning = 0;
|
||||
$cron->isRunSuccess = 0;
|
||||
$cron->save();
|
||||
return WSTReturn('执行失败');
|
||||
}
|
||||
return WSTReturn('执行成功',1);
|
||||
}
|
||||
|
||||
public function http($url){
|
||||
$ch=curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置否输出到页面
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //设置连接等待时间
|
||||
curl_setopt($ch, CURLOPT_ENCODING, "gzip" );
|
||||
$data=curl_exec($ch);
|
||||
$info = curl_getinfo($ch);
|
||||
curl_close($ch);
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行所有定时任务
|
||||
*/
|
||||
public function runCrons(){
|
||||
$cons = $this->where('isEnable',1)->select();
|
||||
$day = date('d');
|
||||
$hour = date('H');
|
||||
$minute = date('i');
|
||||
$week = date('w');
|
||||
foreach($cons as $key =>$cron){
|
||||
if($cron->isRunning==1)contnie;
|
||||
//判断能否执行
|
||||
if(strtotime($cron->nextTime)>time())continue;
|
||||
Db::startTrans();
|
||||
try{
|
||||
//fopen(time().'_'.rand(0,10000)."_auctionEnd.txt", "w");
|
||||
$cron->isRunning = 1;
|
||||
$cron->runTime = date('Y-m-d H:i:s');
|
||||
$cron->nextTime = $this->getNextRunTime($cron);
|
||||
$cron->save();
|
||||
$domain = request()->root(true);
|
||||
$domain = $domain."/".$cron->cronUrl;
|
||||
$data = $this->http($domain);
|
||||
$data = json_decode($data,true);
|
||||
$cron->isRunning = 0;
|
||||
if($data['status']==1){
|
||||
$cron->isRunSuccess = 1;
|
||||
}else{
|
||||
$cron->isRunSuccess = 0;
|
||||
}
|
||||
$cron->save();
|
||||
Db::commit();
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
$cron->isRunning = 0;
|
||||
$cron->isRunSuccess = 0;
|
||||
$cron->save();
|
||||
}
|
||||
}
|
||||
echo "done";
|
||||
}
|
||||
|
||||
public function getNextRunTime($cron){
|
||||
$monthDay = date("t");
|
||||
$today = date('j');
|
||||
$thisWeek = date('w');
|
||||
$thisHour = date('H');
|
||||
$thisMinute = date('i');
|
||||
$nextDay = date('Y-m-d');
|
||||
$nextHour = 0;
|
||||
$nextMinute = 0;
|
||||
$isFurther = false;//标记是否要往前进一位
|
||||
$tmpMinute = [];
|
||||
if($cron->cronMinute==-1){
|
||||
$nextMinute = date('i',strtotime('+1 Minute'));
|
||||
if($nextMinute<$thisMinute)$isFurther = true;
|
||||
$tmpMinute[] = $nextMinute;
|
||||
}else{
|
||||
$tmpMinute = explode(',',$cron->cronMinute);
|
||||
sort($tmpMinute);
|
||||
$isFind = false;
|
||||
foreach($tmpMinute as $key => $v){
|
||||
if((int)$v>59)continue;
|
||||
if($thisMinute<(int)$v){
|
||||
$nextMinute = (int)$v;
|
||||
$isFind = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$isFind){
|
||||
$nextMinute = (int)$tmpMinute[0];
|
||||
$isFurther = true;
|
||||
}
|
||||
}
|
||||
if($cron->cronHour==-1){
|
||||
$nextHour = date("H",time()+($isFurther?3200:0));
|
||||
$isFurther = false;
|
||||
if($nextHour<$thisHour)$isFurther = true;
|
||||
}else{
|
||||
$nextHour = $cron->cronHour;
|
||||
$isFurther = false;
|
||||
}
|
||||
if(time()>strtotime(date('Y-m-d')." ".$nextHour.":".$nextMinute.":00"))$isFurther = true;
|
||||
if($cron->cronCycle==0){
|
||||
if($isFurther){
|
||||
$today = date('j',strtotime('+1 day'));
|
||||
}
|
||||
if($today<$cron->cronDay){
|
||||
$nextDay = date('Y-m-'.$cron->cronDay);
|
||||
}else{
|
||||
$nextDay = date("Y-m",strtotime(" +1 month"))."-".$cron->cronDay;
|
||||
}
|
||||
if(date('j',strtotime($nextDay))!=$today){
|
||||
if($cron->cronHour==-1){
|
||||
$nextHour = 0;
|
||||
}else{
|
||||
$nextHour = $cron->cronHour;
|
||||
}
|
||||
if($cron->cronMinute==-1){
|
||||
$nextMinute = 0;
|
||||
}else{
|
||||
$nextMinute = (int)$tmpMinute[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
if($cron->cronCycle==1){
|
||||
if($isFurther){
|
||||
$thisWeek = date('w',strtotime('+1 day'));
|
||||
}
|
||||
$num = 0;
|
||||
if($cron->cronWeek>$thisWeek){
|
||||
$num = $cron->cronWeek - $thisWeek;
|
||||
}else{
|
||||
$num = $cron->cronWeek - $thisWeek + 7;
|
||||
}
|
||||
$nextDay = date("Y-m-d",strtotime("+".$num." day"));
|
||||
if(date('j',strtotime($nextDay))!=$today){
|
||||
if($cron->cronHour==-1){
|
||||
$nextHour = 0;
|
||||
}else{
|
||||
$nextHour = $cron->cronHour;
|
||||
}
|
||||
if($cron->cronMinute==-1){
|
||||
$nextMinute = 0;
|
||||
}else{
|
||||
$nextMinute = (int)$tmpMinute[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
if($cron->cronCycle==2){
|
||||
if($isFurther){
|
||||
$nextDay = date('Y-m-d',strtotime('+1 day'));
|
||||
}else{
|
||||
$nextDay = date('Y-m-d');
|
||||
}
|
||||
}
|
||||
return date('Y-m-d H:i:s',strtotime($nextDay." ".$nextHour.":".$nextMinute.":00"));
|
||||
}
|
||||
|
||||
}
|
1
addons/cron/uninstall.sql
Executable file
1
addons/cron/uninstall.sql
Executable file
@ -0,0 +1 @@
|
||||
update hyh_crons set isEnable=0;
|
113
addons/cron/view/admin/crons.js
Executable file
113
addons/cron/view/admin/crons.js
Executable file
@ -0,0 +1,113 @@
|
||||
var mmg;
|
||||
function initGrid(){
|
||||
var h = WST.pageHeight();
|
||||
var cols = [
|
||||
{title:'计划任务名称', name:'cronName', width: 80},
|
||||
{title:'计划任务描述', name:'cronDesc', width: 150},
|
||||
{title:'上次执行时间', name:'runTime', width: 70, renderer: function(val,item,rowIndex){
|
||||
return (item['runTime']==0)?'-':item['runTime'];
|
||||
}},
|
||||
{title:'执行状态', name:'isEnable', width: 20, renderer: function(val,item,rowIndex){
|
||||
return (item['isRunSuccess']==1)?'<span class="statu-yes"><i class="fa fa-check-circle"></i> 成功</span>':'<span class="statu-no"><i class="fa fa-times-circle"></i> 失败</span>';
|
||||
}},
|
||||
{title:'下次执行时间', name:'nextTime', width: 70, renderer: function(val,item,rowIndex){
|
||||
return (item['nextTime']==0)?'-':item['nextTime'];
|
||||
}},
|
||||
{title:'作者', name:'auchor', width: 20, renderer: function(val,item,rowIndex){
|
||||
return '<a href="'+item['authorUrl']+'" target="_blank">'+item['author']+'</a>';
|
||||
}},
|
||||
{title:'计划状态', name:'isEnable', width: 20, renderer: function(val,item,rowIndex){
|
||||
return (item['isEnable']==1)?'<span class="statu-yes"><i class="fa fa-check-circle"></i> 启用</span>':'<span class="statu-wait"><i class="fa fa-ban"></i> 停用</span>';
|
||||
}},
|
||||
{title:'操作', name:'' ,width:120, align:'center', renderer: function(val,item,rowIndex){
|
||||
var h="";
|
||||
if(WST.GRANT.CRON_JHRW_04){
|
||||
h += "<a class='btn btn-blue' href='javascript:toEdit(" + item['id'] + ")'><i class='fa fa-pencil'></i>修改</a> ";
|
||||
if(item['isEnable']==0){
|
||||
h += "<a class='btn btn-green' href='javascript:changgeEnableStatus(" + item['id'] + ",1)'><i class='fa fa-check'></i>启用</a> ";
|
||||
}else{
|
||||
h += "<a class='btn btn-red' href='javascript:changgeEnableStatus(" + item['id'] + ",0)'><i class='fa fa-ban'></i>停用</a> ";
|
||||
h += '<a class="btn btn-blue" href="javascript:run(\'' + item['id'] + '\')"><i class="fa fa-refresh"></i>执行</a>';
|
||||
}
|
||||
|
||||
}
|
||||
return h;
|
||||
}}
|
||||
];
|
||||
|
||||
mmg = $('.mmg').mmGrid({height: h-115,indexCol: true, cols: cols,method:'POST',
|
||||
url: WST.AU('cron://cron/pageQuery'), fullWidthRows: true, autoLoad: true,
|
||||
plugins: [
|
||||
$('#pg').mmPaginator({})
|
||||
]
|
||||
});
|
||||
$('#headTip').WSTTips({width:90,height:35,callback:function(v){
|
||||
var diff = v?115:88;
|
||||
mmg.resize({height:h-diff})
|
||||
}});
|
||||
}
|
||||
|
||||
|
||||
function toEdit(id){
|
||||
location.href=WST.AU('cron://cron/toEdit','id='+id);
|
||||
}
|
||||
function checkType(v){
|
||||
$('.cycle').hide();
|
||||
$('.cycle'+v).show();
|
||||
}
|
||||
function run(id){
|
||||
var box = WST.confirm({content:'你确定要执行该任务吗?',yes:function(){
|
||||
var loading = WST.msg('正在执行计划任务,请稍后...',{icon: 16,time:6000000000});
|
||||
$.post(WST.AU('cron://cron/runCron'),{id:id},function(data,textStatus){
|
||||
layer.close(loading);
|
||||
var json = WST.toAdminJson(data);
|
||||
if(json.status=='1'){
|
||||
WST.msg(json.msg,{icon:1});
|
||||
layer.close(box);
|
||||
mmg.load();
|
||||
}else{
|
||||
WST.msg(json.msg,{icon:2});
|
||||
}
|
||||
})
|
||||
}});
|
||||
}
|
||||
function edit(id){
|
||||
var params = WST.getParams('.ipt');
|
||||
params.id = id;
|
||||
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
|
||||
$.post(WST.AU('cron://cron/edit'),params,function(data,textStatus){
|
||||
layer.close(loading);
|
||||
var json = WST.toAdminJson(data);
|
||||
if(json.status=='1'){
|
||||
WST.msg("操作成功",{icon:1},function(){
|
||||
location.href=WST.AU('cron://cron/index');
|
||||
});
|
||||
}else{
|
||||
WST.msg(json.msg,{icon:2});
|
||||
}
|
||||
});
|
||||
}
|
||||
function changgeEnableStatus(id,type){
|
||||
var msg = (type==1)?"您确定要启用该计划任务吗?":"您确定要停用该计划任务吗?"
|
||||
var box = WST.confirm({content:msg,yes:function(){
|
||||
var loading = WST.msg('正在提交数据,请稍后...', {icon: 16,time:60000});
|
||||
$.post(WST.AU('cron://cron/changeEnableStatus'),{id:id,status:type},function(data,textStatus){
|
||||
layer.close(loading);
|
||||
var json = WST.toAdminJson(data);
|
||||
if(json.status=='1'){
|
||||
WST.msg(json.msg,{icon:1});
|
||||
layer.close(box);
|
||||
mmg.load();
|
||||
}else{
|
||||
WST.msg(json.msg,{icon:2});
|
||||
}
|
||||
});
|
||||
}});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
109
addons/cron/view/admin/edit.html
Executable file
109
addons/cron/view/admin/edit.html
Executable file
@ -0,0 +1,109 @@
|
||||
{extend name="../../../hyhproject/admin/view/base" /}
|
||||
{block name="js"}
|
||||
<script src="__ROOT__/addons/cron/view/admin/crons.js?v={$v}" type="text/javascript"></script>
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<form id="editForm">
|
||||
<table class='wst-form wst-box-top'>
|
||||
<tr>
|
||||
<th width='150'>计划任务名称:</th>
|
||||
<td style='line-height:30px;'>
|
||||
{$data['cronName']}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>计划任务描述:</th>
|
||||
<td style='line-height:30px;'>
|
||||
{$data['cronDesc']}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>定时任务网址:</th>
|
||||
<td style='line-height:30px;'>
|
||||
{$data['cronUrl']}
|
||||
</td>
|
||||
</tr>
|
||||
{if $data['cronJson']!=''}
|
||||
{volist name="$data['cronJson']" id='vj'}
|
||||
<tr>
|
||||
<th>{$vj['fieldLabel']}:</th>
|
||||
<td>
|
||||
<input type="text" id="{$vj['fieldCode']}" class="ipt" style='width:70%;' maxLength="255" value='{$vj['fieldVal']}' />
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{/if}
|
||||
<tr>
|
||||
<th>计划时间<font color='red'></font>:</th>
|
||||
<td class='layui-form'>
|
||||
<label>
|
||||
<input type='radio' name='cronCycle' value='0' id='cronCycle0' class='ipt' onclick='javascript:checkType(0)' {if $data['cronCycle']==0}checked{/if} title='每月'/>
|
||||
</label>
|
||||
<label>
|
||||
<input type='radio' name='cronCycle' value='1' id='cronCycle1' class='ipt' onclick='javascript:checkType(1)' {if $data['cronCycle']==1}checked{/if} title='每周'/>
|
||||
</label>
|
||||
<label>
|
||||
<input type='radio' name='cronCycle' value='2' id='cronCycle2' class='ipt' onclick='javascript:checkType(2)' {if $data['cronCycle']==2}checked{/if} title='每日'/>
|
||||
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='cycle0 cycle' {if $data['cronCycle']!=0}style='display:none'{/if}>
|
||||
<th>日期<font color='red'></font>:</th>
|
||||
<td>
|
||||
<select id='cronDay' class='ipt'>
|
||||
{for start="1" end="32"}
|
||||
<option value='{$i}' {if $data['cronDay']==$i}selected{/if}>{$i}日</option>
|
||||
}
|
||||
{/for}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='cycle1 cycle' {if $data['cronCycle']!=1}style='display:none'{/if}>
|
||||
<th>星期<font color='red'></font>:</th>
|
||||
<td>
|
||||
<select id='cronWeek' class='ipt'>
|
||||
<option value='1' {if $data['cronWeek']==1}selected{/if}>星期一</option>
|
||||
<option value='2' {if $data['cronWeek']==2}selected{/if}>星期二</option>
|
||||
<option value='3' {if $data['cronWeek']==3}selected{/if}>星期三</option>
|
||||
<option value='4' {if $data['cronWeek']==4}selected{/if}>星期四</option>
|
||||
<option value='5' {if $data['cronWeek']==5}selected{/if}>星期五</option>
|
||||
<option value='6' {if $data['cronWeek']==6}selected{/if}>星期六</option>
|
||||
<option value='0' {if $data['cronWeek']==0}selected{/if}>星期日</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>小时<font color='red'></font>:</th>
|
||||
<td>
|
||||
<select id='cronHour' class='ipt'>
|
||||
<option value='-1' {if $data['cronHour']==-1}selected{/if}>每小时</option>
|
||||
{for start="0" end="24"}
|
||||
<option value='{$i}' {if $data['cronHour']==$i}selected{/if}>{$i}时</option>
|
||||
}
|
||||
{/for}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>分钟<font color='red'></font>:</th>
|
||||
<td>
|
||||
<input type="text" id="cronMinute" class="ipt" style='width:70%' maxLength="255" value='{$data['cronMinute']}' />(如多个分钟则以,分隔,-1表示每分钟)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>计划任务状态<font color='red'></font>:</th>
|
||||
<td class='layui-form'>
|
||||
<input type="checkbox" style='width:80px;' {if $data['isEnable']=='1'}checked{/if} class="ipt" name="isEnable" id='isEnable' lay-skin="switch" title="开关" value='1' lay-text="启用|停用">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' align='center'>
|
||||
<button type="button" onclick='javascript:edit({$data['id']+0})' style='margin-right:15px;' class='btn btn-primary btn-mright'><i class="fa fa-check"></i>提交</button>
|
||||
<button type="button" onclick='javascript:history.go(-1)' class='btn'><i class="fa fa-angle-double-left"></i>返回</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
|
23
addons/cron/view/admin/list.html
Executable file
23
addons/cron/view/admin/list.html
Executable file
@ -0,0 +1,23 @@
|
||||
{extend name="../../../hyhproject/admin/view/base" /}
|
||||
{block name="css"}
|
||||
<link rel="stylesheet" type="text/css" href="__ADMIN__/js/mmgrid/mmGrid.css?v={$v}" />
|
||||
{/block}
|
||||
{block name="js"}
|
||||
<script src="__ADMIN__/js/mmgrid/mmGrid.js?v={$v}" type="text/javascript"></script>
|
||||
<script src="__ROOT__/addons/cron/view/admin/crons.js?v={$v}" type="text/javascript"></script>
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div id='alertTips' class='alert alert-success alert-tips fade in'>
|
||||
<div id='headTip' class='head'><i class='fa fa-lightbulb-o'></i>操作说明</div>
|
||||
<ul class='body'>
|
||||
<li>本功能主要提供定时任务功能,该通过用户访问页面触发实现,具有一定延时性,若用户有自行设置操作系统计划任务则不必开启本系统的计划任务。</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class='wst-grid'>
|
||||
<div id="mmg" class="mmg"></div>
|
||||
<div id="pg" style="text-align: right;"></div>
|
||||
</div>
|
||||
<script>
|
||||
$(function(){initGrid()});
|
||||
</script>
|
||||
{/block}
|
177
addons/dysms/Dysms.php
Executable file
177
addons/dysms/Dysms.php
Executable file
@ -0,0 +1,177 @@
|
||||
<?php
|
||||
|
||||
namespace addons\dysms; // 注意命名空间规范
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
use think\addons\Addons;
|
||||
|
||||
use addons\dysms\model\Dysms as DM;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 阿里云-云通信
|
||||
|
||||
* @author HSF
|
||||
|
||||
*/
|
||||
|
||||
class Dysms extends Addons{
|
||||
|
||||
// 该插件的基础信息
|
||||
|
||||
public $info = [
|
||||
|
||||
'name' => 'Dysms', // 插件标识
|
||||
|
||||
'title' => '短信接口(阿里云-云通信)', // 插件名称
|
||||
|
||||
'description' => '阿里云-云通信短信服务', // 插件简介
|
||||
|
||||
'status' => 0, // 状态
|
||||
|
||||
'author' => 'HSF',
|
||||
|
||||
'version' => '1.0.0'
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 插件安装方法
|
||||
|
||||
* @return bool
|
||||
|
||||
*/
|
||||
|
||||
public function install(){
|
||||
|
||||
$m = new DM();
|
||||
|
||||
$flag = $m->install();
|
||||
|
||||
WSTClearHookCache();
|
||||
|
||||
cache('hooks',null);
|
||||
|
||||
return $flag;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 插件卸载方法
|
||||
|
||||
* @return bool
|
||||
|
||||
*/
|
||||
|
||||
public function uninstall(){
|
||||
|
||||
$m = new DM();
|
||||
|
||||
$flag = $m->uninstall();
|
||||
|
||||
WSTClearHookCache();
|
||||
|
||||
cache('hooks',null);
|
||||
|
||||
return $flag;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 插件启用方法
|
||||
|
||||
* @return bool
|
||||
|
||||
*/
|
||||
|
||||
public function enable(){
|
||||
|
||||
WSTClearHookCache();
|
||||
|
||||
cache('hooks',null);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 插件禁用方法
|
||||
|
||||
* @return bool
|
||||
|
||||
*/
|
||||
|
||||
public function disable(){
|
||||
|
||||
WSTClearHookCache();
|
||||
|
||||
cache('hooks',null);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 插件设置方法
|
||||
|
||||
* @return bool
|
||||
|
||||
*/
|
||||
|
||||
public function saveConfig(){
|
||||
|
||||
WSTClearHookCache();
|
||||
|
||||
cache('hooks',null);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 阿里云-云通信短信服务商
|
||||
|
||||
* @param string $phoneNumer 手机号码
|
||||
|
||||
* @param string $content 短信内容
|
||||
|
||||
*/
|
||||
|
||||
function sendSMS($params){
|
||||
|
||||
$dm = new DM();
|
||||
|
||||
$dm->sendSMS($params);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
244
addons/dysms/config.php
Executable file
244
addons/dysms/config.php
Executable file
@ -0,0 +1,244 @@
|
||||
<?php
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'会员推荐注册验证码','PHONE_PUSER_REGISTER_VERFIY',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_PUSER_REGISTER_VERFIY',NULL,'您好${name}:您邀约会员注册,邀约码:${code},如非本人或家人邀约,无公害请忽略。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'亲人认证验证码','PHONE_USER_AUTH_FAMILY_VERFIY',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_USER_AUTH_FAMILY_VERFIY',NULL,'您好,用户${name},申请与您亲人认证,认证码为:${code},请不要把认证码泄露给其他人。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'合作人认证验证码','PHONE_USER_AUTH_PARTNER_VERFIY',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_USER_AUTH_PARTNER_VERFIY',NULL,'您好,用户${name},申请与您绑定合作人认证,认证码为:${code},请不要把认证码泄露给其他人。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'认证通知','PHONE_USER_UPDATE_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_USER_UPDATE_NOTICE',NULL,'管理员您好:购户${name}申请资格认证,请审核。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'实名通知','PHONE_USER_AUTH_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_USER_AUTH_NOTICE',NULL,'您好,您申请实名全亮共会员,验证码${code},如非本人操作,请速与公司联系。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'申请商户通知','PHONE_ADMIN_SHOP_APPLAY_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_ADMIN_SHOP_APPLAY_NOTICE',NULL,'管理员您好:购户${name}申请商户请审核。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'上传产品通知','PHONE_ADMIN_GOODS_APPLAY_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_ADMIN_GOODS_APPLAY_NOTICE',NULL,'管理员您好:商户${name}上传产品啦,请审核。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'成功交易通知','PHONE_SHOP_ORDER_CONFRIM_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_SHOP_ORDER_CONFRIM_NOTICE',NULL,'恭喜您${name}成功交易,请及时处理优惠款,如非本人或家人操作,请速与公司联系。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'禁用推荐人通知','PHONE_DISABLED_USER_REF_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_DISABLED_USER_REF_NOTICE',NULL,'会员${name}您好:被推荐人${sname}账户已禁用;请您正确引导,该户再次禁用时,您的帐户将被禁用,请速联系。',1,'',1,1);
|
||||
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'提现通知','PHONE_ADMIN_SHOP_MONEY_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_ADMIN_SHOP_MONEY_NOTICE',NULL,'管理员您好:商户${name}申请提现,请处理。',1,'',1,1);
|
||||
//
|
||||
// INSERT INTO `hyh_datas` VALUES (0,8,'会计操作财务报表通知模板','PHONE_ADMIN_SET_REPORT_NOTICE',0,1);
|
||||
// INSERT INTO `hyh_template_msgs` VALUES (0,2,'PHONE_ADMIN_SET_REPORT_NOTICE',NULL,'董事长您好:会计${name}需要修改财务报表,日期:${date},${reType}金额:${money}元,核验码${code},请告之。',1,'',1,1);
|
||||
|
||||
return array(
|
||||
'warn'=>array(
|
||||
'title'=>'<span style="color:red;font-size:20px;">【特别提醒】使用之前请先阅读阿里云-云通信短信发送规则</span>',
|
||||
'type'=>'hidden',
|
||||
'value'=>''
|
||||
),
|
||||
'smsKey'=>array(
|
||||
'title'=>'Access Key ID<span style="color:#FF6666;">【购买短信服务请点击<a target="_blank" href="https://dayu.aliyun.com/settled">阿里云-云通信短信</a>购买】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'smsPass'=>array(
|
||||
'title'=>'Access Key Secret',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'signature'=>array(
|
||||
'title'=>'短信签名',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_PUSER_REGISTER_VERFIY'=>array(
|
||||
'title'=>'用户通过推荐人注册验证码模板ID【模板参考:您好${name}:您邀约会员注册,邀约码:${code},如非本人或家人邀约,无公害请忽略。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_USER_AUTH_FAMILY_VERFIY'=>array(
|
||||
'title'=>'亲人认证验证码模板ID【模板参考:您好,用户${name},申请与您亲人认证,认证码为:${code},请不要把认证码泄露给其他人。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_USER_AUTH_PARTNER_VERFIY'=>array(
|
||||
'title'=>'合作人认证验证码模板ID【模板参考:您好,用户${name},申请与您绑定合作人认证,认证码为:${code},请不要把认证码泄露给其他人。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_USER_UPDATE_NOTICE'=>array(
|
||||
'title'=>'认证通知模板ID【模板参考:管理员您好:购户${name}申请资格认证,请审核。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_USER_AUTH_NOTICE'=>array(
|
||||
'title'=>'实名通知模板ID【您好,您申请实名全亮共会员,验证码${code},如非本人操作,请速与公司联系。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_ADMIN_SHOP_APPLAY_NOTICE'=>array(
|
||||
'title'=>'申请商户通知模板ID【管理员您好:购户${name}申请商户请审核。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_ADMIN_GOODS_APPLAY_NOTICE'=>array(
|
||||
'title'=>'上传产品通知模板ID【管理员您好:商户${name}上传产品啦,请审核。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_SHOP_ORDER_CONFRIM_NOTICE'=>array(
|
||||
'title'=>'成功交易通知模板ID【恭喜您${name}成功交易,请及时处理优惠款,如非本人或家人操作,请速与公司联系。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_DISABLED_USER_REF_NOTICE'=>array(
|
||||
'title'=>'禁用推荐人通知模板ID【会员${name}您好:被推荐人${sname}账户已禁用;请您正确引导,该户再次禁用时,您的帐户将被禁用,请速联系。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_ADMIN_SHOP_MONEY_NOTICE'=>array(
|
||||
'title'=>'提现通知模板ID【管理员您好:商户${name}申请提现,请处理。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_ADMIN_SET_REPORT_NOTICE'=>array(
|
||||
'title'=>'会计操作财务报表通知模板ID【董事长您好:会计${name}需要修改财务报表,日期:${date},${reType}金额:${money}元,核验码${code},请告之。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_FOTGET'=>array(
|
||||
'title'=>'忘记密码模板ID【模板参考:您正在重置登录密码,验证码为:${VERFIY_CODE},请及时输入。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
'PHONE_FOTGET_PAY'=>array(
|
||||
'title'=>'忘记操作密码模板ID【模板参考:您正在重置操作密码,验证码为:${VERFIY_CODE},请及时输入。】',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
),
|
||||
// 'PHONE_PUSER_REGISTER_VERFIY'=>array(
|
||||
// 'title'=>'模板ID【模板参考:您好:您邀约会员注册,验证码:${code},如非本人或家人邀约,无公害请忽略。】',
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_USER_REGISTER_VERFIY'=>array(
|
||||
// 'title'=>'用户注册验证码模板ID【模板参考:您的注册验证码为:${VERFIY_CODE},请及时输入。】',
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_BIND'=>array(
|
||||
// 'title'=>'绑定手机提醒模板ID【模板参考:您的正在操作绑定手机,校验码为:${VERFIY_CODE},请及时输入。】',
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_EDIT'=>array(
|
||||
// 'title'=>"更改手机提醒模板ID【模板参考:您正在操作修改手机,您的校验码为:${VERFIY_CODE},请及时输入。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_FOTGET'=>array(
|
||||
// 'title'=>"忘记密码模板ID【模板参考:您正在操作修改手机,您的校验码为:${VERFIY_CODE},请及时输入。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_FOTGET_PAY'=>array(
|
||||
// 'title'=>"忘记支付密码模板ID【模板参考:您正在重置登录密码,验证码为:${VERFIY_CODE},请及时输入。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_USER_SHOP_OPEN_SUCCESS'=>array(
|
||||
// 'title'=>"会员开店成功提醒模板ID【模板参考:您申请成为${MALL_NAME}商家的请求已通过。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_SHOP_OPEN_FAIL'=>array(
|
||||
// 'title'=>"开店失败提醒模板ID【模板参考:您申请成为${MALL_NAME}商家的请求未通过,请登录系统查看详情。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_SHOP_MSG'=>array(
|
||||
// 'title'=>"商家订单通知模板ID",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'line'=>array(
|
||||
// 'title'=>' ',
|
||||
// 'type'=>'hidden',
|
||||
// 'value'=>''
|
||||
// ),
|
||||
// 'warn_admin'=>array(
|
||||
// 'title'=>'<span style="color:blue;font-size:18px;padding-top:10px">管理员短信提醒</span>',
|
||||
// 'type'=>'hidden',
|
||||
// 'value'=>''
|
||||
// ),
|
||||
// 'PHONE_ADMIN_SUBMIT_ORDER'=>array(
|
||||
// 'title'=>"管理员-用户下单提醒模板ID【模板参考:有新的订单[${ORDER_NO}],请留意。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_ADMIN_PAY_ORDER'=>array(
|
||||
// 'title'=>"管理员-支付订单提醒模板ID【模板参考:用户已支付订单[${ORDER_NO}],请留意。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_ADMIN_CANCEL_ORDER'=>array(
|
||||
// 'title'=>"管理员-取消订单提醒模板ID【模板参考:订单[${ORDER_NO}]已被用户取消。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_ADMIN_REJECT_ORDER'=>array(
|
||||
// 'title'=>"管理员-拒收订单提醒模板ID【模板参考:订单[${ORDER_NO}]已被用户拒收。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_ADMIN_REFUND_ORDER'=>array(
|
||||
// 'title'=>"管理员-申请退款提醒模板ID【模板参考:用户申请订单[${ORDER_NO}]退款,请及时处理。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_ADMIN_COMPLAINT_ORDER'=>array(
|
||||
// 'title'=>"管理员-订单投诉提醒模板ID【模板参考:用户投诉订单[${ORDER_NO}],请及时处理。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// ),
|
||||
// 'PHONE_ADMIN_CASH_DRAWS'=>array(
|
||||
// 'title'=>"管理员-申请提现提醒模板ID【模板参考:有新的用户申请提现请求,请及时处理。】",
|
||||
// 'type'=>'text',
|
||||
// 'value'=>'',
|
||||
// 'tips'=>''
|
||||
// )
|
||||
|
||||
);
|
0
addons/dysms/install.sql
Executable file
0
addons/dysms/install.sql
Executable file
126
addons/dysms/model/Dysms.php
Executable file
126
addons/dysms/model/Dysms.php
Executable file
@ -0,0 +1,126 @@
|
||||
<?php
|
||||
namespace addons\dysms\model;
|
||||
use think\addons\BaseModel as Base;
|
||||
use think\Db;
|
||||
use Aliyun\Core\Config;
|
||||
use Aliyun\Core\Profile\DefaultProfile;
|
||||
use Aliyun\Core\DefaultAcsClient;
|
||||
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
|
||||
/**
|
||||
* ============================================================================
|
||||
* 阿里云-云通信接口
|
||||
*/
|
||||
class Dysms extends Base{
|
||||
public function getConfigs(){
|
||||
$data = cache('dysms_sms');
|
||||
if(!$data){
|
||||
$rs = Db::name('addons')->where('name','Dysms')->field('config')->find();
|
||||
$data = json_decode($rs['config'],true);
|
||||
cache('dysms_sms',$data,31622400);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function install(){
|
||||
Db::startTrans();
|
||||
try{
|
||||
$hooks = ['sendSMS'];
|
||||
$this->bindHoods("Dysms", $hooks);
|
||||
Db::commit();
|
||||
return true;
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public function uninstall(){
|
||||
Db::startTrans();
|
||||
try{
|
||||
$hooks = ['sendSMS'];
|
||||
$this->unbindHoods("Dysms", $hooks);
|
||||
Db::commit();
|
||||
return true;
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 发送短信接口
|
||||
*/
|
||||
public function http($params){
|
||||
require_once WST_ADDON_PATH.'dysms/sdk/vendor/autoload.php';
|
||||
Config::load();
|
||||
$smsConf = $this->getConfigs();
|
||||
//此处需要替换成自己的AK信息
|
||||
$accessKeyId = $smsConf['smsKey'];;
|
||||
$accessKeySecret = $smsConf['smsPass'];
|
||||
//短信API产品名(短信产品名固定,无需修改)
|
||||
$product = "Dysmsapi";
|
||||
//短信API产品域名(接口地址固定,无需修改)
|
||||
$domain = "dysmsapi.aliyuncs.com";
|
||||
//暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
|
||||
$region = "cn-hangzhou";
|
||||
//初始化访问的acsCleint
|
||||
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
|
||||
DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
|
||||
$acsClient= new DefaultAcsClient($profile);
|
||||
$request = new SendSmsRequest();
|
||||
//必填-短信接收号码。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
|
||||
$request->setPhoneNumbers($params['phoneNumber']);
|
||||
//必填-短信签名
|
||||
$request->setSignName($smsConf["signature"]);
|
||||
//必填-短信模板Code
|
||||
$request->setTemplateCode($smsConf[$params['params']['tpl']['tplCode']]);
|
||||
//选填-假如模板中存在变量需要替换则为必填(JSON格式),友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
|
||||
$request->setTemplateParam($params['content']);
|
||||
//$request->setTemplateParam(json_encode($params['params']['params']));
|
||||
// $request->setTemplateParam("{\"orderNo\":\"Tom\", \"orderStatue\":\"123\"}");
|
||||
//选填-发送短信流水号
|
||||
$request->setOutId($params['timeId']);
|
||||
//发起访问请求
|
||||
//dump($request);
|
||||
$resp = $acsClient->getAcsResponse($request);
|
||||
return $resp;
|
||||
}
|
||||
|
||||
public function sendSMS($params){
|
||||
$smsConf = $this->getConfigs();
|
||||
$code = [];
|
||||
$isVerfy = false;
|
||||
foreach($params['params']['params'] as $key =>$v){
|
||||
//$key = str_replace('_','',$key);
|
||||
if($key=='VERFIY_CODE')$isVerfy = true;
|
||||
}
|
||||
foreach($params['params']['params'] as $key =>$v){
|
||||
//$key = str_replace('_','',$key);
|
||||
if($isVerfy && $key=='VERFIY_CODE'){
|
||||
$code[] = '"'.$key.'":"'.$v.'"';
|
||||
}
|
||||
}
|
||||
foreach($params['params']['params'] as $key =>$v){
|
||||
//$key = str_replace('_','',$key);
|
||||
if($isVerfy==false && $key!='VERFIY_CODE'){
|
||||
$code[] = '"'.$key.'":"'.$v.'"';
|
||||
}
|
||||
}
|
||||
$codes = "{".implode(',',$code)."}";
|
||||
$params['content'] = $codes;
|
||||
$timeId = time().rand(100,999);
|
||||
$params['timeId'] = $timeId;
|
||||
$code = $this->http($params);
|
||||
$log = model('common/logSms')->get($params['smsId']);
|
||||
$log->smsReturnCode = json_encode($code);
|
||||
$log->smsContent = $codes."||".$params['params']['tpl']['tplCode']."||".$smsConf[$params['params']['tpl']['tplCode']]."||".$timeId;
|
||||
$log->save();
|
||||
try{
|
||||
if(strtolower($code->Message)=='ok'){
|
||||
$params['status']['msg'] = '短信发送成功!';
|
||||
$params['status']['status'] = 1;
|
||||
}
|
||||
}catch (\Exception $e) {
|
||||
$params['status']['msg'] = $code->Message;
|
||||
$params['status']['status'] = -1;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Api\Sms\Request\V20170525;
|
||||
|
||||
use Aliyun\Core\RpcAcsRequest;
|
||||
|
||||
class QueryInterSmsIsoInfoRequest extends RpcAcsRequest
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct("Dysmsapi", "2017-05-25", "QueryInterSmsIsoInfo");
|
||||
$this->setMethod("POST");
|
||||
}
|
||||
|
||||
private $resourceOwnerAccount;
|
||||
|
||||
private $countryName;
|
||||
|
||||
private $resourceOwnerId;
|
||||
|
||||
private $ownerId;
|
||||
|
||||
public function getResourceOwnerAccount() {
|
||||
return $this->resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function setResourceOwnerAccount($resourceOwnerAccount) {
|
||||
$this->resourceOwnerAccount = $resourceOwnerAccount;
|
||||
$this->queryParameters["ResourceOwnerAccount"]=$resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function getCountryName() {
|
||||
return $this->countryName;
|
||||
}
|
||||
|
||||
public function setCountryName($countryName) {
|
||||
$this->countryName = $countryName;
|
||||
$this->queryParameters["CountryName"]=$countryName;
|
||||
}
|
||||
|
||||
public function getResourceOwnerId() {
|
||||
return $this->resourceOwnerId;
|
||||
}
|
||||
|
||||
public function setResourceOwnerId($resourceOwnerId) {
|
||||
$this->resourceOwnerId = $resourceOwnerId;
|
||||
$this->queryParameters["ResourceOwnerId"]=$resourceOwnerId;
|
||||
}
|
||||
|
||||
public function getOwnerId() {
|
||||
return $this->ownerId;
|
||||
}
|
||||
|
||||
public function setOwnerId($ownerId) {
|
||||
$this->ownerId = $ownerId;
|
||||
$this->queryParameters["OwnerId"]=$ownerId;
|
||||
}
|
||||
|
||||
}
|
103
addons/dysms/sdk/lib/Api/Sms/Request/V20170525/QuerySendDetailsRequest.php
Executable file
103
addons/dysms/sdk/lib/Api/Sms/Request/V20170525/QuerySendDetailsRequest.php
Executable file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Api\Sms\Request\V20170525;
|
||||
|
||||
use Aliyun\Core\RpcAcsRequest;
|
||||
|
||||
class QuerySendDetailsRequest extends RpcAcsRequest
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct("Dysmsapi", "2017-05-25", "QuerySendDetails");
|
||||
$this->setMethod("POST");
|
||||
}
|
||||
|
||||
private $sendDate;
|
||||
|
||||
private $pageSize;
|
||||
|
||||
private $phoneNumber;
|
||||
|
||||
private $resourceOwnerAccount;
|
||||
|
||||
private $currentPage;
|
||||
|
||||
private $bizId;
|
||||
|
||||
private $resourceOwnerId;
|
||||
|
||||
private $ownerId;
|
||||
|
||||
public function getSendDate() {
|
||||
return $this->sendDate;
|
||||
}
|
||||
|
||||
public function setSendDate($sendDate) {
|
||||
$this->sendDate = $sendDate;
|
||||
$this->queryParameters["SendDate"]=$sendDate;
|
||||
}
|
||||
|
||||
public function getPageSize() {
|
||||
return $this->pageSize;
|
||||
}
|
||||
|
||||
public function setPageSize($pageSize) {
|
||||
$this->pageSize = $pageSize;
|
||||
$this->queryParameters["PageSize"]=$pageSize;
|
||||
}
|
||||
|
||||
public function getPhoneNumber() {
|
||||
return $this->phoneNumber;
|
||||
}
|
||||
|
||||
public function setPhoneNumber($phoneNumber) {
|
||||
$this->phoneNumber = $phoneNumber;
|
||||
$this->queryParameters["PhoneNumber"]=$phoneNumber;
|
||||
}
|
||||
|
||||
public function getResourceOwnerAccount() {
|
||||
return $this->resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function setResourceOwnerAccount($resourceOwnerAccount) {
|
||||
$this->resourceOwnerAccount = $resourceOwnerAccount;
|
||||
$this->queryParameters["ResourceOwnerAccount"]=$resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function getCurrentPage() {
|
||||
return $this->currentPage;
|
||||
}
|
||||
|
||||
public function setCurrentPage($currentPage) {
|
||||
$this->currentPage = $currentPage;
|
||||
$this->queryParameters["CurrentPage"]=$currentPage;
|
||||
}
|
||||
|
||||
public function getBizId() {
|
||||
return $this->bizId;
|
||||
}
|
||||
|
||||
public function setBizId($bizId) {
|
||||
$this->bizId = $bizId;
|
||||
$this->queryParameters["BizId"]=$bizId;
|
||||
}
|
||||
|
||||
public function getResourceOwnerId() {
|
||||
return $this->resourceOwnerId;
|
||||
}
|
||||
|
||||
public function setResourceOwnerId($resourceOwnerId) {
|
||||
$this->resourceOwnerId = $resourceOwnerId;
|
||||
$this->queryParameters["ResourceOwnerId"]=$resourceOwnerId;
|
||||
}
|
||||
|
||||
public function getOwnerId() {
|
||||
return $this->ownerId;
|
||||
}
|
||||
|
||||
public function setOwnerId($ownerId) {
|
||||
$this->ownerId = $ownerId;
|
||||
$this->queryParameters["OwnerId"]=$ownerId;
|
||||
}
|
||||
|
||||
}
|
114
addons/dysms/sdk/lib/Api/Sms/Request/V20170525/SendInterSmsRequest.php
Executable file
114
addons/dysms/sdk/lib/Api/Sms/Request/V20170525/SendInterSmsRequest.php
Executable file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Api\Sms\Request\V20170525;
|
||||
|
||||
use Aliyun\Core\RpcAcsRequest;
|
||||
|
||||
class SendInterSmsRequest extends RpcAcsRequest
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct("Dysmsapi", "2017-05-25", "SendInterSms");
|
||||
$this->setMethod("POST");
|
||||
}
|
||||
|
||||
private $templateCode;
|
||||
|
||||
private $phoneNumbers;
|
||||
|
||||
private $countryCode;
|
||||
|
||||
private $signName;
|
||||
|
||||
private $resourceOwnerAccount;
|
||||
|
||||
private $templateParam;
|
||||
|
||||
private $resourceOwnerId;
|
||||
|
||||
private $ownerId;
|
||||
|
||||
private $outId;
|
||||
|
||||
public function getTemplateCode() {
|
||||
return $this->templateCode;
|
||||
}
|
||||
|
||||
public function setTemplateCode($templateCode) {
|
||||
$this->templateCode = $templateCode;
|
||||
$this->queryParameters["TemplateCode"]=$templateCode;
|
||||
}
|
||||
|
||||
public function getPhoneNumbers() {
|
||||
return $this->phoneNumbers;
|
||||
}
|
||||
|
||||
public function setPhoneNumbers($phoneNumbers) {
|
||||
$this->phoneNumbers = $phoneNumbers;
|
||||
$this->queryParameters["PhoneNumbers"]=$phoneNumbers;
|
||||
}
|
||||
|
||||
public function getCountryCode() {
|
||||
return $this->countryCode;
|
||||
}
|
||||
|
||||
public function setCountryCode($countryCode) {
|
||||
$this->countryCode = $countryCode;
|
||||
$this->queryParameters["CountryCode"]=$countryCode;
|
||||
}
|
||||
|
||||
public function getSignName() {
|
||||
return $this->signName;
|
||||
}
|
||||
|
||||
public function setSignName($signName) {
|
||||
$this->signName = $signName;
|
||||
$this->queryParameters["SignName"]=$signName;
|
||||
}
|
||||
|
||||
public function getResourceOwnerAccount() {
|
||||
return $this->resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function setResourceOwnerAccount($resourceOwnerAccount) {
|
||||
$this->resourceOwnerAccount = $resourceOwnerAccount;
|
||||
$this->queryParameters["ResourceOwnerAccount"]=$resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function getTemplateParam() {
|
||||
return $this->templateParam;
|
||||
}
|
||||
|
||||
public function setTemplateParam($templateParam) {
|
||||
$this->templateParam = $templateParam;
|
||||
$this->queryParameters["TemplateParam"]=$templateParam;
|
||||
}
|
||||
|
||||
public function getResourceOwnerId() {
|
||||
return $this->resourceOwnerId;
|
||||
}
|
||||
|
||||
public function setResourceOwnerId($resourceOwnerId) {
|
||||
$this->resourceOwnerId = $resourceOwnerId;
|
||||
$this->queryParameters["ResourceOwnerId"]=$resourceOwnerId;
|
||||
}
|
||||
|
||||
public function getOwnerId() {
|
||||
return $this->ownerId;
|
||||
}
|
||||
|
||||
public function setOwnerId($ownerId) {
|
||||
$this->ownerId = $ownerId;
|
||||
$this->queryParameters["OwnerId"]=$ownerId;
|
||||
}
|
||||
|
||||
public function getOutId() {
|
||||
return $this->outId;
|
||||
}
|
||||
|
||||
public function setOutId($outId) {
|
||||
$this->outId = $outId;
|
||||
$this->queryParameters["OutId"]=$outId;
|
||||
}
|
||||
|
||||
}
|
103
addons/dysms/sdk/lib/Api/Sms/Request/V20170525/SendSmsRequest.php
Executable file
103
addons/dysms/sdk/lib/Api/Sms/Request/V20170525/SendSmsRequest.php
Executable file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Api\Sms\Request\V20170525;
|
||||
|
||||
use Aliyun\Core\RpcAcsRequest;
|
||||
|
||||
class SendSmsRequest extends RpcAcsRequest
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct("Dysmsapi", "2017-05-25", "SendSms");
|
||||
$this->setMethod("POST");
|
||||
}
|
||||
|
||||
private $templateCode;
|
||||
|
||||
private $phoneNumbers;
|
||||
|
||||
private $signName;
|
||||
|
||||
private $resourceOwnerAccount;
|
||||
|
||||
private $templateParam;
|
||||
|
||||
private $resourceOwnerId;
|
||||
|
||||
private $ownerId;
|
||||
|
||||
private $outId;
|
||||
|
||||
public function getTemplateCode() {
|
||||
return $this->templateCode;
|
||||
}
|
||||
|
||||
public function setTemplateCode($templateCode) {
|
||||
$this->templateCode = $templateCode;
|
||||
$this->queryParameters["TemplateCode"]=$templateCode;
|
||||
}
|
||||
|
||||
public function getPhoneNumbers() {
|
||||
return $this->phoneNumbers;
|
||||
}
|
||||
|
||||
public function setPhoneNumbers($phoneNumbers) {
|
||||
$this->phoneNumbers = $phoneNumbers;
|
||||
$this->queryParameters["PhoneNumbers"]=$phoneNumbers;
|
||||
}
|
||||
|
||||
public function getSignName() {
|
||||
return $this->signName;
|
||||
}
|
||||
|
||||
public function setSignName($signName) {
|
||||
$this->signName = $signName;
|
||||
$this->queryParameters["SignName"]=$signName;
|
||||
}
|
||||
|
||||
public function getResourceOwnerAccount() {
|
||||
return $this->resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function setResourceOwnerAccount($resourceOwnerAccount) {
|
||||
$this->resourceOwnerAccount = $resourceOwnerAccount;
|
||||
$this->queryParameters["ResourceOwnerAccount"]=$resourceOwnerAccount;
|
||||
}
|
||||
|
||||
public function getTemplateParam() {
|
||||
return $this->templateParam;
|
||||
}
|
||||
|
||||
public function setTemplateParam($templateParam) {
|
||||
$this->templateParam = $templateParam;
|
||||
$this->queryParameters["TemplateParam"]=$templateParam;
|
||||
}
|
||||
|
||||
public function getResourceOwnerId() {
|
||||
return $this->resourceOwnerId;
|
||||
}
|
||||
|
||||
public function setResourceOwnerId($resourceOwnerId) {
|
||||
$this->resourceOwnerId = $resourceOwnerId;
|
||||
$this->queryParameters["ResourceOwnerId"]=$resourceOwnerId;
|
||||
}
|
||||
|
||||
public function getOwnerId() {
|
||||
return $this->ownerId;
|
||||
}
|
||||
|
||||
public function setOwnerId($ownerId) {
|
||||
$this->ownerId = $ownerId;
|
||||
$this->queryParameters["OwnerId"]=$ownerId;
|
||||
}
|
||||
|
||||
public function getOutId() {
|
||||
return $this->outId;
|
||||
}
|
||||
|
||||
public function setOutId($outId) {
|
||||
$this->outId = $outId;
|
||||
$this->queryParameters["OutId"]=$outId;
|
||||
}
|
||||
|
||||
}
|
125
addons/dysms/sdk/lib/Core/AcsRequest.php
Executable file
125
addons/dysms/sdk/lib/Core/AcsRequest.php
Executable file
@ -0,0 +1,125 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core;
|
||||
|
||||
abstract class AcsRequest
|
||||
{
|
||||
protected $version;
|
||||
protected $product;
|
||||
protected $actionName;
|
||||
protected $regionId;
|
||||
protected $acceptFormat;
|
||||
protected $method;
|
||||
protected $protocolType = "http";
|
||||
protected $content;
|
||||
|
||||
protected $queryParameters = array();
|
||||
protected $headers = array();
|
||||
|
||||
function __construct($product, $version, $actionName)
|
||||
{
|
||||
$this->headers["x-sdk-client"] = "php/2.0.0";
|
||||
$this->product = $product;
|
||||
$this->version = $version;
|
||||
$this->actionName = $actionName;
|
||||
}
|
||||
|
||||
public abstract function composeUrl($iSigner, $credential, $domain);
|
||||
|
||||
public function getVersion()
|
||||
{
|
||||
return $this->version;
|
||||
}
|
||||
|
||||
public function setVersion($version)
|
||||
{
|
||||
$this->version = $version;
|
||||
}
|
||||
|
||||
public function getProduct()
|
||||
{
|
||||
return $this->product;
|
||||
}
|
||||
|
||||
public function setProduct($product)
|
||||
{
|
||||
$this->product = $product;
|
||||
}
|
||||
|
||||
public function getActionName()
|
||||
{
|
||||
return $this->actionName;
|
||||
}
|
||||
|
||||
public function setActionName($actionName)
|
||||
{
|
||||
$this->actionName = $actionName;
|
||||
}
|
||||
|
||||
public function getAcceptFormat()
|
||||
{
|
||||
return $this->acceptFormat;
|
||||
}
|
||||
|
||||
public function setAcceptFormat($acceptFormat)
|
||||
{
|
||||
$this->acceptFormat = $acceptFormat;
|
||||
}
|
||||
|
||||
public function getQueryParameters()
|
||||
{
|
||||
return $this->queryParameters;
|
||||
}
|
||||
|
||||
public function getHeaders()
|
||||
{
|
||||
return $this->headers;
|
||||
}
|
||||
|
||||
public function getMethod()
|
||||
{
|
||||
return $this->method;
|
||||
}
|
||||
|
||||
public function setMethod($method)
|
||||
{
|
||||
$this->method = $method;
|
||||
}
|
||||
|
||||
public function getProtocol()
|
||||
{
|
||||
return $this->protocolType;
|
||||
}
|
||||
|
||||
public function setProtocol($protocol)
|
||||
{
|
||||
$this->protocolType = $protocol;
|
||||
}
|
||||
|
||||
public function getRegionId()
|
||||
{
|
||||
return $this->regionId;
|
||||
}
|
||||
public function setRegionId($region)
|
||||
{
|
||||
$this->regionId = $region;
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
public function setContent($content)
|
||||
{
|
||||
$this->content = $content;
|
||||
}
|
||||
|
||||
|
||||
public function addHeader($headerKey, $headerValue)
|
||||
{
|
||||
$this->headers[$headerKey] = $headerValue;
|
||||
}
|
||||
|
||||
|
||||
}
|
29
addons/dysms/sdk/lib/Core/AcsResponse.php
Executable file
29
addons/dysms/sdk/lib/Core/AcsResponse.php
Executable file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core;
|
||||
|
||||
class AcsResponse
|
||||
{
|
||||
private $code;
|
||||
private $message;
|
||||
|
||||
public function getCode()
|
||||
{
|
||||
return $this->code;
|
||||
}
|
||||
|
||||
public function setCode($code)
|
||||
{
|
||||
$this->code = $code;
|
||||
}
|
||||
|
||||
public function getMessage()
|
||||
{
|
||||
return $this->message;
|
||||
}
|
||||
|
||||
public function setMessage($message)
|
||||
{
|
||||
$this->message = $message;
|
||||
}
|
||||
}
|
72
addons/dysms/sdk/lib/Core/Auth/Credential.php
Executable file
72
addons/dysms/sdk/lib/Core/Auth/Credential.php
Executable file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Auth;
|
||||
|
||||
class Credential
|
||||
{
|
||||
private $dateTimeFormat = 'Y-m-d\TH:i:s\Z';
|
||||
private $refreshDate;
|
||||
private $expiredDate;
|
||||
private $accessKeyId;
|
||||
private $accessSecret;
|
||||
private $securityToken;
|
||||
|
||||
function __construct($accessKeyId, $accessSecret)
|
||||
{
|
||||
$this->accessKeyId = $accessKeyId;
|
||||
$this->accessSecret = $accessSecret;
|
||||
$this->refreshDate = date($this->dateTimeFormat);
|
||||
}
|
||||
|
||||
public function isExpired()
|
||||
{
|
||||
if($this->expiredDate == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(strtotime($this->expiredDate)>date($this->dateTimeFormat))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getRefreshDate()
|
||||
{
|
||||
return $this->refreshDate;
|
||||
}
|
||||
|
||||
public function getExpiredDate()
|
||||
{
|
||||
return $this->expiredDate;
|
||||
}
|
||||
|
||||
public function setExpiredDate($expiredHours)
|
||||
{
|
||||
if($expiredHours>0)
|
||||
{
|
||||
return $this->expiredDate = date($this->dateTimeFormat, strtotime("+".$expiredHours." hour"));
|
||||
}
|
||||
}
|
||||
|
||||
public function getAccessKeyId()
|
||||
{
|
||||
return $this->accessKeyId;
|
||||
}
|
||||
|
||||
public function setAccessKeyId($accessKeyId)
|
||||
{
|
||||
$this->accessKeyId = $accessKeyId;
|
||||
}
|
||||
|
||||
public function getAccessSecret()
|
||||
{
|
||||
return $this->accessSecret;
|
||||
}
|
||||
|
||||
public function setAccessSecret($accessSecret)
|
||||
{
|
||||
$this->accessSecret = $accessSecret;
|
||||
}
|
||||
|
||||
}
|
12
addons/dysms/sdk/lib/Core/Auth/ISigner.php
Executable file
12
addons/dysms/sdk/lib/Core/Auth/ISigner.php
Executable file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Auth;
|
||||
|
||||
interface ISigner
|
||||
{
|
||||
public function getSignatureMethod();
|
||||
|
||||
public function getSignatureVersion();
|
||||
|
||||
public function signString($source, $accessSecret);
|
||||
}
|
20
addons/dysms/sdk/lib/Core/Auth/ShaHmac1Signer.php
Executable file
20
addons/dysms/sdk/lib/Core/Auth/ShaHmac1Signer.php
Executable file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Auth;
|
||||
|
||||
class ShaHmac1Signer implements ISigner
|
||||
{
|
||||
public function signString($source, $accessSecret)
|
||||
{
|
||||
return base64_encode(hash_hmac('sha1', $source, $accessSecret, true));
|
||||
}
|
||||
|
||||
public function getSignatureMethod() {
|
||||
return "HMAC-SHA1";
|
||||
}
|
||||
|
||||
public function getSignatureVersion() {
|
||||
return "1.0";
|
||||
}
|
||||
|
||||
}
|
20
addons/dysms/sdk/lib/Core/Auth/ShaHmac256Signer.php
Executable file
20
addons/dysms/sdk/lib/Core/Auth/ShaHmac256Signer.php
Executable file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Auth;
|
||||
|
||||
class ShaHmac256Signer implements ISigner
|
||||
{
|
||||
public function signString($source, $accessSecret)
|
||||
{
|
||||
return base64_encode(hash_hmac('sha256', $source, $accessSecret, true));
|
||||
}
|
||||
|
||||
public function getSignatureMethod() {
|
||||
return "HMAC-SHA256";
|
||||
}
|
||||
|
||||
public function getSignatureVersion() {
|
||||
return "1.0";
|
||||
}
|
||||
|
||||
}
|
23
addons/dysms/sdk/lib/Core/Config.php
Executable file
23
addons/dysms/sdk/lib/Core/Config.php
Executable file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core;
|
||||
|
||||
use Aliyun\Core\Regions\EndpointConfig;
|
||||
|
||||
//config http proxy
|
||||
define('ENABLE_HTTP_PROXY', FALSE);
|
||||
define('HTTP_PROXY_IP', '127.0.0.1');
|
||||
define('HTTP_PROXY_PORT', '8888');
|
||||
|
||||
|
||||
class Config
|
||||
{
|
||||
private static $loaded = false;
|
||||
public static function load(){
|
||||
if(self::$loaded) {
|
||||
return;
|
||||
}
|
||||
EndpointConfig::load();
|
||||
self::$loaded = true;
|
||||
}
|
||||
}
|
124
addons/dysms/sdk/lib/Core/DefaultAcsClient.php
Executable file
124
addons/dysms/sdk/lib/Core/DefaultAcsClient.php
Executable file
@ -0,0 +1,124 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core;
|
||||
use Aliyun\Core\Exception\ClientException;
|
||||
use Aliyun\Core\Exception\ServerException;
|
||||
use Aliyun\Core\Regions\EndpointProvider;
|
||||
use Aliyun\Core\Http\HttpHelper;
|
||||
|
||||
class DefaultAcsClient implements IAcsClient
|
||||
{
|
||||
public $iClientProfile;
|
||||
public $__urlTestFlag__;
|
||||
|
||||
function __construct($iClientProfile)
|
||||
{
|
||||
$this->iClientProfile = $iClientProfile;
|
||||
$this->__urlTestFlag__ = false;
|
||||
}
|
||||
|
||||
public function getAcsResponse($request, $iSigner = null, $credential = null, $autoRetry = true, $maxRetryNumber = 3)
|
||||
{
|
||||
$httpResponse = $this->doActionImpl($request, $iSigner, $credential, $autoRetry, $maxRetryNumber);
|
||||
$respObject = $this->parseAcsResponse($httpResponse->getBody(), $request->getAcceptFormat());
|
||||
if(false == $httpResponse->isSuccess())
|
||||
{
|
||||
$this->buildApiException($respObject, $httpResponse->getStatus());
|
||||
}
|
||||
return $respObject;
|
||||
}
|
||||
|
||||
private function doActionImpl($request, $iSigner = null, $credential = null, $autoRetry = true, $maxRetryNumber = 3)
|
||||
{
|
||||
if(null == $this->iClientProfile && (null == $iSigner || null == $credential
|
||||
|| null == $request->getRegionId() || null == $request->getAcceptFormat()))
|
||||
{
|
||||
throw new ClientException("No active profile found.", "SDK.InvalidProfile");
|
||||
}
|
||||
if(null == $iSigner)
|
||||
{
|
||||
$iSigner = $this->iClientProfile->getSigner();
|
||||
}
|
||||
if(null == $credential)
|
||||
{
|
||||
$credential = $this->iClientProfile->getCredential();
|
||||
}
|
||||
$request = $this->prepareRequest($request);
|
||||
$domain = EndpointProvider::findProductDomain($request->getRegionId(), $request->getProduct());
|
||||
|
||||
if(null == $domain)
|
||||
{
|
||||
throw new ClientException("Can not find endpoint to access.", "SDK.InvalidRegionId");
|
||||
}
|
||||
$requestUrl = $request->composeUrl($iSigner, $credential, $domain);
|
||||
|
||||
if ($this->__urlTestFlag__) {
|
||||
throw new ClientException($requestUrl, "URLTestFlagIsSet");
|
||||
}
|
||||
|
||||
if(count($request->getDomainParameter())>0){
|
||||
$httpResponse = HttpHelper::curl($requestUrl, $request->getMethod(), $request->getDomainParameter(), $request->getHeaders());
|
||||
} else {
|
||||
$httpResponse = HttpHelper::curl($requestUrl, $request->getMethod(),$request->getContent(), $request->getHeaders());
|
||||
}
|
||||
|
||||
$retryTimes = 1;
|
||||
while (500 <= $httpResponse->getStatus() && $autoRetry && $retryTimes < $maxRetryNumber) {
|
||||
$requestUrl = $request->composeUrl($iSigner, $credential,$domain);
|
||||
|
||||
if(count($request->getDomainParameter())>0){
|
||||
$httpResponse = HttpHelper::curl($requestUrl, $request->getDomainParameter(), $request->getHeaders());
|
||||
} else {
|
||||
$httpResponse = HttpHelper::curl($requestUrl, $request->getMethod(), $request->getContent(), $request->getHeaders());
|
||||
}
|
||||
$retryTimes ++;
|
||||
}
|
||||
return $httpResponse;
|
||||
}
|
||||
|
||||
public function doAction($request, $iSigner = null, $credential = null, $autoRetry = true, $maxRetryNumber = 3)
|
||||
{
|
||||
trigger_error("doAction() is deprecated. Please use getAcsResponse() instead.", E_USER_NOTICE);
|
||||
return $this->doActionImpl($request, $iSigner, $credential, $autoRetry, $maxRetryNumber);
|
||||
}
|
||||
|
||||
private function prepareRequest($request)
|
||||
{
|
||||
if(null == $request->getRegionId())
|
||||
{
|
||||
$request->setRegionId($this->iClientProfile->getRegionId());
|
||||
}
|
||||
if(null == $request->getAcceptFormat())
|
||||
{
|
||||
$request->setAcceptFormat($this->iClientProfile->getFormat());
|
||||
}
|
||||
if(null == $request->getMethod())
|
||||
{
|
||||
$request->setMethod("GET");
|
||||
}
|
||||
return $request;
|
||||
}
|
||||
|
||||
|
||||
private function buildApiException($respObject, $httpStatus)
|
||||
{
|
||||
throw new ServerException($respObject->Message, $respObject->Code, $httpStatus, $respObject->RequestId);
|
||||
}
|
||||
|
||||
private function parseAcsResponse($body, $format)
|
||||
{
|
||||
if ("JSON" == $format)
|
||||
{
|
||||
$respObject = json_decode($body);
|
||||
}
|
||||
else if("XML" == $format)
|
||||
{
|
||||
$respObject = @simplexml_load_string($body);
|
||||
}
|
||||
else if("RAW" == $format)
|
||||
{
|
||||
$respObject = $body;
|
||||
}
|
||||
return $respObject;
|
||||
}
|
||||
}
|
50
addons/dysms/sdk/lib/Core/Exception/ClientException.php
Executable file
50
addons/dysms/sdk/lib/Core/Exception/ClientException.php
Executable file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Exception;
|
||||
|
||||
class ClientException extends \Exception
|
||||
{
|
||||
function __construct($errorMessage, $errorCode)
|
||||
{
|
||||
parent::__construct($errorMessage);
|
||||
$this->errorMessage = $errorMessage;
|
||||
$this->errorCode = $errorCode;
|
||||
$this->setErrorType("Client");
|
||||
}
|
||||
|
||||
private $errorCode;
|
||||
private $errorMessage;
|
||||
private $errorType;
|
||||
|
||||
public function getErrorCode()
|
||||
{
|
||||
return $this->errorCode;
|
||||
}
|
||||
|
||||
public function setErrorCode($errorCode)
|
||||
{
|
||||
$this->errorCode = $errorCode;
|
||||
}
|
||||
|
||||
public function getErrorMessage()
|
||||
{
|
||||
return $this->errorMessage;
|
||||
}
|
||||
|
||||
public function setErrorMessage($errorMessage)
|
||||
{
|
||||
$this->errorMessage = $errorMessage;
|
||||
}
|
||||
|
||||
public function getErrorType()
|
||||
{
|
||||
return $this->errorType;
|
||||
}
|
||||
|
||||
public function setErrorType($errorType)
|
||||
{
|
||||
$this->errorType = $errorType;
|
||||
}
|
||||
|
||||
|
||||
}
|
31
addons/dysms/sdk/lib/Core/Exception/ServerException.php
Executable file
31
addons/dysms/sdk/lib/Core/Exception/ServerException.php
Executable file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Aliyun\Core\Exception;
|
||||
|
||||
class ServerException extends ClientException
|
||||
{
|
||||
private $httpStatus;
|
||||
private $requestId;
|
||||
|
||||
function __construct($errorMessage, $errorCode, $httpStatus, $requestId)
|
||||
{
|
||||
$messageStr = $errorCode . " " . $errorMessage . " HTTP Status: " . $httpStatus . " RequestID: " . $requestId;
|
||||
parent::__construct($messageStr, $errorCode);
|
||||
$this->setErrorMessage($errorMessage);
|
||||
$this->setErrorType("Server");
|
||||
$this->httpStatus = $httpStatus;
|
||||
$this->requestId = $requestId;
|
||||
}
|
||||
|
||||
public function getHttpStatus()
|
||||
{
|
||||
return $this->httpStatus;
|
||||
}
|
||||
|
||||
public function getRequestId()
|
||||
{
|
||||
return $this->requestId;
|
||||
}
|
||||
|
||||
}
|
69
addons/dysms/sdk/lib/Core/Http/HttpHelper.php
Executable file
69
addons/dysms/sdk/lib/Core/Http/HttpHelper.php
Executable file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Http;
|
||||
use Aliyun\Core\Exception\ClientException;
|
||||
|
||||
class HttpHelper
|
||||
{
|
||||
public static $connectTimeout = 30;//30 second
|
||||
public static $readTimeout = 80;//80 second
|
||||
|
||||
public static function curl($url, $httpMethod = "GET", $postFields = null,$headers = null)
|
||||
{
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $httpMethod);
|
||||
if(ENABLE_HTTP_PROXY) {
|
||||
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
|
||||
curl_setopt($ch, CURLOPT_PROXY, HTTP_PROXY_IP);
|
||||
curl_setopt($ch, CURLOPT_PROXYPORT, HTTP_PROXY_PORT);
|
||||
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
|
||||
}
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_FAILONERROR, false);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, is_array($postFields) ? self::getPostHttpBody($postFields) : $postFields);
|
||||
|
||||
if (self::$readTimeout) {
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, self::$readTimeout);
|
||||
}
|
||||
if (self::$connectTimeout) {
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::$connectTimeout);
|
||||
}
|
||||
//https request
|
||||
if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
}
|
||||
if (is_array($headers) && 0 < count($headers))
|
||||
{
|
||||
$httpHeaders =self::getHttpHearders($headers);
|
||||
curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeaders);
|
||||
}
|
||||
$httpResponse = new HttpResponse();
|
||||
$httpResponse->setBody(curl_exec($ch));
|
||||
$httpResponse->setStatus(curl_getinfo($ch, CURLINFO_HTTP_CODE));
|
||||
if (curl_errno($ch))
|
||||
{
|
||||
throw new ClientException("Server unreachable: Errno: " . curl_errno($ch) . " " . curl_error($ch), "SDK.ServerUnreachable");
|
||||
}
|
||||
curl_close($ch);
|
||||
return $httpResponse;
|
||||
}
|
||||
static function getPostHttpBody($postFildes){
|
||||
$content = "";
|
||||
foreach ($postFildes as $apiParamKey => $apiParamValue)
|
||||
{
|
||||
$content .= "$apiParamKey=" . urlencode($apiParamValue) . "&";
|
||||
}
|
||||
return substr($content, 0, -1);
|
||||
}
|
||||
static function getHttpHearders($headers)
|
||||
{
|
||||
$httpHeader = array();
|
||||
foreach ($headers as $key => $value)
|
||||
{
|
||||
array_push($httpHeader, $key.":".$value);
|
||||
}
|
||||
return $httpHeader;
|
||||
}
|
||||
}
|
38
addons/dysms/sdk/lib/Core/Http/HttpResponse.php
Executable file
38
addons/dysms/sdk/lib/Core/Http/HttpResponse.php
Executable file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Http;
|
||||
|
||||
class HttpResponse
|
||||
{
|
||||
private $body;
|
||||
private $status;
|
||||
|
||||
public function getBody()
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function setBody($body)
|
||||
{
|
||||
$this->body = $body;
|
||||
}
|
||||
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
public function setStatus($status)
|
||||
{
|
||||
$this->status = $status;
|
||||
}
|
||||
|
||||
public function isSuccess()
|
||||
{
|
||||
if(200 <= $this->status && 300 > $this->status)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
7
addons/dysms/sdk/lib/Core/IAcsClient.php
Executable file
7
addons/dysms/sdk/lib/Core/IAcsClient.php
Executable file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core;
|
||||
interface IAcsClient
|
||||
{
|
||||
public function doAction($requst);
|
||||
}
|
137
addons/dysms/sdk/lib/Core/Profile/DefaultProfile.php
Executable file
137
addons/dysms/sdk/lib/Core/Profile/DefaultProfile.php
Executable file
@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Profile;
|
||||
|
||||
use Aliyun\Core\Auth\Credential;
|
||||
use Aliyun\Core\Auth\ShaHmac1Signer;
|
||||
use Aliyun\Core\Regions\ProductDomain;
|
||||
use Aliyun\Core\Regions\Endpoint;
|
||||
use Aliyun\Core\Regions\EndpointProvider;
|
||||
|
||||
class DefaultProfile implements IClientProfile
|
||||
{
|
||||
private static $profile;
|
||||
private static $endpoints;
|
||||
private static $credential;
|
||||
private static $regionId;
|
||||
private static $acceptFormat;
|
||||
|
||||
private static $isigner;
|
||||
private static $iCredential;
|
||||
|
||||
private function __construct($regionId,$credential)
|
||||
{
|
||||
self::$regionId = $regionId;
|
||||
self::$credential = $credential;
|
||||
}
|
||||
|
||||
public static function getProfile($regionId, $accessKeyId, $accessSecret)
|
||||
{
|
||||
$credential =new Credential($accessKeyId, $accessSecret);
|
||||
self::$profile = new DefaultProfile($regionId, $credential);
|
||||
return self::$profile;
|
||||
}
|
||||
|
||||
public function getSigner()
|
||||
{
|
||||
if(null == self::$isigner)
|
||||
{
|
||||
self::$isigner = new ShaHmac1Signer();
|
||||
}
|
||||
return self::$isigner;
|
||||
}
|
||||
|
||||
public function getRegionId()
|
||||
{
|
||||
return self::$regionId;
|
||||
}
|
||||
|
||||
public function getFormat()
|
||||
{
|
||||
return self::$acceptFormat;
|
||||
}
|
||||
|
||||
public function getCredential()
|
||||
{
|
||||
if(null == self::$credential && null != self::$iCredential)
|
||||
{
|
||||
self::$credential = self::$iCredential;
|
||||
}
|
||||
return self::$credential;
|
||||
}
|
||||
|
||||
public static function getEndpoints()
|
||||
{
|
||||
if(null == self::$endpoints)
|
||||
{
|
||||
self::$endpoints = EndpointProvider::getEndpoints();
|
||||
}
|
||||
return self::$endpoints;
|
||||
}
|
||||
|
||||
public static function addEndpoint($endpointName, $regionId, $product, $domain)
|
||||
{
|
||||
if(null == self::$endpoints)
|
||||
{
|
||||
self::$endpoints = self::getEndpoints();
|
||||
}
|
||||
$endpoint = self::findEndpointByName($endpointName);
|
||||
if(null == $endpoint)
|
||||
{
|
||||
self::addEndpoint_($endpointName, $regionId, $product, $domain);
|
||||
}
|
||||
else
|
||||
{
|
||||
self::updateEndpoint($regionId, $product, $domain, $endpoint);
|
||||
}
|
||||
}
|
||||
|
||||
public static function findEndpointByName($endpointName)
|
||||
{
|
||||
foreach (self::$endpoints as $key => $endpoint)
|
||||
{
|
||||
if($endpoint->getName() == $endpointName)
|
||||
{
|
||||
return $endpoint;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function addEndpoint_($endpointName,$regionId, $product, $domain)
|
||||
{
|
||||
$regionIds = array($regionId);
|
||||
$productDomains = array(new ProductDomain($product, $domain));
|
||||
$endpoint = new Endpoint($endpointName, $regionIds, $productDomains);
|
||||
array_push(self::$endpoints, $endpoint);
|
||||
}
|
||||
|
||||
private static function updateEndpoint($regionId, $product, $domain, $endpoint)
|
||||
{
|
||||
$regionIds = $endpoint->getRegionIds();
|
||||
if(!in_array($regionId,$regionIds))
|
||||
{
|
||||
array_push($regionIds, $regionId);
|
||||
$endpoint->setRegionIds($regionIds);
|
||||
}
|
||||
|
||||
$productDomains = $endpoint->getProductDomains();
|
||||
if(null == self::findProductDomain($productDomains, $product, $domain))
|
||||
{
|
||||
array_push($productDomains, new ProductDomain($product, $domain));
|
||||
}
|
||||
$endpoint->setProductDomains($productDomains);
|
||||
}
|
||||
|
||||
private static function findProductDomain($productDomains, $product, $domain)
|
||||
{
|
||||
foreach ($productDomains as $key => $productDomain)
|
||||
{
|
||||
if($productDomain->getProductName() == $product && $productDomain->getDomainName() == $domain)
|
||||
{
|
||||
return $productDomain;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
14
addons/dysms/sdk/lib/Core/Profile/IClientProfile.php
Executable file
14
addons/dysms/sdk/lib/Core/Profile/IClientProfile.php
Executable file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Profile;
|
||||
|
||||
interface IClientProfile
|
||||
{
|
||||
public function getSigner();
|
||||
|
||||
public function getRegionId();
|
||||
|
||||
public function getFormat();
|
||||
|
||||
public function getCredential();
|
||||
}
|
47
addons/dysms/sdk/lib/Core/Regions/Endpoint.php
Executable file
47
addons/dysms/sdk/lib/Core/Regions/Endpoint.php
Executable file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Regions;
|
||||
|
||||
class Endpoint
|
||||
{
|
||||
private $name;
|
||||
private $regionIds;
|
||||
private $productDomains;
|
||||
|
||||
function __construct($name, $regionIds, $productDomains)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->regionIds = $regionIds;
|
||||
$this->productDomains = $productDomains;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function setName($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
public function getRegionIds()
|
||||
{
|
||||
return $this->regionIds;
|
||||
}
|
||||
|
||||
public function setRegionIds($regionIds)
|
||||
{
|
||||
$this->regionIds = $regionIds;
|
||||
}
|
||||
|
||||
public function getProductDomains()
|
||||
{
|
||||
return $this->productDomains;
|
||||
}
|
||||
|
||||
public function setProductDomains($productDomains)
|
||||
{
|
||||
$this->productDomains = $productDomains;
|
||||
}
|
||||
}
|
63
addons/dysms/sdk/lib/Core/Regions/EndpointConfig.php
Executable file
63
addons/dysms/sdk/lib/Core/Regions/EndpointConfig.php
Executable file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Regions;
|
||||
|
||||
class EndpointConfig {
|
||||
|
||||
private static $loaded = false;
|
||||
|
||||
public static function load() {
|
||||
if(self::$loaded) {
|
||||
return;
|
||||
}
|
||||
$endpoint_filename = dirname(__FILE__) . DIRECTORY_SEPARATOR . "endpoints.xml";
|
||||
$xml = simplexml_load_string(file_get_contents($endpoint_filename));
|
||||
$json = json_encode($xml);
|
||||
$json_array = json_decode($json, TRUE);
|
||||
|
||||
$endpoints = array();
|
||||
|
||||
|
||||
foreach ($json_array["Endpoint"] as $json_endpoint) {
|
||||
# pre-process RegionId & Product
|
||||
if (!array_key_exists("RegionId", $json_endpoint["RegionIds"])) {
|
||||
$region_ids = array();
|
||||
} else {
|
||||
$json_region_ids = $json_endpoint['RegionIds']['RegionId'];
|
||||
if (!is_array($json_region_ids)) {
|
||||
$region_ids = array($json_region_ids);
|
||||
} else {
|
||||
$region_ids = $json_region_ids;
|
||||
}
|
||||
}
|
||||
|
||||
if (!array_key_exists("Product", $json_endpoint["Products"])) {
|
||||
$products = array();
|
||||
|
||||
} else {
|
||||
$json_products = $json_endpoint["Products"]["Product"];
|
||||
|
||||
if (array() === $json_products or !is_array($json_products)) {
|
||||
$products = array();
|
||||
} else if (array_keys($json_products) !== range(0, count($json_products) - 1)) {
|
||||
# array is not sequential
|
||||
$products = array($json_products);
|
||||
} else {
|
||||
$products = $json_products;
|
||||
}
|
||||
}
|
||||
|
||||
$product_domains = array();
|
||||
foreach ($products as $product) {
|
||||
$product_domain = new ProductDomain($product['ProductName'], $product['DomainName']);
|
||||
array_push($product_domains, $product_domain);
|
||||
}
|
||||
|
||||
$endpoint = new Endpoint($region_ids[0], $region_ids, $product_domains);
|
||||
array_push($endpoints, $endpoint);
|
||||
}
|
||||
|
||||
EndpointProvider::setEndpoints($endpoints);
|
||||
self::$loaded = true;
|
||||
}
|
||||
}
|
53
addons/dysms/sdk/lib/Core/Regions/EndpointProvider.php
Executable file
53
addons/dysms/sdk/lib/Core/Regions/EndpointProvider.php
Executable file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Regions;
|
||||
|
||||
class EndpointProvider
|
||||
{
|
||||
private static $endpoints;
|
||||
|
||||
public static function findProductDomain($regionId, $product)
|
||||
{
|
||||
if(null == $regionId || null == $product || null == self::$endpoints)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach (self::$endpoints as $key => $endpoint)
|
||||
{
|
||||
if(in_array($regionId, $endpoint->getRegionIds()))
|
||||
{
|
||||
return self::findProductDomainByProduct($endpoint->getProductDomains(), $product);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function findProductDomainByProduct($productDomains, $product)
|
||||
{
|
||||
if(null == $productDomains)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
foreach ($productDomains as $key => $productDomain)
|
||||
{
|
||||
if($product == $productDomain->getProductName())
|
||||
{
|
||||
return $productDomain->getDomainName();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static function getEndpoints()
|
||||
{
|
||||
return self::$endpoints;
|
||||
}
|
||||
|
||||
public static function setEndpoints($endpoints)
|
||||
{
|
||||
self::$endpoints = $endpoints;
|
||||
}
|
||||
|
||||
}
|
28
addons/dysms/sdk/lib/Core/Regions/ProductDomain.php
Executable file
28
addons/dysms/sdk/lib/Core/Regions/ProductDomain.php
Executable file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core\Regions;
|
||||
|
||||
class ProductDomain
|
||||
{
|
||||
private $productName;
|
||||
private $domainName;
|
||||
|
||||
function __construct($product, $domain) {
|
||||
$this->productName = $product;
|
||||
$this->domainName = $domain;
|
||||
}
|
||||
|
||||
public function getProductName() {
|
||||
return $this->productName;
|
||||
}
|
||||
public function setProductName($productName) {
|
||||
$this->productName = $productName;
|
||||
}
|
||||
public function getDomainName() {
|
||||
return $this->domainName;
|
||||
}
|
||||
public function setDomainName($domainName) {
|
||||
$this->domainName = $domainName;
|
||||
}
|
||||
|
||||
}
|
1349
addons/dysms/sdk/lib/Core/Regions/endpoints.xml
Executable file
1349
addons/dysms/sdk/lib/Core/Regions/endpoints.xml
Executable file
File diff suppressed because it is too large
Load Diff
208
addons/dysms/sdk/lib/Core/RoaAcsRequest.php
Executable file
208
addons/dysms/sdk/lib/Core/RoaAcsRequest.php
Executable file
@ -0,0 +1,208 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core;
|
||||
|
||||
abstract class RoaAcsRequest extends AcsRequest
|
||||
{
|
||||
protected $uriPattern;
|
||||
private $pathParameters = array();
|
||||
private $domainParameters = array();
|
||||
private $dateTimeFormat ="D, d M Y H:i:s \G\M\T";
|
||||
private static $headerSeparator = "\n";
|
||||
private static $querySeprator = "&";
|
||||
|
||||
function __construct($product, $version, $actionName)
|
||||
{
|
||||
parent::__construct($product, $version, $actionName);
|
||||
$this->setVersion($version);
|
||||
$this->initialize();
|
||||
}
|
||||
|
||||
private function initialize()
|
||||
{
|
||||
$this->setMethod("RAW");
|
||||
}
|
||||
|
||||
public function composeUrl($iSigner, $credential, $domain)
|
||||
{
|
||||
$this->prepareHeader($iSigner);
|
||||
|
||||
$signString = $this->getMethod().self::$headerSeparator;
|
||||
if(isset($this->headers["Accept"]))
|
||||
{
|
||||
$signString = $signString.$this->headers["Accept"];
|
||||
}
|
||||
$signString = $signString.self::$headerSeparator;
|
||||
|
||||
if(isset($this->headers["Content-MD5"]))
|
||||
{
|
||||
$signString = $signString.$this->headers["Content-MD5"];
|
||||
}
|
||||
$signString = $signString.self::$headerSeparator;
|
||||
|
||||
if(isset($this->headers["Content-Type"]))
|
||||
{
|
||||
$signString = $signString.$this->headers["Content-Type"];
|
||||
}
|
||||
$signString = $signString.self::$headerSeparator;
|
||||
|
||||
if(isset($this->headers["Date"]))
|
||||
{
|
||||
$signString = $signString.$this->headers["Date"];
|
||||
}
|
||||
$signString = $signString.self::$headerSeparator;
|
||||
|
||||
$uri = $this->replaceOccupiedParameters();
|
||||
$signString = $signString.$this->buildCanonicalHeaders();
|
||||
$queryString = $this->buildQueryString($uri);
|
||||
$signString .= $queryString;
|
||||
$this->headers["Authorization"] = "acs ".$credential->getAccessKeyId().":"
|
||||
.$iSigner->signString($signString, $credential->getAccessSecret());
|
||||
$requestUrl = $this->getProtocol()."://".$domain.$queryString;
|
||||
return $requestUrl;
|
||||
}
|
||||
|
||||
private function prepareHeader($iSigner)
|
||||
{
|
||||
date_default_timezone_set("GMT");
|
||||
$this->headers["Date"] = date($this->dateTimeFormat);
|
||||
if(null == $this->acceptFormat)
|
||||
{
|
||||
$this->acceptFormat = "RAW";
|
||||
}
|
||||
$this->headers["Accept"] = $this->formatToAccept($this->getAcceptFormat());
|
||||
$this->headers["x-acs-signature-method"] = $iSigner->getSignatureMethod();
|
||||
$this->headers["x-acs-signature-version"] = $iSigner->getSignatureVersion();
|
||||
$this->headers["x-acs-region-id"] = $this->regionId;
|
||||
$content = $this->getDomainParameter();
|
||||
if ($content != null) {
|
||||
$this->headers["Content-MD5"] = base64_encode(md5(json_encode($content),true));
|
||||
}
|
||||
$this->headers["Content-Type"] = "application/octet-stream;charset=utf-8";
|
||||
}
|
||||
|
||||
private function replaceOccupiedParameters()
|
||||
{
|
||||
$result = $this->uriPattern;
|
||||
foreach ($this->pathParameters as $pathParameterKey => $apiParameterValue)
|
||||
{
|
||||
$target = "[".$pathParameterKey."]";
|
||||
$result = str_replace($target,$apiParameterValue,$result);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function buildCanonicalHeaders()
|
||||
{
|
||||
$sortMap = array();
|
||||
foreach ($this->headers as $headerKey => $headerValue)
|
||||
{
|
||||
$key = strtolower($headerKey);
|
||||
if(strpos($key, "x-acs-") === 0)
|
||||
{
|
||||
$sortMap[$key] = $headerValue;
|
||||
}
|
||||
}
|
||||
ksort($sortMap);
|
||||
$headerString = "";
|
||||
foreach ($sortMap as $sortMapKey => $sortMapValue)
|
||||
{
|
||||
$headerString = $headerString.$sortMapKey.":".$sortMapValue.self::$headerSeparator;
|
||||
}
|
||||
return $headerString;
|
||||
}
|
||||
|
||||
private function splitSubResource($uri)
|
||||
{
|
||||
$queIndex = strpos($uri, "?");
|
||||
$uriParts = array();
|
||||
if(null != $queIndex)
|
||||
{
|
||||
array_push($uriParts, substr($uri,0,$queIndex));
|
||||
array_push($uriParts, substr($uri,$queIndex+1));
|
||||
}
|
||||
else
|
||||
{
|
||||
array_push($uriParts,$uri);
|
||||
}
|
||||
return $uriParts;
|
||||
}
|
||||
|
||||
private function buildQueryString($uri)
|
||||
{
|
||||
$uriParts = $this->splitSubResource($uri);
|
||||
$sortMap = $this->queryParameters;
|
||||
if(isset($uriParts[1]))
|
||||
{
|
||||
$sortMap[$uriParts[1]] = null;
|
||||
}
|
||||
$queryString = $uriParts[0];
|
||||
if(count($uriParts))
|
||||
{
|
||||
$queryString = $queryString."?";
|
||||
}
|
||||
ksort($sortMap);
|
||||
foreach ($sortMap as $sortMapKey => $sortMapValue)
|
||||
{
|
||||
$queryString = $queryString.$sortMapKey;
|
||||
if(isset($sortMapValue))
|
||||
{
|
||||
$queryString = $queryString."=".$sortMapValue;
|
||||
}
|
||||
$queryString = $queryString.$querySeprator;
|
||||
}
|
||||
if(null==count($sortMap))
|
||||
{
|
||||
$queryString = substr($queryString, 0, strlen($queryString)-1);
|
||||
}
|
||||
return $queryString;
|
||||
}
|
||||
|
||||
private function formatToAccept($acceptFormat)
|
||||
{
|
||||
if($acceptFormat == "JSON")
|
||||
{
|
||||
return "application/json";
|
||||
}
|
||||
elseif ($acceptFormat == "XML") {
|
||||
return "application/xml";
|
||||
}
|
||||
return "application/octet-stream";
|
||||
}
|
||||
|
||||
public function getPathParameters()
|
||||
{
|
||||
return $this->pathParameters;
|
||||
}
|
||||
|
||||
public function putPathParameter($name, $value)
|
||||
{
|
||||
$this->pathParameters[$name] = $value;
|
||||
}
|
||||
|
||||
public function getDomainParameter()
|
||||
{
|
||||
return $this->domainParameters;
|
||||
}
|
||||
|
||||
public function putDomainParameters($name, $value)
|
||||
{
|
||||
$this->domainParameters[$name] = $value;
|
||||
}
|
||||
|
||||
public function getUriPattern()
|
||||
{
|
||||
return $this->uriPattern;
|
||||
}
|
||||
|
||||
public function setUriPattern($uriPattern)
|
||||
{
|
||||
return $this->uriPattern = $uriPattern;
|
||||
}
|
||||
|
||||
public function setVersion($version)
|
||||
{
|
||||
$this->version = $version;
|
||||
$this->headers["x-acs-version"] = $version;
|
||||
}
|
||||
}
|
106
addons/dysms/sdk/lib/Core/RpcAcsRequest.php
Executable file
106
addons/dysms/sdk/lib/Core/RpcAcsRequest.php
Executable file
@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace Aliyun\Core;
|
||||
|
||||
abstract class RpcAcsRequest extends AcsRequest
|
||||
{
|
||||
private $dateTimeFormat = 'Y-m-d\TH:i:s\Z';
|
||||
private $domainParameters = array();
|
||||
|
||||
function __construct($product, $version, $actionName)
|
||||
{
|
||||
parent::__construct($product, $version, $actionName);
|
||||
$this->initialize();
|
||||
}
|
||||
|
||||
private function initialize()
|
||||
{
|
||||
$this->setMethod("GET");
|
||||
$this->setAcceptFormat("JSON");
|
||||
}
|
||||
|
||||
|
||||
private function prepareValue($value)
|
||||
{
|
||||
if (is_bool($value)) {
|
||||
if ($value) {
|
||||
return "true";
|
||||
} else {
|
||||
return "false";
|
||||
}
|
||||
} else {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
public function composeUrl($iSigner, $credential, $domain)
|
||||
{
|
||||
$apiParams = parent::getQueryParameters();
|
||||
foreach ($apiParams as $key => $value) {
|
||||
$apiParams[$key] = $this->prepareValue($value);
|
||||
}
|
||||
$apiParams["RegionId"] = $this->getRegionId();
|
||||
$apiParams["AccessKeyId"] = $credential->getAccessKeyId();
|
||||
$apiParams["Format"] = $this->getAcceptFormat();
|
||||
$apiParams["SignatureMethod"] = $iSigner->getSignatureMethod();
|
||||
$apiParams["SignatureVersion"] = $iSigner->getSignatureVersion();
|
||||
$apiParams["SignatureNonce"] = uniqid();
|
||||
date_default_timezone_set("GMT");
|
||||
$apiParams["Timestamp"] = date($this->dateTimeFormat);
|
||||
$apiParams["Action"] = $this->getActionName();
|
||||
$apiParams["Version"] = $this->getVersion();
|
||||
$apiParams["Signature"] = $this->computeSignature($apiParams, $credential->getAccessSecret(), $iSigner);
|
||||
if(parent::getMethod() == "POST") {
|
||||
|
||||
$requestUrl = $this->getProtocol()."://". $domain . "/";
|
||||
foreach ($apiParams as $apiParamKey => $apiParamValue)
|
||||
{
|
||||
$this->putDomainParameters($apiParamKey,$apiParamValue);
|
||||
}
|
||||
return $requestUrl;
|
||||
}
|
||||
else {
|
||||
$requestUrl = $this->getProtocol()."://". $domain . "/?";
|
||||
|
||||
foreach ($apiParams as $apiParamKey => $apiParamValue)
|
||||
{
|
||||
$requestUrl .= "$apiParamKey=" . urlencode($apiParamValue) . "&";
|
||||
}
|
||||
return substr($requestUrl, 0, -1);
|
||||
}
|
||||
}
|
||||
|
||||
private function computeSignature($parameters, $accessKeySecret, $iSigner)
|
||||
{
|
||||
ksort($parameters);
|
||||
$canonicalizedQueryString = '';
|
||||
foreach($parameters as $key => $value)
|
||||
{
|
||||
$canonicalizedQueryString .= '&' . $this->percentEncode($key). '=' . $this->percentEncode($value);
|
||||
}
|
||||
$stringToSign = parent::getMethod().'&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1));
|
||||
$signature = $iSigner->signString($stringToSign, $accessKeySecret."&");
|
||||
|
||||
return $signature;
|
||||
}
|
||||
|
||||
protected function percentEncode($str)
|
||||
{
|
||||
$res = urlencode($str);
|
||||
$res = preg_replace('/\+/', '%20', $res);
|
||||
$res = preg_replace('/\*/', '%2A', $res);
|
||||
$res = preg_replace('/%7E/', '~', $res);
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function getDomainParameter()
|
||||
{
|
||||
return $this->domainParameters;
|
||||
}
|
||||
|
||||
public function putDomainParameters($name, $value)
|
||||
{
|
||||
$this->domainParameters[$name] = $value;
|
||||
}
|
||||
|
||||
}
|
7
addons/dysms/sdk/vendor/autoload.php
vendored
Executable file
7
addons/dysms/sdk/vendor/autoload.php
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitee70723fd3132b6d05f0ff016c58b71b::getLoader();
|
445
addons/dysms/sdk/vendor/composer/ClassLoader.php
vendored
Executable file
445
addons/dysms/sdk/vendor/composer/ClassLoader.php
vendored
Executable file
@ -0,0 +1,445 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see http://www.php-fig.org/psr/psr-0/
|
||||
* @see http://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
private $prefixesPsr0 = array();
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
private $useIncludePath = false;
|
||||
private $classMap = array();
|
||||
private $classMapAuthoritative = false;
|
||||
private $missingClasses = array();
|
||||
private $apcuPrefix;
|
||||
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $classMap Class to filename map
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||
*
|
||||
* @param string|null $apcuPrefix
|
||||
*/
|
||||
public function setApcuPrefix($apcuPrefix)
|
||||
{
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getApcuPrefix()
|
||||
{
|
||||
return $this->apcuPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return bool|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||
return false;
|
||||
}
|
||||
if (null !== $this->apcuPrefix) {
|
||||
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||
if ($hit) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if (false === $file && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if (null !== $this->apcuPrefix) {
|
||||
apcu_add($this->apcuPrefix.$class, $file);
|
||||
}
|
||||
|
||||
if (false === $file) {
|
||||
// Remember that this class does not exist.
|
||||
$this->missingClasses[$class] = true;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath.'\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
$length = $this->prefixLengthsPsr4[$first][$search];
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
21
addons/dysms/sdk/vendor/composer/LICENSE
vendored
Executable file
21
addons/dysms/sdk/vendor/composer/LICENSE
vendored
Executable file
@ -0,0 +1,21 @@
|
||||
|
||||
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
454
addons/dysms/sdk/vendor/composer/autoload_classmap.php
vendored
Executable file
454
addons/dysms/sdk/vendor/composer/autoload_classmap.php
vendored
Executable file
@ -0,0 +1,454 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
|
||||
'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
|
||||
'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
|
||||
'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
|
||||
'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
|
||||
'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
|
||||
'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
|
||||
'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
|
||||
'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
|
||||
'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
|
||||
'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
|
||||
'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
|
||||
'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
|
||||
'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
|
||||
'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php',
|
||||
'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
||||
'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
||||
'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
||||
'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php',
|
||||
'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php',
|
||||
'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
||||
'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
||||
'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
||||
'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
||||
'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
||||
'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
|
||||
'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
||||
'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
||||
'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
||||
'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
||||
'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
||||
'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
||||
'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
||||
'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
||||
'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
||||
'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
|
||||
'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
||||
'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
|
||||
'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
|
||||
'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
|
||||
'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
||||
'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
||||
'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
||||
'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
|
||||
'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
||||
'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
|
||||
'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php',
|
||||
'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
|
||||
'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
||||
'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
||||
'PHPUnit_Framework_InvalidCoversTargetError' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php',
|
||||
'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
||||
'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
|
||||
'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
|
||||
'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
|
||||
'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
|
||||
'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||
'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
||||
'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
|
||||
'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
|
||||
'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
||||
'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
||||
'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
||||
'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
||||
'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
||||
'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
|
||||
'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
|
||||
'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php',
|
||||
'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
|
||||
'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
|
||||
'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php',
|
||||
'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
|
||||
'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
|
||||
'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
|
||||
'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
||||
'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php',
|
||||
'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php',
|
||||
'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php',
|
||||
'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php',
|
||||
'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php',
|
||||
'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php',
|
||||
'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php',
|
||||
'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
|
||||
'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
|
||||
'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php',
|
||||
'PHP_CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
|
||||
'PHP_CodeCoverage_Driver' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php',
|
||||
'PHP_CodeCoverage_Driver_HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php',
|
||||
'PHP_CodeCoverage_Driver_PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php',
|
||||
'PHP_CodeCoverage_Driver_Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php',
|
||||
'PHP_CodeCoverage_Exception' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php',
|
||||
'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php',
|
||||
'PHP_CodeCoverage_Filter' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php',
|
||||
'PHP_CodeCoverage_Report_Clover' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php',
|
||||
'PHP_CodeCoverage_Report_Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php',
|
||||
'PHP_CodeCoverage_Report_Factory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php',
|
||||
'PHP_CodeCoverage_Report_HTML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php',
|
||||
'PHP_CodeCoverage_Report_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php',
|
||||
'PHP_CodeCoverage_Report_Node_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php',
|
||||
'PHP_CodeCoverage_Report_Node_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php',
|
||||
'PHP_CodeCoverage_Report_Node_Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php',
|
||||
'PHP_CodeCoverage_Report_PHP' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php',
|
||||
'PHP_CodeCoverage_Report_Text' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php',
|
||||
'PHP_CodeCoverage_Report_XML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php',
|
||||
'PHP_CodeCoverage_Report_XML_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php',
|
||||
'PHP_CodeCoverage_Report_XML_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Method' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Report' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Unit' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php',
|
||||
'PHP_CodeCoverage_Report_XML_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php',
|
||||
'PHP_CodeCoverage_Report_XML_Project' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php',
|
||||
'PHP_CodeCoverage_Report_XML_Tests' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php',
|
||||
'PHP_CodeCoverage_Report_XML_Totals' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php',
|
||||
'PHP_CodeCoverage_Util' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php',
|
||||
'PHP_CodeCoverage_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php',
|
||||
'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
|
||||
'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php',
|
||||
'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
|
||||
'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
|
||||
'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
|
||||
'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
|
||||
'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
|
||||
'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
|
||||
'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
|
||||
'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
|
||||
'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
|
||||
'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
|
||||
'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
|
||||
'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
|
||||
'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
|
||||
'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
|
||||
'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
|
||||
'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
|
||||
'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
|
||||
'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
|
||||
'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
|
||||
'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
|
||||
'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php',
|
||||
'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
|
||||
'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php',
|
||||
'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
|
||||
'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
|
||||
'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
|
||||
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
|
||||
'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
|
||||
);
|
10
addons/dysms/sdk/vendor/composer/autoload_namespaces.php
vendored
Executable file
10
addons/dysms/sdk/vendor/composer/autoload_namespaces.php
vendored
Executable file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'),
|
||||
);
|
15
addons/dysms/sdk/vendor/composer/autoload_psr4.php
vendored
Executable file
15
addons/dysms/sdk/vendor/composer/autoload_psr4.php
vendored
Executable file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
|
||||
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
||||
'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
|
||||
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
|
||||
'Aliyun\\Test\\' => array($baseDir . '/tests'),
|
||||
'Aliyun\\' => array($baseDir . '/lib'),
|
||||
);
|
52
addons/dysms/sdk/vendor/composer/autoload_real.php
vendored
Executable file
52
addons/dysms/sdk/vendor/composer/autoload_real.php
vendored
Executable file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInitee70723fd3132b6d05f0ff016c58b71b
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInitee70723fd3132b6d05f0ff016c58b71b', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitee70723fd3132b6d05f0ff016c58b71b', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||
if ($useStaticLoader) {
|
||||
require_once __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInitee70723fd3132b6d05f0ff016c58b71b::getInitializer($loader));
|
||||
} else {
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
530
addons/dysms/sdk/vendor/composer/autoload_static.php
vendored
Executable file
530
addons/dysms/sdk/vendor/composer/autoload_static.php
vendored
Executable file
@ -0,0 +1,530 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInitee70723fd3132b6d05f0ff016c58b71b
|
||||
{
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'p' =>
|
||||
array (
|
||||
'phpDocumentor\\Reflection\\' => 25,
|
||||
),
|
||||
'W' =>
|
||||
array (
|
||||
'Webmozart\\Assert\\' => 17,
|
||||
),
|
||||
'S' =>
|
||||
array (
|
||||
'Symfony\\Component\\Yaml\\' => 23,
|
||||
),
|
||||
'D' =>
|
||||
array (
|
||||
'Doctrine\\Instantiator\\' => 22,
|
||||
),
|
||||
'A' =>
|
||||
array (
|
||||
'Aliyun\\Test\\' => 12,
|
||||
'Aliyun\\' => 7,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'phpDocumentor\\Reflection\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
|
||||
1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
||||
2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
||||
),
|
||||
'Webmozart\\Assert\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/webmozart/assert/src',
|
||||
),
|
||||
'Symfony\\Component\\Yaml\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/yaml',
|
||||
),
|
||||
'Doctrine\\Instantiator\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
|
||||
),
|
||||
'Aliyun\\Test\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/../..' . '/tests',
|
||||
),
|
||||
'Aliyun\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/../..' . '/lib',
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixesPsr0 = array (
|
||||
'P' =>
|
||||
array (
|
||||
'Prophecy\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpspec/prophecy/src',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
|
||||
'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
|
||||
'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
|
||||
'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
|
||||
'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
|
||||
'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
|
||||
'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
|
||||
'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
|
||||
'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
|
||||
'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
|
||||
'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
|
||||
'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
|
||||
'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
|
||||
'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
|
||||
'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php',
|
||||
'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
|
||||
'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
|
||||
'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
|
||||
'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php',
|
||||
'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php',
|
||||
'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
|
||||
'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
|
||||
'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
|
||||
'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
|
||||
'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
|
||||
'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
|
||||
'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
|
||||
'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
|
||||
'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
|
||||
'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
|
||||
'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
|
||||
'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
|
||||
'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
|
||||
'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
|
||||
'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
|
||||
'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
|
||||
'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
|
||||
'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
|
||||
'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
|
||||
'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
|
||||
'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
|
||||
'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
|
||||
'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
|
||||
'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
|
||||
'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
|
||||
'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
|
||||
'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
|
||||
'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
|
||||
'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
|
||||
'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php',
|
||||
'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
|
||||
'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
|
||||
'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
|
||||
'PHPUnit_Framework_InvalidCoversTargetError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php',
|
||||
'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
|
||||
'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
|
||||
'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
|
||||
'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
|
||||
'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
|
||||
'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
|
||||
'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
|
||||
'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
|
||||
'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||
'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
|
||||
'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
||||
'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
|
||||
'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
|
||||
'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
|
||||
'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
|
||||
'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
|
||||
'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
|
||||
'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
|
||||
'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
|
||||
'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
|
||||
'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php',
|
||||
'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
|
||||
'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
|
||||
'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php',
|
||||
'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
|
||||
'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
|
||||
'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
|
||||
'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
|
||||
'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php',
|
||||
'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php',
|
||||
'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php',
|
||||
'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php',
|
||||
'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php',
|
||||
'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php',
|
||||
'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php',
|
||||
'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
|
||||
'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
|
||||
'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
|
||||
'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php',
|
||||
'PHP_CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
|
||||
'PHP_CodeCoverage_Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php',
|
||||
'PHP_CodeCoverage_Driver_HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php',
|
||||
'PHP_CodeCoverage_Driver_PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php',
|
||||
'PHP_CodeCoverage_Driver_Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php',
|
||||
'PHP_CodeCoverage_Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php',
|
||||
'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php',
|
||||
'PHP_CodeCoverage_Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php',
|
||||
'PHP_CodeCoverage_Report_Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php',
|
||||
'PHP_CodeCoverage_Report_Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php',
|
||||
'PHP_CodeCoverage_Report_Factory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php',
|
||||
'PHP_CodeCoverage_Report_HTML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php',
|
||||
'PHP_CodeCoverage_Report_HTML_Renderer_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php',
|
||||
'PHP_CodeCoverage_Report_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php',
|
||||
'PHP_CodeCoverage_Report_Node_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php',
|
||||
'PHP_CodeCoverage_Report_Node_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php',
|
||||
'PHP_CodeCoverage_Report_Node_Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php',
|
||||
'PHP_CodeCoverage_Report_PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php',
|
||||
'PHP_CodeCoverage_Report_Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php',
|
||||
'PHP_CodeCoverage_Report_XML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php',
|
||||
'PHP_CodeCoverage_Report_XML_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php',
|
||||
'PHP_CodeCoverage_Report_XML_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php',
|
||||
'PHP_CodeCoverage_Report_XML_File_Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php',
|
||||
'PHP_CodeCoverage_Report_XML_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php',
|
||||
'PHP_CodeCoverage_Report_XML_Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php',
|
||||
'PHP_CodeCoverage_Report_XML_Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php',
|
||||
'PHP_CodeCoverage_Report_XML_Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php',
|
||||
'PHP_CodeCoverage_Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php',
|
||||
'PHP_CodeCoverage_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php',
|
||||
'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
|
||||
'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php',
|
||||
'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
|
||||
'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
|
||||
'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
|
||||
'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
|
||||
'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
|
||||
'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
|
||||
'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
|
||||
'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
|
||||
'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
|
||||
'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
|
||||
'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
|
||||
'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
|
||||
'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
|
||||
'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
|
||||
'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
|
||||
'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
|
||||
'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
|
||||
'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
|
||||
'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
|
||||
'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
|
||||
'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
|
||||
'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
|
||||
'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
|
||||
'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php',
|
||||
'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
|
||||
'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php',
|
||||
'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
|
||||
'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
|
||||
'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
|
||||
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
|
||||
'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
|
||||
'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInitee70723fd3132b6d05f0ff016c58b71b::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInitee70723fd3132b6d05f0ff016c58b71b::$prefixDirsPsr4;
|
||||
$loader->prefixesPsr0 = ComposerStaticInitee70723fd3132b6d05f0ff016c58b71b::$prefixesPsr0;
|
||||
$loader->classMap = ComposerStaticInitee70723fd3132b6d05f0ff016c58b71b::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
1160
addons/dysms/sdk/vendor/composer/installed.json
vendored
Executable file
1160
addons/dysms/sdk/vendor/composer/installed.json
vendored
Executable file
File diff suppressed because it is too large
Load Diff
0
addons/dysms/uninstall.sql
Executable file
0
addons/dysms/uninstall.sql
Executable file
142
addons/kuaidi/Kuaidi.php
Executable file
142
addons/kuaidi/Kuaidi.php
Executable file
@ -0,0 +1,142 @@
|
||||
<?php
|
||||
namespace addons\kuaidi; // 注意命名空间规范
|
||||
|
||||
|
||||
use think\addons\Addons;
|
||||
use addons\kuaidi\model\Kuaidi as DM;
|
||||
|
||||
/**
|
||||
* 快递100
|
||||
* @author HSF
|
||||
*/
|
||||
class Kuaidi extends Addons{
|
||||
// 该插件的基础信息
|
||||
public $info = [
|
||||
'name' => 'Kuaidi', // 插件标识
|
||||
'title' => '快递100', // 插件名称
|
||||
'description' => '为您更好的跟踪您的订单动态', // 插件简介
|
||||
'status' => 0, // 状态
|
||||
'author' => 'HSF',
|
||||
'version' => '1.0.1'
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* 插件安装方法
|
||||
* @return bool
|
||||
*/
|
||||
public function install(){
|
||||
$m = new DM();
|
||||
$flag = $m->install();
|
||||
WSTClearHookCache();
|
||||
cache('hooks',null);
|
||||
return $flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件卸载方法
|
||||
* @return bool
|
||||
*/
|
||||
public function uninstall(){
|
||||
$m = new DM();
|
||||
$flag = $m->uninstall();
|
||||
WSTClearHookCache();
|
||||
cache('hooks',null);
|
||||
return $flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件启用方法
|
||||
* @return bool
|
||||
*/
|
||||
public function enable(){
|
||||
WSTClearHookCache();
|
||||
cache('hooks',null);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件禁用方法
|
||||
* @return bool
|
||||
*/
|
||||
public function disable(){
|
||||
WSTClearHookCache();
|
||||
cache('hooks',null);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件设置方法
|
||||
* @return bool
|
||||
*/
|
||||
public function saveConfig(){
|
||||
$m = new DM();
|
||||
WSTClearHookCache();
|
||||
cache('hooks',null);
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 跳转订单详情【admin】
|
||||
*/
|
||||
public function adminDocumentOrderView($params){
|
||||
$m = new DM();
|
||||
$rs = $m->getOrderDeliver($params['orderId']);
|
||||
if($rs["deliverType"]==0 && $rs["orderStatus"]>0){
|
||||
$express = $m->getExpress($params['orderId']);
|
||||
if($express["expressNo"]!=""){
|
||||
$rs = $m->getOrderExpress($params['orderId']);
|
||||
|
||||
$expressLogs = json_decode($rs, true);
|
||||
$this->assign('expressLogs', $expressLogs);
|
||||
return $this->fetch('view/admin/view');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳转订单详情【home】
|
||||
*/
|
||||
public function homeDocumentOrderView($params){
|
||||
$m = new DM();
|
||||
$rs = $m->getOrderDeliver($params['orderId']);
|
||||
if($rs["deliverType"]==0 && $rs["orderStatus"]>0){//货到付款的并且是未付款以上状态
|
||||
$express = $m->getExpress($params['orderId']);//获取订单号及物流信息
|
||||
if($express["expressNo"]!=""){
|
||||
$rs = $m->getOrderExpress($params['orderId']);//返回订单信息
|
||||
$expressLogs = json_decode($rs, true);//将json转换为数组
|
||||
$this->assign('expressLogs', $expressLogs);
|
||||
return $this->fetch('view/home/view');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function afterQueryUserOrders($params){
|
||||
$m = new DM();
|
||||
foreach ($params["page"]["Rows"] as $key => $v){
|
||||
$rs = $m->getOrderDeliver($v['orderId']);
|
||||
if($rs["deliverType"]==0 && $rs["orderStatus"]>0 && $rs["expressNo"]!=""){
|
||||
$bnt = '<button class="ui-btn o-btn o-cancel-btn" onclick="checkExpress('.$v['orderId'].')">查看物流</button>';
|
||||
$params["page"]["Rows"][$key]['hook'] = ($v['orderStatus']==1 || $v['orderStatus']==2)?$bnt:"";
|
||||
}else{
|
||||
$params["page"]["Rows"][$key]['hook'] = "";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单列表【mobile】
|
||||
*/
|
||||
public function mobileDocumentOrderList(){
|
||||
return $this->fetch('view/mobile/view');
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单列表【wechat】
|
||||
*/
|
||||
public function wechatDocumentOrderList(){
|
||||
return $this->fetch('view/wechat/view');
|
||||
}
|
||||
|
||||
}
|
15
addons/kuaidi/config.php
Executable file
15
addons/kuaidi/config.php
Executable file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'kd_tips1'=>array(
|
||||
'title'=>'快递代码是用于物流查询,可点击<a href="https://www.kuaidi100.com/download/api_kuaidi100_com(20140729).doc" target="_blank" style="font-weight:bold;">这里</a>查看,到“首页->基础设置->快递管理”中进行设置',
|
||||
'type'=>'hidden',
|
||||
'value'=>''
|
||||
),
|
||||
'kuaidiKey'=>array(
|
||||
'title'=>'快递100授权密匙(Key) <span ><a target="_blank" href="https://www.kuaidi100.com/openapi/applyapi.shtml" style="color:blue">在线申请密匙(Key)</a></span>',
|
||||
'type'=>'text',
|
||||
'value'=>'',
|
||||
'tips'=>''
|
||||
)
|
||||
);
|
60
addons/kuaidi/controller/Kuaidi.php
Executable file
60
addons/kuaidi/controller/Kuaidi.php
Executable file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
namespace addons\kuaidi\controller;
|
||||
|
||||
use think\addons\Controller;
|
||||
use addons\kuaidi\model\Kuaidi as M;
|
||||
/**
|
||||
* ============================================================================
|
||||
* 快递查询控制器
|
||||
*/
|
||||
class Kuaidi extends Controller{
|
||||
public function __construct(){
|
||||
parent::__construct();
|
||||
$this->assign("v",WSTConf('CONF.wstVersion')."_".WSTConf('CONF.wsthomeStyleId'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳转订单详情【mobile】
|
||||
*/
|
||||
public function checkMobileExpress(){
|
||||
$m = new M();
|
||||
$rs = $m->getOrderExpress(input("orderId"));
|
||||
$express = json_decode($rs, true);
|
||||
$state = isset($express["state"])?$express["state"]:'-1';
|
||||
$data = $m->getOrderInfo();
|
||||
$data["express"]["stateTxt"] = $this->getExpressState($state);
|
||||
$express["express"] = $data["express"];
|
||||
$express["goodlist"] = $data["goodlist"];
|
||||
return $express;
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳转订单详情【wechat】
|
||||
*/
|
||||
public function checkWechatExpress(){
|
||||
$m = new M();
|
||||
$rs = $m->getOrderExpress(input("orderId"));
|
||||
$express = json_decode($rs, true);
|
||||
$state = isset($express["state"])?$express["state"]:'-1';
|
||||
$data = $m->getOrderInfo();
|
||||
$data["express"]["stateTxt"] = $this->getExpressState($state);
|
||||
$express["express"] = $data["express"];
|
||||
$express["goodlist"] = $data["goodlist"];
|
||||
return $express;
|
||||
}
|
||||
|
||||
public function getExpressState($state){
|
||||
$stateTxt = "";
|
||||
switch ($state) {
|
||||
case '0':$stateTxt="运输中";break;
|
||||
case '1':$stateTxt="揽件";break;
|
||||
case '2':$stateTxt="疑难";break;
|
||||
case '3':$stateTxt="收件人已签收";break;
|
||||
case '4':$stateTxt="已退签";break;
|
||||
case '5':$stateTxt="派件中";break;
|
||||
case '6':$stateTxt="退回";break;
|
||||
default:$stateTxt="暂未获取到状态";break;
|
||||
}
|
||||
return $stateTxt;
|
||||
}
|
||||
}
|
0
addons/kuaidi/install.sql
Executable file
0
addons/kuaidi/install.sql
Executable file
148
addons/kuaidi/model/Kuaidi.php
Executable file
148
addons/kuaidi/model/Kuaidi.php
Executable file
@ -0,0 +1,148 @@
|
||||
<?php
|
||||
namespace addons\kuaidi\model;
|
||||
use think\addons\BaseModel as Base;
|
||||
use think\Db;
|
||||
/**
|
||||
* ============================================================================
|
||||
* 快递查询业务处理
|
||||
*/
|
||||
class Kuaidi extends Base{
|
||||
|
||||
/**
|
||||
* 绑定勾子
|
||||
*/
|
||||
public function install(){
|
||||
Db::startTrans();
|
||||
try{
|
||||
$hooks = array("adminDocumentOrderView","homeDocumentOrderView","afterQueryUserOrders","mobileDocumentOrderList","wechatDocumentOrderList");
|
||||
$this->bindHoods("Kuaidi", $hooks);
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解绑勾子
|
||||
*/
|
||||
public function uninstall(){
|
||||
Db::startTrans();
|
||||
try{
|
||||
$hooks = array("adminDocumentOrderView","homeDocumentOrderView","afterQueryUserOrders","mobileDocumentOrderList","wechatDocumentOrderList");
|
||||
$this->unbindHoods("Kuaidi", $hooks);
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getExpress($orderId){
|
||||
$conf = $this->getConf("Kuaidi");
|
||||
$express = Db::name('orders')->where(["orderId"=>$orderId])->field(['expressId','expressNo'])->find();
|
||||
return $express;
|
||||
}
|
||||
|
||||
public function getOrderExpress($orderId){
|
||||
$conf = $this->getConf("Kuaidi");
|
||||
$express = Db::name('orders')->where(["orderId"=>$orderId])->field(['expressId','expressNo'])->find();
|
||||
|
||||
if($express["expressId"]>0){
|
||||
$expressId = $express["expressId"];
|
||||
$row = Db::name('express')->where(["expressId"=>$expressId])->find();
|
||||
$typeCom = strtolower($row["expressCode"]); //快递公司
|
||||
$typeNu = $express["expressNo"]; //快递单号
|
||||
|
||||
$appKey= $conf["kuaidiKey"];
|
||||
|
||||
$expressLogs = null;
|
||||
$post_data['param'] = json_encode(['com'=>$typeCom,'num'=>$typeNu]);
|
||||
$key ='jMIRnHZa5264';
|
||||
$post_data['customer'] ='466DC9B2C8C2CA140FFB2E6FAFE705DF';
|
||||
$post_data['sign']= strtoupper(md5($post_data['param'].$key.$post_data['customer']));
|
||||
|
||||
|
||||
$expressLogs = $this->curl_request('http://poll.kuaidi100.com/poll/query.do',$post_data);
|
||||
|
||||
//$url ='http://api.kuaidi100.com/api?id='.$appKey.'&com='.$typeCom.'&nu='.$typeNu.'&show=0&muti=1&order=asc';
|
||||
//$companys = array('ems','shentong','yuantong','shunfeng','yunda','tiantian','zhongtong','zengyisudi');
|
||||
// if(in_array($typeCom,$companys)){
|
||||
// $url = 'http://www.kuaidi100.com/query?type=' . $typeCom . '&postid=' . $typeNu;
|
||||
// }else{
|
||||
// $url ='http://api.kuaidi100.com/api?id='.$appKey.'&com='.$typeCom.'&nu='.$typeNu.'&show=0&muti=1&order=asc';
|
||||
// }
|
||||
//$expressLogs = $this -> curl($url);
|
||||
return $expressLogs;
|
||||
}
|
||||
|
||||
}
|
||||
//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
|
||||
function curl_request($url,$post='',$cookie='', $returnCookie=0){
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, $url);
|
||||
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
|
||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
|
||||
curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
|
||||
if($post) {
|
||||
curl_setopt($curl, CURLOPT_POST, 1);
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
|
||||
}
|
||||
if($cookie) {
|
||||
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
|
||||
}
|
||||
curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
||||
$data = curl_exec($curl);
|
||||
if (curl_errno($curl)) {
|
||||
return curl_error($curl);
|
||||
}
|
||||
curl_close($curl);
|
||||
if($returnCookie){
|
||||
list($header, $body) = explode("\r\n\r\n", $data, 2);
|
||||
preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
|
||||
$info['cookie'] = substr($matches[1][0], 1);
|
||||
$info['content'] = $body;
|
||||
return $info;
|
||||
}else{
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
public function getOrderInfo($orderId = 0){//添加可传订单号方法 mark hsf 20171130
|
||||
$data = array();
|
||||
if(!$orderId){
|
||||
$orderId = input("orderId");
|
||||
}
|
||||
$data["express"] = Db::name('orders o')->join('__EXPRESS__ e', 'o.expressId=e.expressId')->where(["orderId"=>$orderId])->field(['e.expressId','e.expressImg','o.expressNo','e.expressName'])->find();
|
||||
$data["express"]['expressImg'] = WSTImg($data["express"]['expressImg'],3);
|
||||
$data["goodsImg"] = Db::name('orders o')->join('__ORDER_GOODS__ og','o.orderId=og.orderId')->where(["o.orderId"=>$orderId])->value('og.goodsImg');//这个只返回一个数据
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function curl($url) {
|
||||
$curl = curl_init();
|
||||
curl_setopt ($curl, CURLOPT_URL, $url);
|
||||
curl_setopt ($curl, CURLOPT_HEADER,0);
|
||||
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt ($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt ($curl, CURLOPT_TIMEOUT,5);
|
||||
$content = curl_exec($curl);
|
||||
curl_close ($curl);
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
public function getOrderDeliver($orderId){
|
||||
$rs = Db::name('orders o')->where(["orderId"=>$orderId])->field("deliverType,orderStatus,expressNo")->find();
|
||||
return $rs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
0
addons/kuaidi/uninstall.sql
Executable file
0
addons/kuaidi/uninstall.sql
Executable file
2
addons/kuaidi/view/admin/express.css
Executable file
2
addons/kuaidi/view/admin/express.css
Executable file
@ -0,0 +1,2 @@
|
||||
#wst-express td,#wst-express th{text-align: left;}
|
||||
#wst-express .title{font-weight: bold;}
|
27
addons/kuaidi/view/admin/view.html
Executable file
27
addons/kuaidi/view/admin/view.html
Executable file
@ -0,0 +1,27 @@
|
||||
<link href="__ROOT__/addons/kuaidi/view/admin/express.css" rel="stylesheet">
|
||||
<div class='order-box'>
|
||||
<div class='box-head'>物流信息</div>
|
||||
<table class='wst-form' id="wst-express">
|
||||
<tr>
|
||||
<th width='200' class="title">时间</th>
|
||||
<th class="title">地点和跟踪进度</th>
|
||||
</tr>
|
||||
<?php if(isset($expressLogs['data'])){ ?>
|
||||
{volist name="expressLogs['data']" id="vo"}
|
||||
<tr>
|
||||
<th width='200'>{$vo['time']} {:WSTgetWeek($vo['time'])}</th>
|
||||
<td>{$vo['context']}</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{empty name="$expressLogs['data']"}
|
||||
<tr>
|
||||
<th colspan="2">物流单暂无结果!</th>
|
||||
</tr>
|
||||
{/empty}
|
||||
<?php }else{ ?>
|
||||
<tr>
|
||||
<th colspan="2">物流单暂无结果!</th>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
</div>
|
2
addons/kuaidi/view/home/express.css
Executable file
2
addons/kuaidi/view/home/express.css
Executable file
@ -0,0 +1,2 @@
|
||||
#wst-express td,#wst-express th{text-align: left;}
|
||||
#wst-express .title{font-weight: bold;}
|
27
addons/kuaidi/view/home/view.html
Executable file
27
addons/kuaidi/view/home/view.html
Executable file
@ -0,0 +1,27 @@
|
||||
<link href="__ROOT__/addons/kuaidi/view/home/express.css" rel="stylesheet">
|
||||
<div class='order-box'>
|
||||
<div class='box-head'>物流信息</div>
|
||||
<table class='wst-form' id="wst-express">
|
||||
<tr>
|
||||
<th width='200' class="title">时间</th>
|
||||
<th class="title">地点和跟踪进度</th>
|
||||
</tr>
|
||||
<?php if(isset($expressLogs['data'])){ ?>
|
||||
{volist name="expressLogs['data']" id="vo"}
|
||||
<tr>
|
||||
<th width='200'>{$vo['time']} {:WSTgetWeek($vo['time'])}</th>
|
||||
<td>{$vo['context']}</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{empty name="$expressLogs['data']"}
|
||||
<tr>
|
||||
<th colspan="2">物流单暂无结果!</th>
|
||||
</tr>
|
||||
{/empty}
|
||||
<?php }else{ ?>
|
||||
<tr>
|
||||
<th colspan="2">物流单暂无结果!</th>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
</div>
|
265
addons/kuaidi/view/mobile/express.css
Executable file
265
addons/kuaidi/view/mobile/express.css
Executable file
@ -0,0 +1,265 @@
|
||||
|
||||
html * {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
*, *:after, *:before {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.cd-container {
|
||||
width: 90%;
|
||||
max-width: 1170px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.cd-container::after {
|
||||
content: '';
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#cd-timeline {
|
||||
position: relative;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
#cd-timeline::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 18px;
|
||||
height: 100%;
|
||||
width: 4px;
|
||||
background: #d7e4ed;
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
#cd-timeline {
|
||||
margin-top: 3em;
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
#cd-timeline::before {
|
||||
left: 50%;
|
||||
margin-left: -2px;
|
||||
}
|
||||
}
|
||||
|
||||
.cd-timeline-block {
|
||||
position: relative;
|
||||
margin: 1em 0;
|
||||
}
|
||||
.cd-timeline-block:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.cd-timeline-block:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.cd-timeline-block:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cd-timeline-block {
|
||||
margin: 4em 0;
|
||||
}
|
||||
.cd-timeline-block:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.cd-timeline-block:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.cd-timeline-img {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 10px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 0 4px white, inset 0 2px 0 rgba(0, 0, 0, 0.08), 0 3px 0 4px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.cd-timeline-img img {
|
||||
display: block;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
position: relative;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -12px;
|
||||
margin-top: -12px;
|
||||
}
|
||||
.curr-picture {
|
||||
color: #75ce66;
|
||||
position: absolute;
|
||||
left: -2px;
|
||||
top: -2px;
|
||||
}
|
||||
.cd-timeline-img.cd-movie {
|
||||
background: #c03b44;
|
||||
}
|
||||
.cd-timeline-img.cd-location {
|
||||
background: #f0ca45;
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cd-timeline-img {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
left: 50%;
|
||||
margin-left: -30px;
|
||||
-webkit-transform: translateZ(0);
|
||||
-webkit-backface-visibility: hidden;
|
||||
}
|
||||
.cssanimations .cd-timeline-img.is-hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
.cssanimations .cd-timeline-img.bounce-in {
|
||||
visibility: visible;
|
||||
-webkit-animation: cd-bounce-1 0.6s;
|
||||
-moz-animation: cd-bounce-1 0.6s;
|
||||
animation: cd-bounce-1 0.6s;
|
||||
}
|
||||
}
|
||||
|
||||
.cd-timeline-content {
|
||||
position: relative;
|
||||
margin-left: 50px;
|
||||
background: white;
|
||||
border-radius: 0.25em;
|
||||
padding: 1em;
|
||||
box-shadow: 0 2px 0 #e0e4e3;
|
||||
}
|
||||
.cd-timeline-content:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.cd-timeline-content h2 {
|
||||
color: #303e49;
|
||||
}
|
||||
|
||||
.cd-timeline-content .cd-read-more, .cd-timeline-content .cd-date {
|
||||
display: inline-block;
|
||||
}
|
||||
.cd-timeline-content .cd-read-more {
|
||||
float: right;
|
||||
padding: .8em 1em;
|
||||
background: #acb7c0;
|
||||
color: white;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
.no-touch .cd-timeline-content .cd-read-more:hover {
|
||||
background-color: #bac4cb;
|
||||
}
|
||||
a.cd-read-more:hover{text-decoration:none; background-color: #424242; }
|
||||
.cd-timeline-content .cd-date {
|
||||
float: left;
|
||||
padding: .8em 0;
|
||||
opacity: .7;
|
||||
}
|
||||
.cd-timeline-content::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 16px;
|
||||
right: 100%;
|
||||
height: 0;
|
||||
width: 0;
|
||||
border: 7px solid transparent;
|
||||
border-right: 7px solid white;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.cd-timeline-content h2 {
|
||||
font-size: 20px;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.cd-timeline-content .cd-read-more, .cd-timeline-content .cd-date {
|
||||
font-size: 14px;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cd-timeline-content {
|
||||
margin-left: 0;
|
||||
padding: 1.6em;
|
||||
width: 45%;
|
||||
}
|
||||
.cd-timeline-content::before {
|
||||
top: 24px;
|
||||
left: 100%;
|
||||
border-color: transparent;
|
||||
border-left-color: white;
|
||||
}
|
||||
.cd-timeline-content .cd-read-more {
|
||||
float: left;
|
||||
}
|
||||
.cd-timeline-content .cd-date {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
left: 122%;
|
||||
top: 6px;
|
||||
font-size: 16px;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content {
|
||||
float: right;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content::before {
|
||||
top: 24px;
|
||||
left: auto;
|
||||
right: 100%;
|
||||
border-color: transparent;
|
||||
border-right-color: white;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more {
|
||||
float: right;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-date {
|
||||
left: auto;
|
||||
right: 122%;
|
||||
text-align: right;
|
||||
}
|
||||
.cssanimations .cd-timeline-content.is-hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
.cssanimations .cd-timeline-content.bounce-in {
|
||||
visibility: visible;
|
||||
-webkit-animation: cd-bounce-2 0.6s;
|
||||
-moz-animation: cd-bounce-2 0.6s;
|
||||
animation: cd-bounce-2 0.6s;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cssanimations .cd-timeline-block:nth-child(even) .cd-timeline-content.bounce-in {
|
||||
-webkit-animation: cd-bounce-2-inverse 0.6s;
|
||||
-moz-animation: cd-bounce-2-inverse 0.6s;
|
||||
animation: cd-bounce-2-inverse 0.6s;
|
||||
}
|
||||
}
|
||||
.o-Img {
|
||||
max-width: 60px;
|
||||
max-height: 60px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
margin-top: 5px;
|
||||
padding-top: 0;
|
||||
}
|
||||
.wst-fr-box {
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
right: -999px;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
min-height: 40%;
|
||||
background: #f2f2f2;
|
||||
font-size: 0.14rem;
|
||||
}
|
||||
.d-goodsitme {
|
||||
background: #fff;
|
||||
border-bottom: none;
|
||||
margin-bottom: 5px;
|
||||
font-size: 0.14rem;
|
||||
}
|
62
addons/kuaidi/view/mobile/view.html
Executable file
62
addons/kuaidi/view/mobile/view.html
Executable file
@ -0,0 +1,62 @@
|
||||
<link href="__ROOT__/addons/kuaidi/view/mobile/express.css" rel="stylesheet">
|
||||
<script type="text/html" id="expressBox">
|
||||
<div id="expressBox">
|
||||
<div class="ui-row-flex ui-whitespace border-b d-goodsitme">
|
||||
<div class="ui-col">
|
||||
<img src="__ROOT__/{{d.goodlist[0].goodsImg}}" class="o-Img">
|
||||
</div>
|
||||
<div class="ui-col ui-col-3 o-gInfo">
|
||||
<p class="o-gName ui-nowrap-multi">物流状态 <span style="font-weight:bold;color:red;">{{ d.express['stateTxt'] }}</span></p>
|
||||
<p class="o-gName ui-nowrap-multi">运单号:{{ (d.express && d.express['expressNo'])?d.express['expressNo']:'--' }}</p>
|
||||
<p class="o-gName ui-nowrap-multi">信息来源:{{ (d.express && d.express['expressName'])?d.express['expressName']:'--' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{# if(d.data){ }}
|
||||
<section id="cd-timeline" class="cd-container">
|
||||
{{# for(var i=0;i<d.data.length;i++){ }}
|
||||
<div class="cd-timeline-block">
|
||||
<div class="cd-timeline-img cd-picture">
|
||||
{{# if(i==0){ }}
|
||||
<i class="ui-icon-checked" style=" color: #75ce66;position: absolute;left: -2px;top: -2px;font-size:24px;line-height:25px;"></i>
|
||||
{{# }else{ }}
|
||||
<i class="ui-icon-checked" style="color: rgba(0, 0, 0, 0.2);position: absolute;left: -2px;top: -2px;font-size:24px;line-height:25px;"></i>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class="cd-timeline-content">
|
||||
<p class="o-gName ui-nowrap-multi">{{ d.data[i].context }}</p>
|
||||
<p style='color:#d2d2d2'>{{ d.data[i].time }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{# } }}
|
||||
{{# }else{ }}
|
||||
<div class="ui-col ui-col o-gInfo">暂无获取到物流信息!</div>
|
||||
{{# } }}
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function checkExpress(oid){
|
||||
$.post(WST.U('addon/kuaidi-kuaidi-checkmobileexpress'),{orderId:oid},function(data){
|
||||
var json = WST.toJson(data);
|
||||
if(json.status!=-1){
|
||||
var gettpl1 = document.getElementById('expressBox').innerHTML;
|
||||
laytpl(gettpl1).render(json, function(html){
|
||||
$('#content').html(html);
|
||||
// 弹出层滚动条
|
||||
var clientH = WST.pageHeight();// 屏幕高度
|
||||
var boxheadH = $('#boxTitle').height();// 弹出层标题高度
|
||||
var contentH = $('#content').height(); // 弹出层内容高度
|
||||
if((clientH-boxheadH) < contentH){
|
||||
$('#content').css('height',clientH-boxheadH+'px');
|
||||
}
|
||||
dataShow();
|
||||
});
|
||||
}else{
|
||||
WST.msg(json.msg,'info');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
265
addons/kuaidi/view/wechat/express.css
Executable file
265
addons/kuaidi/view/wechat/express.css
Executable file
@ -0,0 +1,265 @@
|
||||
|
||||
html * {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
*, *:after, *:before {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.cd-container {
|
||||
width: 90%;
|
||||
max-width: 1170px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.cd-container::after {
|
||||
content: '';
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#cd-timeline {
|
||||
position: relative;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
#cd-timeline::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 18px;
|
||||
height: 100%;
|
||||
width: 4px;
|
||||
background: #d7e4ed;
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
#cd-timeline {
|
||||
margin-top: 3em;
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
#cd-timeline::before {
|
||||
left: 50%;
|
||||
margin-left: -2px;
|
||||
}
|
||||
}
|
||||
|
||||
.cd-timeline-block {
|
||||
position: relative;
|
||||
margin: 1em 0;
|
||||
}
|
||||
.cd-timeline-block:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.cd-timeline-block:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.cd-timeline-block:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cd-timeline-block {
|
||||
margin: 4em 0;
|
||||
}
|
||||
.cd-timeline-block:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.cd-timeline-block:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.cd-timeline-img {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 10px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 0 4px white, inset 0 2px 0 rgba(0, 0, 0, 0.08), 0 3px 0 4px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.cd-timeline-img img {
|
||||
display: block;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
position: relative;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -12px;
|
||||
margin-top: -12px;
|
||||
}
|
||||
.curr-picture {
|
||||
color: #75ce66;
|
||||
position: absolute;
|
||||
left: -2px;
|
||||
top: -2px;
|
||||
}
|
||||
.cd-timeline-img.cd-movie {
|
||||
background: #c03b44;
|
||||
}
|
||||
.cd-timeline-img.cd-location {
|
||||
background: #f0ca45;
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cd-timeline-img {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
left: 50%;
|
||||
margin-left: -30px;
|
||||
-webkit-transform: translateZ(0);
|
||||
-webkit-backface-visibility: hidden;
|
||||
}
|
||||
.cssanimations .cd-timeline-img.is-hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
.cssanimations .cd-timeline-img.bounce-in {
|
||||
visibility: visible;
|
||||
-webkit-animation: cd-bounce-1 0.6s;
|
||||
-moz-animation: cd-bounce-1 0.6s;
|
||||
animation: cd-bounce-1 0.6s;
|
||||
}
|
||||
}
|
||||
|
||||
.cd-timeline-content {
|
||||
position: relative;
|
||||
margin-left: 50px;
|
||||
background: white;
|
||||
border-radius: 0.25em;
|
||||
padding: 1em;
|
||||
box-shadow: 0 2px 0 #e0e4e3;
|
||||
}
|
||||
.cd-timeline-content:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.cd-timeline-content h2 {
|
||||
color: #303e49;
|
||||
}
|
||||
|
||||
.cd-timeline-content .cd-read-more, .cd-timeline-content .cd-date {
|
||||
display: inline-block;
|
||||
}
|
||||
.cd-timeline-content .cd-read-more {
|
||||
float: right;
|
||||
padding: .8em 1em;
|
||||
background: #acb7c0;
|
||||
color: white;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
.no-touch .cd-timeline-content .cd-read-more:hover {
|
||||
background-color: #bac4cb;
|
||||
}
|
||||
a.cd-read-more:hover{text-decoration:none; background-color: #424242; }
|
||||
.cd-timeline-content .cd-date {
|
||||
float: left;
|
||||
padding: .8em 0;
|
||||
opacity: .7;
|
||||
}
|
||||
.cd-timeline-content::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 16px;
|
||||
right: 100%;
|
||||
height: 0;
|
||||
width: 0;
|
||||
border: 7px solid transparent;
|
||||
border-right: 7px solid white;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.cd-timeline-content h2 {
|
||||
font-size: 20px;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.cd-timeline-content .cd-read-more, .cd-timeline-content .cd-date {
|
||||
font-size: 14px;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cd-timeline-content {
|
||||
margin-left: 0;
|
||||
padding: 1.6em;
|
||||
width: 45%;
|
||||
}
|
||||
.cd-timeline-content::before {
|
||||
top: 24px;
|
||||
left: 100%;
|
||||
border-color: transparent;
|
||||
border-left-color: white;
|
||||
}
|
||||
.cd-timeline-content .cd-read-more {
|
||||
float: left;
|
||||
}
|
||||
.cd-timeline-content .cd-date {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
left: 122%;
|
||||
top: 6px;
|
||||
font-size: 16px;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content {
|
||||
float: right;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content::before {
|
||||
top: 24px;
|
||||
left: auto;
|
||||
right: 100%;
|
||||
border-color: transparent;
|
||||
border-right-color: white;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more {
|
||||
float: right;
|
||||
}
|
||||
.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-date {
|
||||
left: auto;
|
||||
right: 122%;
|
||||
text-align: right;
|
||||
}
|
||||
.cssanimations .cd-timeline-content.is-hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
.cssanimations .cd-timeline-content.bounce-in {
|
||||
visibility: visible;
|
||||
-webkit-animation: cd-bounce-2 0.6s;
|
||||
-moz-animation: cd-bounce-2 0.6s;
|
||||
animation: cd-bounce-2 0.6s;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.cssanimations .cd-timeline-block:nth-child(even) .cd-timeline-content.bounce-in {
|
||||
-webkit-animation: cd-bounce-2-inverse 0.6s;
|
||||
-moz-animation: cd-bounce-2-inverse 0.6s;
|
||||
animation: cd-bounce-2-inverse 0.6s;
|
||||
}
|
||||
}
|
||||
.o-Img {
|
||||
max-width: 60px;
|
||||
max-height: 60px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
margin-top: 5px;
|
||||
padding-top: 0;
|
||||
}
|
||||
.wst-fr-box {
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
right: -999px;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
min-height: 40%;
|
||||
background: #f2f2f2;
|
||||
font-size: 0.14rem;
|
||||
}
|
||||
.d-goodsitme {
|
||||
background: #fff;
|
||||
border-bottom: none;
|
||||
margin-bottom: 5px;
|
||||
font-size: 0.14rem;
|
||||
}
|
62
addons/kuaidi/view/wechat/view.html
Executable file
62
addons/kuaidi/view/wechat/view.html
Executable file
@ -0,0 +1,62 @@
|
||||
<link href="__ROOT__/addons/kuaidi/view/wechat/express.css" rel="stylesheet">
|
||||
<script type="text/html" id="expressBox">
|
||||
<div id="expressBox">
|
||||
<div class="ui-row-flex ui-whitespace border-b d-goodsitme">
|
||||
<div class="ui-col">
|
||||
<img src="__ROOT__/{{d.goodlist[0].goodsImg}}" class="o-Img">
|
||||
</div>
|
||||
<div class="ui-col ui-col-3 o-gInfo">
|
||||
<p class="o-gName ui-nowrap-multi">物流状态 <span style="font-weight:bold;color:red;">{{ d.express['stateTxt'] }}</span></p>
|
||||
<p class="o-gName ui-nowrap-multi">运单号:{{ (d.express && d.express['expressNo'])?d.express['expressNo']:'--' }}</p>
|
||||
<p class="o-gName ui-nowrap-multi">信息来源:{{ (d.express && d.express['expressName'])?d.express['expressName']:'--' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{# if(d.data){ }}
|
||||
<section id="cd-timeline" class="cd-container">
|
||||
{{# for(var i=0;i<d.data.length;i++){ }}
|
||||
<div class="cd-timeline-block">
|
||||
<div class="cd-timeline-img cd-picture">
|
||||
{{# if(i==0){ }}
|
||||
<i class="ui-icon-checked" style=" color: #75ce66;position: absolute;left: -2px;top: -2px;font-size:24px;line-height:25px;"></i>
|
||||
{{# }else{ }}
|
||||
<i class="ui-icon-checked" style="color: rgba(0, 0, 0, 0.2);position: absolute;left: -2px;top: -2px;font-size:24px;line-height:25px;"></i>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class="cd-timeline-content">
|
||||
<p class="o-gName ui-nowrap-multi">{{ d.data[i].context }}</p>
|
||||
<p style='color:#d2d2d2'>{{ d.data[i].time }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{# } }}
|
||||
{{# }else{ }}
|
||||
<div class="ui-col ui-col o-gInfo">暂无获取到物流信息!</div>
|
||||
{{# } }}
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function checkExpress(oid){
|
||||
$.post(WST.U('addon/kuaidi-kuaidi-checkwechatexpress'),{orderId:oid},function(data){
|
||||
var json = WST.toJson(data);
|
||||
if(json.status!=-1){
|
||||
var gettpl1 = document.getElementById('expressBox').innerHTML;
|
||||
laytpl(gettpl1).render(json, function(html){
|
||||
$('#content').html(html);
|
||||
// 弹出层滚动条
|
||||
var clientH = WST.pageHeight();// 屏幕高度
|
||||
var boxheadH = $('#boxTitle').height();// 弹出层标题高度
|
||||
var contentH = $('#content').height(); // 弹出层内容高度
|
||||
if((clientH-boxheadH) < contentH){
|
||||
$('#content').css('height',clientH-boxheadH+'px');
|
||||
}
|
||||
dataShow();
|
||||
});
|
||||
}else{
|
||||
WST.msg(json.msg,'info');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
5
admin.php
Executable file
5
admin.php
Executable file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
/**
|
||||
* ============================================================================
|
||||
*/
|
||||
header("Location:index.php/admin/index");
|
9
demo.php
Executable file
9
demo.php
Executable file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
$mem = new memcache();
|
||||
if($mem->connect('127.0.0.1',11211)){
|
||||
var_dump( $mem->get('333'));
|
||||
}
|
||||
|
||||
$a=["2123213","11"];
|
||||
list($ip,$port) = $a;
|
||||
echo $port;
|
4
extend/.htaccess
Executable file
4
extend/.htaccess
Executable file
@ -0,0 +1,4 @@
|
||||
<FilesMatch (.*)\.(html|php)$>
|
||||
order allow,deny
|
||||
deny from all
|
||||
</FilesMatch>
|
153
extend/alipay/AlipayNotify.php
Executable file
153
extend/alipay/AlipayNotify.php
Executable file
@ -0,0 +1,153 @@
|
||||
<?php
|
||||
/*
|
||||
* 类名:AlipayNotify
|
||||
* 功能:支付宝通知处理类
|
||||
* 详细:处理支付宝各接口通知返回
|
||||
*/
|
||||
|
||||
class AlipayNotify {
|
||||
// HTTPS形式消息验证地址
|
||||
var $https_verify_url = 'https://mapi.alipay.com/gateway.do?service=notify_verify&';
|
||||
// HTTP形式消息验证地址
|
||||
var $http_verify_url = 'http://notify.alipay.com/trade/notify_query.do?';
|
||||
var $alipay_config;
|
||||
function __construct($alipay_config) {
|
||||
$this->alipay_config = $alipay_config;
|
||||
}
|
||||
function AlipayNotify($alipay_config) {
|
||||
$this->__construct ( $alipay_config );
|
||||
}
|
||||
/**
|
||||
* 针对notify_url验证消息是否是支付宝发出的合法消息
|
||||
* @return 验证结果
|
||||
*/
|
||||
function verifyNotify() {
|
||||
if (empty ( $_POST )) { // 判断POST来的数组是否为空
|
||||
return false;
|
||||
} else {
|
||||
// 对notify_data解密
|
||||
$decrypt_post_para = $_POST;
|
||||
if ($this->alipay_config ['sign_type'] == '0001') {
|
||||
$decrypt_post_para ['notify_data'] = rsaDecrypt ( $decrypt_post_para ['notify_data'], $this->alipay_config ['private_key_path'] );
|
||||
}
|
||||
// notify_id从decrypt_post_para中解析出来(也就是说decrypt_post_para中已经包含notify_id的内容)
|
||||
$doc = new \DOMDocument ();
|
||||
$doc->loadXML ( $decrypt_post_para ['notify_data'] );
|
||||
$notify_id = $doc->getElementsByTagName ( "notify_id" )->item ( 0 )->nodeValue;
|
||||
|
||||
// 获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)
|
||||
$responseTxt = 'true';
|
||||
if (! empty ( $notify_id )) {
|
||||
$responseTxt = $this->getResponse ( $notify_id );
|
||||
}
|
||||
// 生成签名结果
|
||||
$isSign = $this->getSignVeryfy ( $decrypt_post_para, $_POST ["sign"], false );
|
||||
|
||||
if (preg_match ( "/true$/i", $responseTxt ) && $isSign) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 针对return_url验证消息是否是支付宝发出的合法消息
|
||||
* @return 验证结果
|
||||
*/
|
||||
function verifyReturn() {
|
||||
if (empty ( $_GET )) { // 判断GET来的数组是否为空
|
||||
return false;
|
||||
} else {
|
||||
// 生成签名结果
|
||||
$isSign = $this->getSignVeryfy ( $_GET, $_GET ["sign"], true );
|
||||
if ($isSign) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密
|
||||
* @param $input_para 要解密数据
|
||||
* @return 解密后结果
|
||||
*/
|
||||
function decrypt($prestr) {
|
||||
return rsaDecrypt ( $prestr, trim ( $this->alipay_config ['private_key_path'] ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步通知时,对参数做固定排序
|
||||
* @param $para 排序前的参数组
|
||||
* @return 排序后的参数组
|
||||
*/
|
||||
function sortNotifyPara($para) {
|
||||
$para_sort ['service'] = $para ['service'];
|
||||
$para_sort ['v'] = $para ['v'];
|
||||
$para_sort ['sec_id'] = $para ['sec_id'];
|
||||
$para_sort ['notify_data'] = $para ['notify_data'];
|
||||
return $para_sort;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取返回时的签名验证结果
|
||||
* @param $para_temp 通知返回来的参数数组
|
||||
* @param $sign 返回的签名结果
|
||||
* @param $isSort 是否对待签名数组排序
|
||||
* @return 签名验证结果
|
||||
*/
|
||||
function getSignVeryfy($para_temp, $sign, $isSort) {
|
||||
// 除去待签名参数数组中的空值和签名参数
|
||||
$para = paraFilter ( $para_temp );
|
||||
// 对待签名参数数组排序
|
||||
if ($isSort) {
|
||||
$para = argSort ( $para );
|
||||
} else {
|
||||
$para = $this->sortNotifyPara ( $para );
|
||||
}
|
||||
// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
|
||||
$prestr = createLinkstring ( $para );
|
||||
|
||||
$isSgin = false;
|
||||
switch (strtoupper ( trim ( $this->alipay_config ['sign_type'] ) )) {
|
||||
case "MD5" :
|
||||
$isSgin = md5Verify ( $prestr, $sign, $this->alipay_config ['key'] );
|
||||
break;
|
||||
case "RSA" :
|
||||
$isSgin = rsaVerify ( $prestr, trim ( $this->alipay_config ['ali_public_key_path'] ), $sign );
|
||||
break;
|
||||
case "0001" :
|
||||
$isSgin = rsaVerify ( $prestr, trim ( $this->alipay_config ['ali_public_key_path'] ), $sign );
|
||||
break;
|
||||
default :
|
||||
$isSgin = false;
|
||||
}
|
||||
|
||||
return $isSgin;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取远程服务器ATN结果,验证返回URL
|
||||
* @param $notify_id 通知校验ID
|
||||
* @return 服务器ATN结果 验证结果集:
|
||||
* invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空
|
||||
* true 返回正确信息
|
||||
* false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
|
||||
*/
|
||||
function getResponse($notify_id) {
|
||||
$transport = strtolower ( trim ( $this->alipay_config ['transport'] ) );
|
||||
$partner = trim ( $this->alipay_config ['partner'] );
|
||||
$veryfy_url = '';
|
||||
if ($transport == 'https') {
|
||||
$veryfy_url = $this->https_verify_url;
|
||||
} else {
|
||||
$veryfy_url = $this->http_verify_url;
|
||||
}
|
||||
$veryfy_url = $veryfy_url . "partner=" . $partner . "¬ify_id=" . $notify_id;
|
||||
$responseTxt = getHttpResponseGET ( $veryfy_url, $this->alipay_config ['cacert'] );
|
||||
return $responseTxt;
|
||||
}
|
||||
}
|
||||
?>
|
181
extend/alipay/AlipaySubmit.php
Executable file
181
extend/alipay/AlipaySubmit.php
Executable file
@ -0,0 +1,181 @@
|
||||
<?php
|
||||
|
||||
class AlipaySubmit {
|
||||
|
||||
var $alipay_config;
|
||||
/**
|
||||
*支付宝网关地址
|
||||
*/
|
||||
var $alipay_gateway_new = 'http://wappaygw.alipay.com/service/rest.htm?';
|
||||
|
||||
function __construct($alipay_config){
|
||||
$this->alipay_config = $alipay_config;
|
||||
}
|
||||
function AlipaySubmit($alipay_config) {
|
||||
$this->__construct($alipay_config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成签名结果
|
||||
* @param $para_sort 已排序要签名的数组
|
||||
* return 签名结果字符串
|
||||
*/
|
||||
function buildRequestMysign($para_sort) {
|
||||
//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
|
||||
$prestr = createLinkstring($para_sort);
|
||||
$mysign = "";
|
||||
switch (strtoupper(trim($this->alipay_config['sign_type']))) {
|
||||
case "MD5" :
|
||||
$mysign = md5Sign($prestr, $this->alipay_config['key']);
|
||||
break;
|
||||
case "RSA" :
|
||||
$mysign = rsaSign($prestr, $this->alipay_config['private_key_path']);
|
||||
break;
|
||||
case "0001" :
|
||||
$mysign = rsaSign($prestr, $this->alipay_config['private_key_path']);
|
||||
break;
|
||||
default :
|
||||
$mysign = "";
|
||||
}
|
||||
return $mysign;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成要请求给支付宝的参数数组
|
||||
* @param $para_temp 请求前的参数数组
|
||||
* @return 要请求的参数数组
|
||||
*/
|
||||
function buildRequestPara($para_temp) {
|
||||
//除去待签名参数数组中的空值和签名参数
|
||||
$para_filter = paraFilter($para_temp);
|
||||
//对待签名参数数组排序
|
||||
$para_sort = argSort($para_filter);
|
||||
//生成签名结果
|
||||
$mysign = $this->buildRequestMysign($para_sort);
|
||||
//签名结果与签名方式加入请求提交参数组中
|
||||
$para_sort['sign'] = $mysign;
|
||||
if($para_sort['service'] != 'alipay.wap.trade.create.direct' && $para_sort['service'] != 'alipay.wap.auth.authAndExecute') {
|
||||
$para_sort['sign_type'] = strtoupper(trim($this->alipay_config['sign_type']));
|
||||
}
|
||||
return $para_sort;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成要请求给支付宝的参数数组
|
||||
* @param $para_temp 请求前的参数数组
|
||||
* @return 要请求的参数数组字符串
|
||||
*/
|
||||
function buildRequestParaToString($para_temp) {
|
||||
//待请求参数数组
|
||||
$para = $this->buildRequestPara($para_temp);
|
||||
//把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
|
||||
$request_data = createLinkstringUrlencode($para);
|
||||
|
||||
return $request_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 建立请求,以表单HTML形式构造(默认)
|
||||
* @param $para_temp 请求参数数组
|
||||
* @param $method 提交方式。两个值可选:post、get
|
||||
* @param $button_name 确认按钮显示文字
|
||||
* @return 提交表单HTML文本
|
||||
*/
|
||||
function buildRequestForm($para_temp, $method, $button_name) {
|
||||
//待请求参数数组
|
||||
$para = $this->buildRequestPara($para_temp);
|
||||
|
||||
$sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='".$this->alipay_gateway_new."_input_charset=".trim(strtolower($this->alipay_config['input_charset']))."' method='".$method."'>";
|
||||
while (list ($key, $val) = each ($para)) {
|
||||
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
|
||||
}
|
||||
//submit按钮控件请不要含有name属性
|
||||
$sHtml = $sHtml."<input style='display:none;' type='submit' value='".$button_name."'></form>";
|
||||
$sHtml = $sHtml."<script>document.forms['alipaysubmit'].submit();</script>";
|
||||
|
||||
return $sHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果
|
||||
* @param $para_temp 请求参数数组
|
||||
* @return 支付宝处理结果
|
||||
*/
|
||||
function buildRequestHttp($para_temp) {
|
||||
$sResult = '';
|
||||
|
||||
//待请求参数数组字符串
|
||||
$request_data = $this->buildRequestPara($para_temp);
|
||||
//远程获取数据
|
||||
$sResult = getHttpResponsePOST($this->alipay_gateway_new, $this->alipay_config['cacert'],$request_data,trim(strtolower($this->alipay_config['input_charset'])));
|
||||
return $sResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果,带文件上传功能
|
||||
* @param $para_temp 请求参数数组
|
||||
* @param $file_para_name 文件类型的参数名
|
||||
* @param $file_name 文件完整绝对路径
|
||||
* @return 支付宝返回处理结果
|
||||
*/
|
||||
function buildRequestHttpInFile($para_temp, $file_para_name, $file_name) {
|
||||
//待请求参数数组
|
||||
$para = $this->buildRequestPara($para_temp);
|
||||
$para[$file_para_name] = "@".$file_name;
|
||||
//远程获取数据
|
||||
$sResult = getHttpResponsePOST($this->alipay_gateway_new, $this->alipay_config['cacert'],$para,trim(strtolower($this->alipay_config['input_charset'])));
|
||||
return $sResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析远程模拟提交后返回的信息
|
||||
* @param $str_text 要解析的字符串
|
||||
* @return 解析结果
|
||||
*/
|
||||
function parseResponse($str_text) {
|
||||
//以“&”字符切割字符串
|
||||
$para_split = explode('&',$str_text);
|
||||
//把切割后的字符串数组变成变量与数值组合的数组
|
||||
foreach ($para_split as $item) {
|
||||
//获得第一个=字符的位置
|
||||
$nPos = strpos($item,'=');
|
||||
//获得字符串长度
|
||||
$nLen = strlen($item);
|
||||
//获得变量名
|
||||
$key = substr($item,0,$nPos);
|
||||
//获得数值
|
||||
$value = substr($item,$nPos+1,$nLen-$nPos-1);
|
||||
//放入数组中
|
||||
$para_text[$key] = $value;
|
||||
}
|
||||
|
||||
if( ! empty ($para_text['res_data'])) {
|
||||
//解析加密部分字符串
|
||||
if($this->alipay_config['sign_type'] == '0001') {
|
||||
$para_text['res_data'] = rsaDecrypt($para_text['res_data'], $this->alipay_config['private_key_path']);
|
||||
}
|
||||
|
||||
//token从res_data中解析出来(也就是说res_data中已经包含token的内容)
|
||||
$doc = new \DOMDocument();
|
||||
$doc->loadXML($para_text['res_data']);
|
||||
$para_text['request_token'] = $doc->getElementsByTagName( "request_token" )->item(0)->nodeValue;
|
||||
}
|
||||
return $para_text;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数
|
||||
* 注意:该功能PHP5环境及以上支持,因此必须服务器、本地电脑中装有支持DOMDocument、SSL的PHP配置环境。建议本地调试时使用PHP开发软件
|
||||
* return 时间戳字符串
|
||||
*/
|
||||
function query_timestamp() {
|
||||
$url = $this->alipay_gateway_new."service=query_timestamp&partner=".trim(strtolower($this->alipay_config['partner']))."&_input_charset=".trim(strtolower($this->alipay_config['input_charset']));
|
||||
$encrypt_key = "";
|
||||
$doc = new \DOMDocument();
|
||||
$doc->load($url);
|
||||
$itemEncrypt_key = $doc->getElementsByTagName( "encrypt_key" );
|
||||
$encrypt_key = $itemEncrypt_key->item(0)->nodeValue;
|
||||
return $encrypt_key;
|
||||
}
|
||||
}
|
||||
?>
|
176
extend/alipay/Corefunction.php
Executable file
176
extend/alipay/Corefunction.php
Executable file
@ -0,0 +1,176 @@
|
||||
<?php
|
||||
/* *
|
||||
* 支付宝接口公用函数
|
||||
* 详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件
|
||||
* 版本:3.3
|
||||
* 日期:2012-07-19
|
||||
* 说明:
|
||||
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
|
||||
* 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
|
||||
*/
|
||||
|
||||
/**
|
||||
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
|
||||
* @param $para 需要拼接的数组
|
||||
* return 拼接完成以后的字符串
|
||||
*/
|
||||
function createLinkstring($para) {
|
||||
$arg = "";
|
||||
while (list ($key, $val) = each ($para)) {
|
||||
$arg.=$key."=".$val."&";
|
||||
}
|
||||
//去掉最后一个&字符
|
||||
$arg = substr($arg,0,count($arg)-2);
|
||||
|
||||
//如果存在转义字符,那么去掉转义
|
||||
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
|
||||
|
||||
return $arg;
|
||||
}
|
||||
/**
|
||||
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
|
||||
* @param $para 需要拼接的数组
|
||||
* return 拼接完成以后的字符串
|
||||
*/
|
||||
function createLinkstringUrlencode($para) {
|
||||
$arg = "";
|
||||
while (list ($key, $val) = each ($para)) {
|
||||
$arg.=$key."=".urlencode($val)."&";
|
||||
}
|
||||
//去掉最后一个&字符
|
||||
$arg = substr($arg,0,count($arg)-2);
|
||||
|
||||
//如果存在转义字符,那么去掉转义
|
||||
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
|
||||
|
||||
return $arg;
|
||||
}
|
||||
/**
|
||||
* 除去数组中的空值和签名参数
|
||||
* @param $para 签名参数组
|
||||
* return 去掉空值与签名参数后的新签名参数组
|
||||
*/
|
||||
function paraFilter($para) {
|
||||
$para_filter = array();
|
||||
while (list ($key, $val) = each ($para)) {
|
||||
if($key == "sign" || $key == "sign_type" || $val == "")continue;
|
||||
else $para_filter[$key] = $para[$key];
|
||||
}
|
||||
return $para_filter;
|
||||
}
|
||||
/**
|
||||
* 对数组排序
|
||||
* @param $para 排序前的数组
|
||||
* return 排序后的数组
|
||||
*/
|
||||
function argSort($para) {
|
||||
ksort($para);
|
||||
reset($para);
|
||||
return $para;
|
||||
}
|
||||
/**
|
||||
* 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
|
||||
* 注意:服务器需要开通fopen配置
|
||||
* @param $word 要写入日志里的文本内容 默认值:空值
|
||||
*/
|
||||
function logResult($word='') {
|
||||
$fp = fopen("log.txt","a");
|
||||
flock($fp, LOCK_EX) ;
|
||||
fwrite($fp,"执行日期:".strftime("%Y%m%d%H%M%S",time())."\n".$word."\n");
|
||||
flock($fp, LOCK_UN);
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 远程获取数据,POST模式
|
||||
* 注意:
|
||||
* 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
|
||||
* 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
|
||||
* @param $url 指定URL完整路径地址
|
||||
* @param $cacert_url 指定当前工作目录绝对路径
|
||||
* @param $para 请求的数据
|
||||
* @param $input_charset 编码格式。默认值:空值
|
||||
* return 远程输出的数据
|
||||
*/
|
||||
function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {
|
||||
|
||||
if (trim($input_charset) != '') {
|
||||
$url = $url."_input_charset=".$input_charset;
|
||||
}
|
||||
$curl = curl_init($url);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
|
||||
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
|
||||
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
|
||||
curl_setopt($curl,CURLOPT_POST,true); // post传输数据
|
||||
curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据
|
||||
$responseText = curl_exec($curl);
|
||||
//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
|
||||
curl_close($curl);
|
||||
|
||||
return $responseText;
|
||||
}
|
||||
|
||||
/**
|
||||
* 远程获取数据,GET模式
|
||||
* 注意:
|
||||
* 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
|
||||
* 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
|
||||
* @param $url 指定URL完整路径地址
|
||||
* @param $cacert_url 指定当前工作目录绝对路径
|
||||
* return 远程输出的数据
|
||||
*/
|
||||
function getHttpResponseGET($url,$cacert_url) {
|
||||
$curl = curl_init($url);
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
|
||||
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
|
||||
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
|
||||
$responseText = curl_exec($curl);
|
||||
//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
|
||||
curl_close($curl);
|
||||
|
||||
return $responseText;
|
||||
}
|
||||
|
||||
/**
|
||||
* 实现多种字符编码方式
|
||||
* @param $input 需要编码的字符串
|
||||
* @param $_output_charset 输出的编码格式
|
||||
* @param $_input_charset 输入的编码格式
|
||||
* return 编码后的字符串
|
||||
*/
|
||||
function charsetEncode($input,$_output_charset ,$_input_charset) {
|
||||
$output = "";
|
||||
if(!isset($_output_charset) )$_output_charset = $_input_charset;
|
||||
if($_input_charset == $_output_charset || $input ==null ) {
|
||||
$output = $input;
|
||||
} elseif (function_exists("mb_convert_encoding")) {
|
||||
$output = mb_convert_encoding($input,$_output_charset,$_input_charset);
|
||||
} elseif(function_exists("iconv")) {
|
||||
$output = iconv($_input_charset,$_output_charset,$input);
|
||||
} else die("sorry, you have no libs support for charset change.");
|
||||
return $output;
|
||||
}
|
||||
/**
|
||||
* 实现多种字符解码方式
|
||||
* @param $input 需要解码的字符串
|
||||
* @param $_output_charset 输出的解码格式
|
||||
* @param $_input_charset 输入的解码格式
|
||||
* return 解码后的字符串
|
||||
*/
|
||||
function charsetDecode($input,$_input_charset ,$_output_charset) {
|
||||
$output = "";
|
||||
if(!isset($_input_charset) )$_input_charset = $_input_charset ;
|
||||
if($_input_charset == $_output_charset || $input ==null ) {
|
||||
$output = $input;
|
||||
} elseif (function_exists("mb_convert_encoding")) {
|
||||
$output = mb_convert_encoding($input,$_output_charset,$_input_charset);
|
||||
} elseif(function_exists("iconv")) {
|
||||
$output = iconv($_input_charset,$_output_charset,$input);
|
||||
} else die("sorry, you have no libs support for charset changes.");
|
||||
return $output;
|
||||
}
|
||||
?>
|
32
extend/alipay/Md5function.php
Executable file
32
extend/alipay/Md5function.php
Executable file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 签名字符串
|
||||
* @param $prestr 需要签名的字符串
|
||||
* @param $key 私钥
|
||||
* return 签名结果
|
||||
*/
|
||||
function md5Sign($prestr, $key) {
|
||||
$prestr = $prestr . $key;
|
||||
return md5($prestr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证签名
|
||||
* @param $prestr 需要签名的字符串
|
||||
* @param $sign 签名结果
|
||||
* @param $key 私钥
|
||||
* return 签名结果
|
||||
*/
|
||||
function md5Verify($prestr, $sign, $key) {
|
||||
$prestr = $prestr . $key;
|
||||
$mysgin = md5($prestr);
|
||||
|
||||
if($mysgin == $sign) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
231
extend/alipay/aop/AlipayMobilePublicMultiMediaClient.php
Executable file
231
extend/alipay/aop/AlipayMobilePublicMultiMediaClient.php
Executable file
@ -0,0 +1,231 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 多媒体文件客户端
|
||||
* @author yikai.hu
|
||||
* @version $Id: AlipayMobilePublicMultiMediaClient.php, v 0.1 Aug 15, 2014 10:19:01 AM yikai.hu Exp $
|
||||
*/
|
||||
|
||||
//namespace alipay\api ;
|
||||
|
||||
include("AlipayMobilePublicMultiMediaExecute.php");
|
||||
|
||||
|
||||
class AlipayMobilePublicMultiMediaClient{
|
||||
|
||||
private $DEFAULT_CHARSET = 'UTF-8';
|
||||
private $METHOD_POST = "POST";
|
||||
private $METHOD_GET = "GET";
|
||||
private $SIGN = 'sign'; //get name
|
||||
|
||||
private $timeout = 10 ;// 超时时间
|
||||
private $serverUrl;
|
||||
private $appId;
|
||||
private $privateKey;
|
||||
private $prodCode;
|
||||
private $format = 'json'; //todo
|
||||
private $sign_type = 'RSA'; //todo
|
||||
|
||||
private $charset;
|
||||
private $apiVersion = "1.0";
|
||||
private $apiMethodName = "alipay.mobile.public.multimedia.download";
|
||||
private $media_id = "L21pZnMvVDFQV3hYWGJKWFhYYUNucHJYP3Q9YW13ZiZ4c2lnPTU0MzRhYjg1ZTZjNWJmZTMxZGJiNjIzNDdjMzFkNzkw575";
|
||||
//此处写死的,实际开发中,请传入
|
||||
|
||||
private $connectTimeout = 3000;
|
||||
private $readTimeout = 15000;
|
||||
|
||||
|
||||
|
||||
function __construct($serverUrl = '', $appId = '', $partner_private_key = '', $format = '', $charset = 'GBK'){
|
||||
$this -> serverUrl = $serverUrl;
|
||||
$this -> appId = $appId;
|
||||
$this -> privateKey = $partner_private_key;
|
||||
$this -> format = $format;
|
||||
$this -> charset = $charset;
|
||||
}
|
||||
|
||||
/**
|
||||
* getContents 获取网址内容
|
||||
* @param $request
|
||||
* @return text | bin
|
||||
*/
|
||||
public function getContents(){
|
||||
//自己的服务器如果没有 curl,可用:fsockopen() 等
|
||||
|
||||
|
||||
//1:
|
||||
//2: 私钥格式
|
||||
$datas = array(
|
||||
"app_id" => $this -> appId,
|
||||
"method" => $this -> METHOD_POST,
|
||||
"sign_type" => $this -> sign_type,
|
||||
"version" => $this -> apiVersion,
|
||||
"timestamp" => date('Y-m-d H:i:s') ,//yyyy-MM-dd HH:mm:ss
|
||||
"biz_content" => '{"mediaId":"'. $this -> media_id .'"}',
|
||||
"charset" => $this -> charset
|
||||
);
|
||||
|
||||
|
||||
|
||||
//要提交的数据
|
||||
$data_sign = $this -> buildGetUrl( $datas );
|
||||
|
||||
$post_data = $data_sign;
|
||||
//初始化 curl
|
||||
$ch = curl_init();
|
||||
//设置目标服务器
|
||||
curl_setopt($ch, CURLOPT_URL, $this -> serverUrl );
|
||||
curl_setopt($ch, CURLOPT_HEADER, TRUE);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
//超时时间
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, $this-> timeout);
|
||||
|
||||
if( $this-> METHOD_POST == 'POST'){
|
||||
// post数据
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
// post的变量
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$output = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
|
||||
echo $output;
|
||||
|
||||
//分离头部
|
||||
//list($header, $body) = explode("\r\n\r\n", $output, 2);
|
||||
$datas = explode("\r\n\r\n", $output, 2);
|
||||
$header = $datas[0];
|
||||
|
||||
if( $httpCode == '200'){
|
||||
$body = $datas[1];
|
||||
}else{
|
||||
$body = '';
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return $this -> execute( $header, $body, $httpCode );
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param $request
|
||||
* @return text | bin
|
||||
*/
|
||||
public function execute( $header = '', $body = '', $httpCode = '' ){
|
||||
$exe = new AlipayMobilePublicMultiMediaExecute( $header, $body, $httpCode );
|
||||
return $exe;
|
||||
}
|
||||
|
||||
public function buildGetUrl( $query = array() ){
|
||||
|
||||
if( ! is_array( $query ) ){
|
||||
//exit;
|
||||
}
|
||||
|
||||
//排序参数,
|
||||
$data = $this -> buildQuery( $query );
|
||||
|
||||
|
||||
|
||||
// 私钥密码
|
||||
$passphrase = '';
|
||||
$key_width = 64;
|
||||
|
||||
//私钥
|
||||
$privateKey = $this -> privateKey;
|
||||
$p_key = array();
|
||||
//如果私钥是 1行
|
||||
if( ! stripos( $privateKey, "\n" ) ){
|
||||
$i = 0;
|
||||
while( $key_str = substr( $privateKey , $i * $key_width , $key_width) ){
|
||||
$p_key[] = $key_str;
|
||||
$i ++ ;
|
||||
}
|
||||
}else{
|
||||
//echo '一行?';
|
||||
}
|
||||
$privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" . implode("\n", $p_key) ;
|
||||
$privateKey = $privateKey ."\n-----END RSA PRIVATE KEY-----";
|
||||
|
||||
// echo "\n\n私钥:\n";
|
||||
// echo( $privateKey );
|
||||
// echo "\n\n\n";
|
||||
|
||||
//私钥
|
||||
$private_id = openssl_pkey_get_private( $privateKey , $passphrase);
|
||||
|
||||
|
||||
// 签名
|
||||
$signature = '';
|
||||
|
||||
if("RSA2"==$this->sign_type){
|
||||
|
||||
openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA256 );
|
||||
}else{
|
||||
|
||||
openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA1 );
|
||||
}
|
||||
|
||||
openssl_free_key( $private_id );
|
||||
|
||||
//加密后的内容通常含有特殊字符,需要编码转换下
|
||||
$signature = base64_encode($signature);
|
||||
|
||||
$signature = urlencode( $signature );
|
||||
|
||||
//$signature = 'XjUN6YM1Mc9HXebKMv7GTLy7gmyhktyOgKk2/Jf+cz4DtP6udkzTdpkjW2j/Z4ZSD7xD6CNYI1Spz4yS93HPT0a5X9LgFWYY8SaADqe+ArXg+FBSiTwUz49SE//Xd9+LEiIRsSFkbpkuiGoO6mqJmB7vXjlD5lx6qCM3nb41wb8=';
|
||||
|
||||
$out = $data .'&'. $this -> SIGN .'='. $signature;
|
||||
|
||||
// echo "\n\n 加密后:\n";
|
||||
// echo( $out );
|
||||
// echo "\n\n\n";
|
||||
|
||||
return $out ;
|
||||
}
|
||||
|
||||
/*
|
||||
* 查询参数排序 a-z
|
||||
* */
|
||||
public function buildQuery( $query ){
|
||||
if ( !$query ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
//将要 参数 排序
|
||||
ksort( $query );
|
||||
|
||||
//重新组装参数
|
||||
$params = array();
|
||||
foreach($query as $key => $value){
|
||||
$params[] = $key .'='. $value ;
|
||||
}
|
||||
$data = implode('&', $params);
|
||||
|
||||
return $data;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
108
extend/alipay/aop/AlipayMobilePublicMultiMediaExecute.php
Executable file
108
extend/alipay/aop/AlipayMobilePublicMultiMediaExecute.php
Executable file
@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 多媒体文件客户端
|
||||
* @author yuanwai.wang
|
||||
* @version $Id: AlipayMobilePublicMultiMediaExecute.php, v 0.1 Aug 15, 2014 10:19:01 AM yuanwai.wang Exp $
|
||||
*/
|
||||
|
||||
//namespace alipay\api ;
|
||||
|
||||
|
||||
|
||||
class AlipayMobilePublicMultiMediaExecute{
|
||||
|
||||
private $code = 200 ;
|
||||
private $msg = '';
|
||||
private $body = '';
|
||||
private $params = '';
|
||||
|
||||
private $fileSuffix = array(
|
||||
"image/jpeg" => 'jpg', //+
|
||||
"text/plain" => 'text'
|
||||
);
|
||||
|
||||
/*
|
||||
* @$header : 头部
|
||||
* */
|
||||
function __construct( $header, $body, $httpCode ){
|
||||
$this -> code = $httpCode;
|
||||
$this -> msg = '';
|
||||
$this -> params = $header ;
|
||||
$this -> body = $body;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return text | bin
|
||||
*/
|
||||
public function getCode(){
|
||||
return $this -> code ;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return text | bin
|
||||
*/
|
||||
public function getMsg(){
|
||||
return $this -> msg ;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return text | bin
|
||||
*/
|
||||
public function getType(){
|
||||
$subject = $this -> params ;
|
||||
$pattern = '/Content\-Type:([^;]+)/';
|
||||
preg_match($pattern, $subject, $matches);
|
||||
if( $matches ){
|
||||
$type = $matches[1];
|
||||
}else{
|
||||
$type = 'application/download';
|
||||
}
|
||||
|
||||
return str_replace( ' ', '', $type );
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return text | bin
|
||||
*/
|
||||
public function getContentLength(){
|
||||
$subject = $this -> params ;
|
||||
$pattern = '/Content-Length:\s*([^\n]+)/';
|
||||
preg_match($pattern, $subject, $matches);
|
||||
return (int)( isset($matches[1] ) ? $matches[1] : '' );
|
||||
}
|
||||
|
||||
|
||||
public function getFileSuffix( $fileType ){
|
||||
$type = isset( $this -> fileSuffix[ $fileType ] ) ? $this -> fileSuffix[ $fileType ] : 'text/plain' ;
|
||||
if( !$type ){
|
||||
$type = 'json';
|
||||
}
|
||||
return $type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @return text | bin
|
||||
*/
|
||||
public function getBody(){
|
||||
//header('Content-type: image/jpeg');
|
||||
return $this -> body ;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取参数
|
||||
* @return text | bin
|
||||
*/
|
||||
public function getParams(){
|
||||
return $this -> params ;
|
||||
}
|
||||
|
||||
|
||||
}
|
1216
extend/alipay/aop/AopClient.php
Executable file
1216
extend/alipay/aop/AopClient.php
Executable file
File diff suppressed because it is too large
Load Diff
71
extend/alipay/aop/AopEncrypt.php
Executable file
71
extend/alipay/aop/AopEncrypt.php
Executable file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* 加密工具类
|
||||
*
|
||||
* User: jiehua
|
||||
* Date: 16/3/30
|
||||
* Time: 下午3:25
|
||||
*/
|
||||
|
||||
/**
|
||||
* 加密方法
|
||||
* @param string $str
|
||||
* @return string
|
||||
*/
|
||||
function encrypt($str,$screct_key){
|
||||
//AES, 128 模式加密数据 CBC
|
||||
$screct_key = base64_decode($screct_key);
|
||||
$str = trim($str);
|
||||
$str = addPKCS7Padding($str);
|
||||
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);
|
||||
$encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);
|
||||
return base64_encode($encrypt_str);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密方法
|
||||
* @param string $str
|
||||
* @return string
|
||||
*/
|
||||
function decrypt($str,$screct_key){
|
||||
//AES, 128 模式加密数据 CBC
|
||||
$str = base64_decode($str);
|
||||
$screct_key = base64_decode($screct_key);
|
||||
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);
|
||||
$encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);
|
||||
$encrypt_str = trim($encrypt_str);
|
||||
|
||||
$encrypt_str = stripPKSC7Padding($encrypt_str);
|
||||
return $encrypt_str;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充算法
|
||||
* @param string $source
|
||||
* @return string
|
||||
*/
|
||||
function addPKCS7Padding($source){
|
||||
$source = trim($source);
|
||||
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
|
||||
|
||||
$pad = $block - (strlen($source) % $block);
|
||||
if ($pad <= $block) {
|
||||
$char = chr($pad);
|
||||
$source .= str_repeat($char, $pad);
|
||||
}
|
||||
return $source;
|
||||
}
|
||||
/**
|
||||
* 移去填充算法
|
||||
* @param string $source
|
||||
* @return string
|
||||
*/
|
||||
function stripPKSC7Padding($source){
|
||||
$source = trim($source);
|
||||
$char = substr($source, -1);
|
||||
$num = ord($char);
|
||||
if($num==62)return $source;
|
||||
$source = substr($source,0,-$num);
|
||||
return $source;
|
||||
}
|
19
extend/alipay/aop/EncryptParseItem.php
Executable file
19
extend/alipay/aop/EncryptParseItem.php
Executable file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* TODO 补充说明
|
||||
*
|
||||
* User: jiehua
|
||||
* Date: 16/3/30
|
||||
* Time: 下午8:55
|
||||
*/
|
||||
|
||||
class EncryptParseItem {
|
||||
|
||||
|
||||
public $startIndex;
|
||||
|
||||
public $endIndex;
|
||||
|
||||
public $encryptContent;
|
||||
|
||||
}
|
18
extend/alipay/aop/EncryptResponseData.php
Executable file
18
extend/alipay/aop/EncryptResponseData.php
Executable file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* TODO 补充说明
|
||||
*
|
||||
* User: jiehua
|
||||
* Date: 16/3/30
|
||||
* Time: 下午8:51
|
||||
*/
|
||||
|
||||
class EncryptResponseData {
|
||||
|
||||
|
||||
public $realContent;
|
||||
|
||||
public $returnContent;
|
||||
|
||||
|
||||
}
|
16
extend/alipay/aop/SignData.php
Executable file
16
extend/alipay/aop/SignData.php
Executable file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: jiehua
|
||||
* Date: 15/5/2
|
||||
* Time: 下午6:21
|
||||
*/
|
||||
|
||||
class SignData {
|
||||
|
||||
public $signSourceData=null;
|
||||
|
||||
|
||||
public $sign=null;
|
||||
|
||||
}
|
118
extend/alipay/aop/request/AlipayAccountExrateAdviceAcceptRequest.php
Executable file
118
extend/alipay/aop/request/AlipayAccountExrateAdviceAcceptRequest.php
Executable file
@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.account.exrate.advice.accept request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2016-05-23 14:55:42
|
||||
*/
|
||||
class AlipayAccountExrateAdviceAcceptRequest
|
||||
{
|
||||
/**
|
||||
* 标准的兑换交易受理接口
|
||||
**/
|
||||
private $bizContent;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setBizContent($bizContent)
|
||||
{
|
||||
$this->bizContent = $bizContent;
|
||||
$this->apiParas["biz_content"] = $bizContent;
|
||||
}
|
||||
|
||||
public function getBizContent()
|
||||
{
|
||||
return $this->bizContent;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.account.exrate.advice.accept";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
118
extend/alipay/aop/request/AlipayAccountExrateAllclientrateQueryRequest.php
Executable file
118
extend/alipay/aop/request/AlipayAccountExrateAllclientrateQueryRequest.php
Executable file
@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.account.exrate.allclientrate.query request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2016-05-23 14:55:48
|
||||
*/
|
||||
class AlipayAccountExrateAllclientrateQueryRequest
|
||||
{
|
||||
/**
|
||||
* 查询客户的所有币种对最新有效汇率
|
||||
**/
|
||||
private $bizContent;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setBizContent($bizContent)
|
||||
{
|
||||
$this->bizContent = $bizContent;
|
||||
$this->apiParas["biz_content"] = $bizContent;
|
||||
}
|
||||
|
||||
public function getBizContent()
|
||||
{
|
||||
return $this->bizContent;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.account.exrate.allclientrate.query";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
118
extend/alipay/aop/request/AlipayAccountExrateRatequeryRequest.php
Executable file
118
extend/alipay/aop/request/AlipayAccountExrateRatequeryRequest.php
Executable file
@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.account.exrate.ratequery request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2017-03-27 18:11:27
|
||||
*/
|
||||
class AlipayAccountExrateRatequeryRequest
|
||||
{
|
||||
/**
|
||||
* 对于部分签约境内当面付的商家,为了能够在境外进行推广,因此需要汇率进行币种之间的转换,本接口提供此业务场景下的汇率查询服务
|
||||
**/
|
||||
private $bizContent;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setBizContent($bizContent)
|
||||
{
|
||||
$this->bizContent = $bizContent;
|
||||
$this->apiParas["biz_content"] = $bizContent;
|
||||
}
|
||||
|
||||
public function getBizContent()
|
||||
{
|
||||
return $this->bizContent;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.account.exrate.ratequery";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
118
extend/alipay/aop/request/AlipayAccountExrateTraderequestCreateRequest.php
Executable file
118
extend/alipay/aop/request/AlipayAccountExrateTraderequestCreateRequest.php
Executable file
@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.account.exrate.traderequest.create request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2017-07-20 10:41:44
|
||||
*/
|
||||
class AlipayAccountExrateTraderequestCreateRequest
|
||||
{
|
||||
/**
|
||||
* 受理外汇交易请求
|
||||
**/
|
||||
private $bizContent;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setBizContent($bizContent)
|
||||
{
|
||||
$this->bizContent = $bizContent;
|
||||
$this->apiParas["biz_content"] = $bizContent;
|
||||
}
|
||||
|
||||
public function getBizContent()
|
||||
{
|
||||
return $this->bizContent;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.account.exrate.traderequest.create";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
171
extend/alipay/aop/request/AlipayAcquireCancelRequest.php
Executable file
171
extend/alipay/aop/request/AlipayAcquireCancelRequest.php
Executable file
@ -0,0 +1,171 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.acquire.cancel request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2014-06-12 17:17:06
|
||||
*/
|
||||
class AlipayAcquireCancelRequest
|
||||
{
|
||||
/**
|
||||
* 操作员ID。
|
||||
**/
|
||||
private $operatorId;
|
||||
|
||||
/**
|
||||
* 操作员的类型:
|
||||
0:支付宝操作员
|
||||
1:商户的操作员
|
||||
如果传入其它值或者为空,则默认设置为1
|
||||
**/
|
||||
private $operatorType;
|
||||
|
||||
/**
|
||||
* 支付宝合作商户网站唯一订单号。
|
||||
**/
|
||||
private $outTradeNo;
|
||||
|
||||
/**
|
||||
* 该交易在支付宝系统中的交易流水号。
|
||||
最短16位,最长64位。
|
||||
如果同时传了out_trade_no和trade_no,则以trade_no为准。
|
||||
**/
|
||||
private $tradeNo;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setOperatorId($operatorId)
|
||||
{
|
||||
$this->operatorId = $operatorId;
|
||||
$this->apiParas["operator_id"] = $operatorId;
|
||||
}
|
||||
|
||||
public function getOperatorId()
|
||||
{
|
||||
return $this->operatorId;
|
||||
}
|
||||
|
||||
public function setOperatorType($operatorType)
|
||||
{
|
||||
$this->operatorType = $operatorType;
|
||||
$this->apiParas["operator_type"] = $operatorType;
|
||||
}
|
||||
|
||||
public function getOperatorType()
|
||||
{
|
||||
return $this->operatorType;
|
||||
}
|
||||
|
||||
public function setOutTradeNo($outTradeNo)
|
||||
{
|
||||
$this->outTradeNo = $outTradeNo;
|
||||
$this->apiParas["out_trade_no"] = $outTradeNo;
|
||||
}
|
||||
|
||||
public function getOutTradeNo()
|
||||
{
|
||||
return $this->outTradeNo;
|
||||
}
|
||||
|
||||
public function setTradeNo($tradeNo)
|
||||
{
|
||||
$this->tradeNo = $tradeNo;
|
||||
$this->apiParas["trade_no"] = $tradeNo;
|
||||
}
|
||||
|
||||
public function getTradeNo()
|
||||
{
|
||||
return $this->tradeNo;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.acquire.cancel";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
152
extend/alipay/aop/request/AlipayAcquireCloseRequest.php
Executable file
152
extend/alipay/aop/request/AlipayAcquireCloseRequest.php
Executable file
@ -0,0 +1,152 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.acquire.close request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2014-06-12 17:17:06
|
||||
*/
|
||||
class AlipayAcquireCloseRequest
|
||||
{
|
||||
/**
|
||||
* 卖家的操作员ID
|
||||
**/
|
||||
private $operatorId;
|
||||
|
||||
/**
|
||||
* 支付宝合作商户网站唯一订单号
|
||||
**/
|
||||
private $outTradeNo;
|
||||
|
||||
/**
|
||||
* 该交易在支付宝系统中的交易流水号。
|
||||
最短16位,最长64位。
|
||||
如果同时传了out_trade_no和trade_no,则以trade_no为准
|
||||
**/
|
||||
private $tradeNo;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setOperatorId($operatorId)
|
||||
{
|
||||
$this->operatorId = $operatorId;
|
||||
$this->apiParas["operator_id"] = $operatorId;
|
||||
}
|
||||
|
||||
public function getOperatorId()
|
||||
{
|
||||
return $this->operatorId;
|
||||
}
|
||||
|
||||
public function setOutTradeNo($outTradeNo)
|
||||
{
|
||||
$this->outTradeNo = $outTradeNo;
|
||||
$this->apiParas["out_trade_no"] = $outTradeNo;
|
||||
}
|
||||
|
||||
public function getOutTradeNo()
|
||||
{
|
||||
return $this->outTradeNo;
|
||||
}
|
||||
|
||||
public function setTradeNo($tradeNo)
|
||||
{
|
||||
$this->tradeNo = $tradeNo;
|
||||
$this->apiParas["trade_no"] = $tradeNo;
|
||||
}
|
||||
|
||||
public function getTradeNo()
|
||||
{
|
||||
return $this->tradeNo;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.acquire.close";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
550
extend/alipay/aop/request/AlipayAcquireCreateandpayRequest.php
Executable file
550
extend/alipay/aop/request/AlipayAcquireCreateandpayRequest.php
Executable file
@ -0,0 +1,550 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.acquire.createandpay request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2016-11-22 19:31:24
|
||||
*/
|
||||
class AlipayAcquireCreateandpayRequest
|
||||
{
|
||||
/**
|
||||
* 证书签名
|
||||
**/
|
||||
private $alipayCaRequest;
|
||||
|
||||
/**
|
||||
* 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
|
||||
**/
|
||||
private $body;
|
||||
|
||||
/**
|
||||
* 买家支付宝账号,可以为email或者手机号。
|
||||
**/
|
||||
private $buyerEmail;
|
||||
|
||||
/**
|
||||
* 买家支付宝账号对应的支付宝唯一用户号。
|
||||
以2088开头的纯16位数字。
|
||||
**/
|
||||
private $buyerId;
|
||||
|
||||
/**
|
||||
* 描述多渠道收单的渠道明细信息,json格式,具体请参见“4.5 渠道明细说明”。
|
||||
**/
|
||||
private $channelParameters;
|
||||
|
||||
/**
|
||||
* 订单金额币种。
|
||||
目前只支持传入156(人民币)。
|
||||
如果为空,则默认设置为156。
|
||||
**/
|
||||
private $currency;
|
||||
|
||||
/**
|
||||
* 动态ID。
|
||||
**/
|
||||
private $dynamicId;
|
||||
|
||||
/**
|
||||
* 动态ID类型:
|
||||
􀁺
|
||||
soundwave:声波
|
||||
􀁺
|
||||
qrcode:二维码
|
||||
􀁺
|
||||
barcode:条码
|
||||
􀁺
|
||||
wave_code:声波,等同soundwave
|
||||
􀁺
|
||||
qr_code:二维码,等同qrcode
|
||||
􀁺
|
||||
bar_code:条码,等同barcode
|
||||
建议取值wave_code、qr_code、bar_code。
|
||||
**/
|
||||
private $dynamicIdType;
|
||||
|
||||
/**
|
||||
* 用于商户的特定业务信息的传递,只有商户与支付宝约定了传递此参数且约定了参数含义,此参数才有效。
|
||||
比如可传递声波支付场景下的门店ID等信息,以json格式传输,具体请参见“4.7 业务扩展参数说明”。
|
||||
**/
|
||||
private $extendParams;
|
||||
|
||||
/**
|
||||
* xml或json
|
||||
**/
|
||||
private $formatType;
|
||||
|
||||
/**
|
||||
* 描述商品明细信息,json格式,具体请参见“4.3 商品明细说明”。
|
||||
**/
|
||||
private $goodsDetail;
|
||||
|
||||
/**
|
||||
* 设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。
|
||||
取值范围:1m~15d。
|
||||
m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
|
||||
该参数数值不接受小数点,如1.5h,可转换为90m。
|
||||
该功能需要联系支付宝配置关闭时间。
|
||||
**/
|
||||
private $itBPay;
|
||||
|
||||
/**
|
||||
* 描述预付卡相关的明细信息,json格式,具体请参见“4.8 预付卡明细参数说明”。
|
||||
**/
|
||||
private $mcardParameters;
|
||||
|
||||
/**
|
||||
* 卖家的操作员ID。
|
||||
**/
|
||||
private $operatorId;
|
||||
|
||||
/**
|
||||
* 操作员的类型:
|
||||
􀁺
|
||||
0:支付宝操作员
|
||||
􀁺
|
||||
1:商户的操作员
|
||||
如果传入其它值或者为空,则默认设置为1。
|
||||
**/
|
||||
private $operatorType;
|
||||
|
||||
/**
|
||||
* 支付宝合作商户网站唯一订单号。
|
||||
**/
|
||||
private $outTradeNo;
|
||||
|
||||
/**
|
||||
* 订单中商品的单价。
|
||||
如果请求时传入本参数,则必须满足total_fee=price×quantity的条件。
|
||||
**/
|
||||
private $price;
|
||||
|
||||
/**
|
||||
* 订单中商品的数量。
|
||||
如果请求时传入本参数,则必须满足total_fee=price×quantity的条件。
|
||||
**/
|
||||
private $quantity;
|
||||
|
||||
/**
|
||||
* 业务关联ID集合,用于放置商户的订单号、支付流水号等信息,json格式,具体请参见“4.6 业务关联ID集合说明”。
|
||||
**/
|
||||
private $refIds;
|
||||
|
||||
/**
|
||||
* 描述分账明细信息,json格式,具体请参见“4.4 分账明细说明”。
|
||||
**/
|
||||
private $royaltyParameters;
|
||||
|
||||
/**
|
||||
* 卖家的分账类型,目前只支持传入ROYALTY(普通分账类型)。
|
||||
**/
|
||||
private $royaltyType;
|
||||
|
||||
/**
|
||||
* 卖家支付宝账号,可以为email或者手机号。
|
||||
如果seller_id不为空,则以seller_id的值作为卖家账号,忽略本参数。
|
||||
**/
|
||||
private $sellerEmail;
|
||||
|
||||
/**
|
||||
* 卖家支付宝账号对应的支付宝唯一用户号。
|
||||
以2088开头的纯16位数字。
|
||||
如果和seller_email同时为空,则本参数默认填充partner的值。
|
||||
**/
|
||||
private $sellerId;
|
||||
|
||||
/**
|
||||
* 收银台页面上,商品展示的超链接。
|
||||
**/
|
||||
private $showUrl;
|
||||
|
||||
/**
|
||||
* 商品的标题/交易标题/订单标题/订单关键字等。
|
||||
该参数最长为128个汉字。
|
||||
**/
|
||||
private $subject;
|
||||
|
||||
/**
|
||||
* 该笔订单的资金总额,取值范围[0.01,100000000],精确到小数点后2位。
|
||||
**/
|
||||
private $totalFee;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setAlipayCaRequest($alipayCaRequest)
|
||||
{
|
||||
$this->alipayCaRequest = $alipayCaRequest;
|
||||
$this->apiParas["alipay_ca_request"] = $alipayCaRequest;
|
||||
}
|
||||
|
||||
public function getAlipayCaRequest()
|
||||
{
|
||||
return $this->alipayCaRequest;
|
||||
}
|
||||
|
||||
public function setBody($body)
|
||||
{
|
||||
$this->body = $body;
|
||||
$this->apiParas["body"] = $body;
|
||||
}
|
||||
|
||||
public function getBody()
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function setBuyerEmail($buyerEmail)
|
||||
{
|
||||
$this->buyerEmail = $buyerEmail;
|
||||
$this->apiParas["buyer_email"] = $buyerEmail;
|
||||
}
|
||||
|
||||
public function getBuyerEmail()
|
||||
{
|
||||
return $this->buyerEmail;
|
||||
}
|
||||
|
||||
public function setBuyerId($buyerId)
|
||||
{
|
||||
$this->buyerId = $buyerId;
|
||||
$this->apiParas["buyer_id"] = $buyerId;
|
||||
}
|
||||
|
||||
public function getBuyerId()
|
||||
{
|
||||
return $this->buyerId;
|
||||
}
|
||||
|
||||
public function setChannelParameters($channelParameters)
|
||||
{
|
||||
$this->channelParameters = $channelParameters;
|
||||
$this->apiParas["channel_parameters"] = $channelParameters;
|
||||
}
|
||||
|
||||
public function getChannelParameters()
|
||||
{
|
||||
return $this->channelParameters;
|
||||
}
|
||||
|
||||
public function setCurrency($currency)
|
||||
{
|
||||
$this->currency = $currency;
|
||||
$this->apiParas["currency"] = $currency;
|
||||
}
|
||||
|
||||
public function getCurrency()
|
||||
{
|
||||
return $this->currency;
|
||||
}
|
||||
|
||||
public function setDynamicId($dynamicId)
|
||||
{
|
||||
$this->dynamicId = $dynamicId;
|
||||
$this->apiParas["dynamic_id"] = $dynamicId;
|
||||
}
|
||||
|
||||
public function getDynamicId()
|
||||
{
|
||||
return $this->dynamicId;
|
||||
}
|
||||
|
||||
public function setDynamicIdType($dynamicIdType)
|
||||
{
|
||||
$this->dynamicIdType = $dynamicIdType;
|
||||
$this->apiParas["dynamic_id_type"] = $dynamicIdType;
|
||||
}
|
||||
|
||||
public function getDynamicIdType()
|
||||
{
|
||||
return $this->dynamicIdType;
|
||||
}
|
||||
|
||||
public function setExtendParams($extendParams)
|
||||
{
|
||||
$this->extendParams = $extendParams;
|
||||
$this->apiParas["extend_params"] = $extendParams;
|
||||
}
|
||||
|
||||
public function getExtendParams()
|
||||
{
|
||||
return $this->extendParams;
|
||||
}
|
||||
|
||||
public function setFormatType($formatType)
|
||||
{
|
||||
$this->formatType = $formatType;
|
||||
$this->apiParas["format_type"] = $formatType;
|
||||
}
|
||||
|
||||
public function getFormatType()
|
||||
{
|
||||
return $this->formatType;
|
||||
}
|
||||
|
||||
public function setGoodsDetail($goodsDetail)
|
||||
{
|
||||
$this->goodsDetail = $goodsDetail;
|
||||
$this->apiParas["goods_detail"] = $goodsDetail;
|
||||
}
|
||||
|
||||
public function getGoodsDetail()
|
||||
{
|
||||
return $this->goodsDetail;
|
||||
}
|
||||
|
||||
public function setItBPay($itBPay)
|
||||
{
|
||||
$this->itBPay = $itBPay;
|
||||
$this->apiParas["it_b_pay"] = $itBPay;
|
||||
}
|
||||
|
||||
public function getItBPay()
|
||||
{
|
||||
return $this->itBPay;
|
||||
}
|
||||
|
||||
public function setMcardParameters($mcardParameters)
|
||||
{
|
||||
$this->mcardParameters = $mcardParameters;
|
||||
$this->apiParas["mcard_parameters"] = $mcardParameters;
|
||||
}
|
||||
|
||||
public function getMcardParameters()
|
||||
{
|
||||
return $this->mcardParameters;
|
||||
}
|
||||
|
||||
public function setOperatorId($operatorId)
|
||||
{
|
||||
$this->operatorId = $operatorId;
|
||||
$this->apiParas["operator_id"] = $operatorId;
|
||||
}
|
||||
|
||||
public function getOperatorId()
|
||||
{
|
||||
return $this->operatorId;
|
||||
}
|
||||
|
||||
public function setOperatorType($operatorType)
|
||||
{
|
||||
$this->operatorType = $operatorType;
|
||||
$this->apiParas["operator_type"] = $operatorType;
|
||||
}
|
||||
|
||||
public function getOperatorType()
|
||||
{
|
||||
return $this->operatorType;
|
||||
}
|
||||
|
||||
public function setOutTradeNo($outTradeNo)
|
||||
{
|
||||
$this->outTradeNo = $outTradeNo;
|
||||
$this->apiParas["out_trade_no"] = $outTradeNo;
|
||||
}
|
||||
|
||||
public function getOutTradeNo()
|
||||
{
|
||||
return $this->outTradeNo;
|
||||
}
|
||||
|
||||
public function setPrice($price)
|
||||
{
|
||||
$this->price = $price;
|
||||
$this->apiParas["price"] = $price;
|
||||
}
|
||||
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->price;
|
||||
}
|
||||
|
||||
public function setQuantity($quantity)
|
||||
{
|
||||
$this->quantity = $quantity;
|
||||
$this->apiParas["quantity"] = $quantity;
|
||||
}
|
||||
|
||||
public function getQuantity()
|
||||
{
|
||||
return $this->quantity;
|
||||
}
|
||||
|
||||
public function setRefIds($refIds)
|
||||
{
|
||||
$this->refIds = $refIds;
|
||||
$this->apiParas["ref_ids"] = $refIds;
|
||||
}
|
||||
|
||||
public function getRefIds()
|
||||
{
|
||||
return $this->refIds;
|
||||
}
|
||||
|
||||
public function setRoyaltyParameters($royaltyParameters)
|
||||
{
|
||||
$this->royaltyParameters = $royaltyParameters;
|
||||
$this->apiParas["royalty_parameters"] = $royaltyParameters;
|
||||
}
|
||||
|
||||
public function getRoyaltyParameters()
|
||||
{
|
||||
return $this->royaltyParameters;
|
||||
}
|
||||
|
||||
public function setRoyaltyType($royaltyType)
|
||||
{
|
||||
$this->royaltyType = $royaltyType;
|
||||
$this->apiParas["royalty_type"] = $royaltyType;
|
||||
}
|
||||
|
||||
public function getRoyaltyType()
|
||||
{
|
||||
return $this->royaltyType;
|
||||
}
|
||||
|
||||
public function setSellerEmail($sellerEmail)
|
||||
{
|
||||
$this->sellerEmail = $sellerEmail;
|
||||
$this->apiParas["seller_email"] = $sellerEmail;
|
||||
}
|
||||
|
||||
public function getSellerEmail()
|
||||
{
|
||||
return $this->sellerEmail;
|
||||
}
|
||||
|
||||
public function setSellerId($sellerId)
|
||||
{
|
||||
$this->sellerId = $sellerId;
|
||||
$this->apiParas["seller_id"] = $sellerId;
|
||||
}
|
||||
|
||||
public function getSellerId()
|
||||
{
|
||||
return $this->sellerId;
|
||||
}
|
||||
|
||||
public function setShowUrl($showUrl)
|
||||
{
|
||||
$this->showUrl = $showUrl;
|
||||
$this->apiParas["show_url"] = $showUrl;
|
||||
}
|
||||
|
||||
public function getShowUrl()
|
||||
{
|
||||
return $this->showUrl;
|
||||
}
|
||||
|
||||
public function setSubject($subject)
|
||||
{
|
||||
$this->subject = $subject;
|
||||
$this->apiParas["subject"] = $subject;
|
||||
}
|
||||
|
||||
public function getSubject()
|
||||
{
|
||||
return $this->subject;
|
||||
}
|
||||
|
||||
public function setTotalFee($totalFee)
|
||||
{
|
||||
$this->totalFee = $totalFee;
|
||||
$this->apiParas["total_fee"] = $totalFee;
|
||||
}
|
||||
|
||||
public function getTotalFee()
|
||||
{
|
||||
return $this->totalFee;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.acquire.createandpay";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
402
extend/alipay/aop/request/AlipayAcquirePrecreateRequest.php
Executable file
402
extend/alipay/aop/request/AlipayAcquirePrecreateRequest.php
Executable file
@ -0,0 +1,402 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.acquire.precreate request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2014-05-28 11:57:10
|
||||
*/
|
||||
class AlipayAcquirePrecreateRequest
|
||||
{
|
||||
/**
|
||||
* 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body
|
||||
**/
|
||||
private $body;
|
||||
|
||||
/**
|
||||
* 描述多渠道收单的渠道明细信息,json格式
|
||||
**/
|
||||
private $channelParameters;
|
||||
|
||||
/**
|
||||
* 订单金额币种。目前只支持传入156(人民币)。
|
||||
如果为空,则默认设置为156
|
||||
**/
|
||||
private $currency;
|
||||
|
||||
/**
|
||||
* 公用业务扩展信息。用于商户的特定业务信息的传递,只有商户与支付宝约定了传递此参数且约定了参数含义,此参数才有效。
|
||||
比如可传递二维码支付场景下的门店ID等信息,以json格式传输。
|
||||
**/
|
||||
private $extendParams;
|
||||
|
||||
/**
|
||||
* 描述商品明细信息,json格式。
|
||||
**/
|
||||
private $goodsDetail;
|
||||
|
||||
/**
|
||||
* 订单支付超时时间。设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。
|
||||
取值范围:1m~15d。
|
||||
m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
|
||||
该参数数值不接受小数点,如1.5h,可转换为90m。
|
||||
该功能需要联系支付宝配置关闭时间。
|
||||
**/
|
||||
private $itBPay;
|
||||
|
||||
/**
|
||||
* 操作员的类型:
|
||||
0:支付宝操作员
|
||||
1:商户的操作员
|
||||
如果传入其它值或者为空,则默认设置为1
|
||||
**/
|
||||
private $operatorCode;
|
||||
|
||||
/**
|
||||
* 卖家的操作员ID
|
||||
**/
|
||||
private $operatorId;
|
||||
|
||||
/**
|
||||
* 支付宝合作商户网站唯一订单号
|
||||
**/
|
||||
private $outTradeNo;
|
||||
|
||||
/**
|
||||
* 订单中商品的单价。
|
||||
如果请求时传入本参数,则必须满足total_fee=price×quantity的条件
|
||||
**/
|
||||
private $price;
|
||||
|
||||
/**
|
||||
* 订单中商品的数量。
|
||||
如果请求时传入本参数,则必须满足total_fee=price×quantity的条件
|
||||
**/
|
||||
private $quantity;
|
||||
|
||||
/**
|
||||
* 分账信息。
|
||||
描述分账明细信息,json格式
|
||||
**/
|
||||
private $royaltyParameters;
|
||||
|
||||
/**
|
||||
* 分账类型。卖家的分账类型,目前只支持传入ROYALTY(普通分账类型)
|
||||
**/
|
||||
private $royaltyType;
|
||||
|
||||
/**
|
||||
* 卖家支付宝账号,可以为email或者手机号。如果seller_id不为空,则以seller_id的值作为卖家账号,忽略本参数
|
||||
**/
|
||||
private $sellerEmail;
|
||||
|
||||
/**
|
||||
* 卖家支付宝账号对应的支付宝唯一用户号,以2088开头的纯16位数字。如果和seller_email同时为空,则本参数默认填充partner的值
|
||||
**/
|
||||
private $sellerId;
|
||||
|
||||
/**
|
||||
* 收银台页面上,商品展示的超链接
|
||||
**/
|
||||
private $showUrl;
|
||||
|
||||
/**
|
||||
* 商品购买
|
||||
**/
|
||||
private $subject;
|
||||
|
||||
/**
|
||||
* 订单金额。该笔订单的资金总额,取值范围[0.01,100000000],精确到小数点后2位。
|
||||
**/
|
||||
private $totalFee;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setBody($body)
|
||||
{
|
||||
$this->body = $body;
|
||||
$this->apiParas["body"] = $body;
|
||||
}
|
||||
|
||||
public function getBody()
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function setChannelParameters($channelParameters)
|
||||
{
|
||||
$this->channelParameters = $channelParameters;
|
||||
$this->apiParas["channel_parameters"] = $channelParameters;
|
||||
}
|
||||
|
||||
public function getChannelParameters()
|
||||
{
|
||||
return $this->channelParameters;
|
||||
}
|
||||
|
||||
public function setCurrency($currency)
|
||||
{
|
||||
$this->currency = $currency;
|
||||
$this->apiParas["currency"] = $currency;
|
||||
}
|
||||
|
||||
public function getCurrency()
|
||||
{
|
||||
return $this->currency;
|
||||
}
|
||||
|
||||
public function setExtendParams($extendParams)
|
||||
{
|
||||
$this->extendParams = $extendParams;
|
||||
$this->apiParas["extend_params"] = $extendParams;
|
||||
}
|
||||
|
||||
public function getExtendParams()
|
||||
{
|
||||
return $this->extendParams;
|
||||
}
|
||||
|
||||
public function setGoodsDetail($goodsDetail)
|
||||
{
|
||||
$this->goodsDetail = $goodsDetail;
|
||||
$this->apiParas["goods_detail"] = $goodsDetail;
|
||||
}
|
||||
|
||||
public function getGoodsDetail()
|
||||
{
|
||||
return $this->goodsDetail;
|
||||
}
|
||||
|
||||
public function setItBPay($itBPay)
|
||||
{
|
||||
$this->itBPay = $itBPay;
|
||||
$this->apiParas["it_b_pay"] = $itBPay;
|
||||
}
|
||||
|
||||
public function getItBPay()
|
||||
{
|
||||
return $this->itBPay;
|
||||
}
|
||||
|
||||
public function setOperatorCode($operatorCode)
|
||||
{
|
||||
$this->operatorCode = $operatorCode;
|
||||
$this->apiParas["operator_code"] = $operatorCode;
|
||||
}
|
||||
|
||||
public function getOperatorCode()
|
||||
{
|
||||
return $this->operatorCode;
|
||||
}
|
||||
|
||||
public function setOperatorId($operatorId)
|
||||
{
|
||||
$this->operatorId = $operatorId;
|
||||
$this->apiParas["operator_id"] = $operatorId;
|
||||
}
|
||||
|
||||
public function getOperatorId()
|
||||
{
|
||||
return $this->operatorId;
|
||||
}
|
||||
|
||||
public function setOutTradeNo($outTradeNo)
|
||||
{
|
||||
$this->outTradeNo = $outTradeNo;
|
||||
$this->apiParas["out_trade_no"] = $outTradeNo;
|
||||
}
|
||||
|
||||
public function getOutTradeNo()
|
||||
{
|
||||
return $this->outTradeNo;
|
||||
}
|
||||
|
||||
public function setPrice($price)
|
||||
{
|
||||
$this->price = $price;
|
||||
$this->apiParas["price"] = $price;
|
||||
}
|
||||
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->price;
|
||||
}
|
||||
|
||||
public function setQuantity($quantity)
|
||||
{
|
||||
$this->quantity = $quantity;
|
||||
$this->apiParas["quantity"] = $quantity;
|
||||
}
|
||||
|
||||
public function getQuantity()
|
||||
{
|
||||
return $this->quantity;
|
||||
}
|
||||
|
||||
public function setRoyaltyParameters($royaltyParameters)
|
||||
{
|
||||
$this->royaltyParameters = $royaltyParameters;
|
||||
$this->apiParas["royalty_parameters"] = $royaltyParameters;
|
||||
}
|
||||
|
||||
public function getRoyaltyParameters()
|
||||
{
|
||||
return $this->royaltyParameters;
|
||||
}
|
||||
|
||||
public function setRoyaltyType($royaltyType)
|
||||
{
|
||||
$this->royaltyType = $royaltyType;
|
||||
$this->apiParas["royalty_type"] = $royaltyType;
|
||||
}
|
||||
|
||||
public function getRoyaltyType()
|
||||
{
|
||||
return $this->royaltyType;
|
||||
}
|
||||
|
||||
public function setSellerEmail($sellerEmail)
|
||||
{
|
||||
$this->sellerEmail = $sellerEmail;
|
||||
$this->apiParas["seller_email"] = $sellerEmail;
|
||||
}
|
||||
|
||||
public function getSellerEmail()
|
||||
{
|
||||
return $this->sellerEmail;
|
||||
}
|
||||
|
||||
public function setSellerId($sellerId)
|
||||
{
|
||||
$this->sellerId = $sellerId;
|
||||
$this->apiParas["seller_id"] = $sellerId;
|
||||
}
|
||||
|
||||
public function getSellerId()
|
||||
{
|
||||
return $this->sellerId;
|
||||
}
|
||||
|
||||
public function setShowUrl($showUrl)
|
||||
{
|
||||
$this->showUrl = $showUrl;
|
||||
$this->apiParas["show_url"] = $showUrl;
|
||||
}
|
||||
|
||||
public function getShowUrl()
|
||||
{
|
||||
return $this->showUrl;
|
||||
}
|
||||
|
||||
public function setSubject($subject)
|
||||
{
|
||||
$this->subject = $subject;
|
||||
$this->apiParas["subject"] = $subject;
|
||||
}
|
||||
|
||||
public function getSubject()
|
||||
{
|
||||
return $this->subject;
|
||||
}
|
||||
|
||||
public function setTotalFee($totalFee)
|
||||
{
|
||||
$this->totalFee = $totalFee;
|
||||
$this->apiParas["total_fee"] = $totalFee;
|
||||
}
|
||||
|
||||
public function getTotalFee()
|
||||
{
|
||||
return $this->totalFee;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.acquire.precreate";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
136
extend/alipay/aop/request/AlipayAcquireQueryRequest.php
Executable file
136
extend/alipay/aop/request/AlipayAcquireQueryRequest.php
Executable file
@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.acquire.query request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2014-05-28 11:58:01
|
||||
*/
|
||||
class AlipayAcquireQueryRequest
|
||||
{
|
||||
/**
|
||||
* 支付宝合作商户网站唯一订单号
|
||||
**/
|
||||
private $outTradeNo;
|
||||
|
||||
/**
|
||||
* 该交易在支付宝系统中的交易流水号。
|
||||
最短16位,最长64位。
|
||||
如果同时传了out_trade_no和trade_no,则以trade_no为准。
|
||||
**/
|
||||
private $tradeNo;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setOutTradeNo($outTradeNo)
|
||||
{
|
||||
$this->outTradeNo = $outTradeNo;
|
||||
$this->apiParas["out_trade_no"] = $outTradeNo;
|
||||
}
|
||||
|
||||
public function getOutTradeNo()
|
||||
{
|
||||
return $this->outTradeNo;
|
||||
}
|
||||
|
||||
public function setTradeNo($tradeNo)
|
||||
{
|
||||
$this->tradeNo = $tradeNo;
|
||||
$this->apiParas["trade_no"] = $tradeNo;
|
||||
}
|
||||
|
||||
public function getTradeNo()
|
||||
{
|
||||
return $this->tradeNo;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.acquire.query";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
236
extend/alipay/aop/request/AlipayAcquireRefundRequest.php
Executable file
236
extend/alipay/aop/request/AlipayAcquireRefundRequest.php
Executable file
@ -0,0 +1,236 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.acquire.refund request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2014-06-12 17:17:03
|
||||
*/
|
||||
class AlipayAcquireRefundRequest
|
||||
{
|
||||
/**
|
||||
* 卖家的操作员ID。
|
||||
**/
|
||||
private $operatorId;
|
||||
|
||||
/**
|
||||
* 操作员的类型:
|
||||
0:支付宝操作员
|
||||
1:商户的操作员
|
||||
如果传入其它值或者为空,则默认设置为1。
|
||||
**/
|
||||
private $operatorType;
|
||||
|
||||
/**
|
||||
* 商户退款请求单号,用以标识本次交易的退款请求。
|
||||
如果不传入本参数,则以out_trade_no填充本参数的值。同时,认为本次请求为全额退款,要求退款金额和交易支付金额一致。
|
||||
**/
|
||||
private $outRequestNo;
|
||||
|
||||
/**
|
||||
* 商户网站唯一订单号
|
||||
**/
|
||||
private $outTradeNo;
|
||||
|
||||
/**
|
||||
* 业务关联ID集合,用于放置商户的退款单号、退款流水号等信息,json格式
|
||||
**/
|
||||
private $refIds;
|
||||
|
||||
/**
|
||||
* 退款金额;退款金额不能大于订单金额,全额退款必须与订单金额一致。
|
||||
**/
|
||||
private $refundAmount;
|
||||
|
||||
/**
|
||||
* 退款原因说明。
|
||||
**/
|
||||
private $refundReason;
|
||||
|
||||
/**
|
||||
* 该交易在支付宝系统中的交易流水号。
|
||||
最短16位,最长64位。
|
||||
如果同时传了out_trade_no和trade_no,则以trade_no为准
|
||||
**/
|
||||
private $tradeNo;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setOperatorId($operatorId)
|
||||
{
|
||||
$this->operatorId = $operatorId;
|
||||
$this->apiParas["operator_id"] = $operatorId;
|
||||
}
|
||||
|
||||
public function getOperatorId()
|
||||
{
|
||||
return $this->operatorId;
|
||||
}
|
||||
|
||||
public function setOperatorType($operatorType)
|
||||
{
|
||||
$this->operatorType = $operatorType;
|
||||
$this->apiParas["operator_type"] = $operatorType;
|
||||
}
|
||||
|
||||
public function getOperatorType()
|
||||
{
|
||||
return $this->operatorType;
|
||||
}
|
||||
|
||||
public function setOutRequestNo($outRequestNo)
|
||||
{
|
||||
$this->outRequestNo = $outRequestNo;
|
||||
$this->apiParas["out_request_no"] = $outRequestNo;
|
||||
}
|
||||
|
||||
public function getOutRequestNo()
|
||||
{
|
||||
return $this->outRequestNo;
|
||||
}
|
||||
|
||||
public function setOutTradeNo($outTradeNo)
|
||||
{
|
||||
$this->outTradeNo = $outTradeNo;
|
||||
$this->apiParas["out_trade_no"] = $outTradeNo;
|
||||
}
|
||||
|
||||
public function getOutTradeNo()
|
||||
{
|
||||
return $this->outTradeNo;
|
||||
}
|
||||
|
||||
public function setRefIds($refIds)
|
||||
{
|
||||
$this->refIds = $refIds;
|
||||
$this->apiParas["ref_ids"] = $refIds;
|
||||
}
|
||||
|
||||
public function getRefIds()
|
||||
{
|
||||
return $this->refIds;
|
||||
}
|
||||
|
||||
public function setRefundAmount($refundAmount)
|
||||
{
|
||||
$this->refundAmount = $refundAmount;
|
||||
$this->apiParas["refund_amount"] = $refundAmount;
|
||||
}
|
||||
|
||||
public function getRefundAmount()
|
||||
{
|
||||
return $this->refundAmount;
|
||||
}
|
||||
|
||||
public function setRefundReason($refundReason)
|
||||
{
|
||||
$this->refundReason = $refundReason;
|
||||
$this->apiParas["refund_reason"] = $refundReason;
|
||||
}
|
||||
|
||||
public function getRefundReason()
|
||||
{
|
||||
return $this->refundReason;
|
||||
}
|
||||
|
||||
public function setTradeNo($tradeNo)
|
||||
{
|
||||
$this->tradeNo = $tradeNo;
|
||||
$this->apiParas["trade_no"] = $tradeNo;
|
||||
}
|
||||
|
||||
public function getTradeNo()
|
||||
{
|
||||
return $this->tradeNo;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.acquire.refund";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
118
extend/alipay/aop/request/AlipayAppTokenGetRequest.php
Executable file
118
extend/alipay/aop/request/AlipayAppTokenGetRequest.php
Executable file
@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.app.token.get request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2017-04-13 19:13:06
|
||||
*/
|
||||
class AlipayAppTokenGetRequest
|
||||
{
|
||||
/**
|
||||
* 应用安全码
|
||||
**/
|
||||
private $secret;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setSecret($secret)
|
||||
{
|
||||
$this->secret = $secret;
|
||||
$this->apiParas["secret"] = $secret;
|
||||
}
|
||||
|
||||
public function getSecret()
|
||||
{
|
||||
return $this->secret;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.app.token.get";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
170
extend/alipay/aop/request/AlipayAssetAccountBindRequest.php
Executable file
170
extend/alipay/aop/request/AlipayAssetAccountBindRequest.php
Executable file
@ -0,0 +1,170 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.asset.account.bind request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2016-10-11 19:38:33
|
||||
*/
|
||||
class AlipayAssetAccountBindRequest
|
||||
{
|
||||
/**
|
||||
* 绑定场景,目前仅支持如下:
|
||||
wechat:微信公众平台;
|
||||
transport:物流转运平台;
|
||||
appOneBind:一对一app绑定;
|
||||
注意:必须是这些值,区分大小写。
|
||||
**/
|
||||
private $bindScene;
|
||||
|
||||
/**
|
||||
* 使用该app提供用户信息的商户,可以和app相同。
|
||||
**/
|
||||
private $providerId;
|
||||
|
||||
/**
|
||||
* 用户在商户网站的会员标识。商户需确保其唯一性,不可变更。
|
||||
**/
|
||||
private $providerUserId;
|
||||
|
||||
/**
|
||||
* 用户在商户网站的会员名(登录号或昵称)。
|
||||
**/
|
||||
private $providerUserName;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setBindScene($bindScene)
|
||||
{
|
||||
$this->bindScene = $bindScene;
|
||||
$this->apiParas["bind_scene"] = $bindScene;
|
||||
}
|
||||
|
||||
public function getBindScene()
|
||||
{
|
||||
return $this->bindScene;
|
||||
}
|
||||
|
||||
public function setProviderId($providerId)
|
||||
{
|
||||
$this->providerId = $providerId;
|
||||
$this->apiParas["provider_id"] = $providerId;
|
||||
}
|
||||
|
||||
public function getProviderId()
|
||||
{
|
||||
return $this->providerId;
|
||||
}
|
||||
|
||||
public function setProviderUserId($providerUserId)
|
||||
{
|
||||
$this->providerUserId = $providerUserId;
|
||||
$this->apiParas["provider_user_id"] = $providerUserId;
|
||||
}
|
||||
|
||||
public function getProviderUserId()
|
||||
{
|
||||
return $this->providerUserId;
|
||||
}
|
||||
|
||||
public function setProviderUserName($providerUserName)
|
||||
{
|
||||
$this->providerUserName = $providerUserName;
|
||||
$this->apiParas["provider_user_name"] = $providerUserName;
|
||||
}
|
||||
|
||||
public function getProviderUserName()
|
||||
{
|
||||
return $this->providerUserName;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.asset.account.bind";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
135
extend/alipay/aop/request/AlipayAssetAccountGetRequest.php
Executable file
135
extend/alipay/aop/request/AlipayAssetAccountGetRequest.php
Executable file
@ -0,0 +1,135 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.asset.account.get request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2016-10-11 19:39:10
|
||||
*/
|
||||
class AlipayAssetAccountGetRequest
|
||||
{
|
||||
/**
|
||||
* 使用该app提供用户信息的商户,可以和app相同。
|
||||
**/
|
||||
private $providerId;
|
||||
|
||||
/**
|
||||
* 用户在商户网站的会员标识。商户需确保其唯一性,不可变更。
|
||||
注意:根据provider_user_id查询时该值不可空。
|
||||
**/
|
||||
private $providerUserId;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setProviderId($providerId)
|
||||
{
|
||||
$this->providerId = $providerId;
|
||||
$this->apiParas["provider_id"] = $providerId;
|
||||
}
|
||||
|
||||
public function getProviderId()
|
||||
{
|
||||
return $this->providerId;
|
||||
}
|
||||
|
||||
public function setProviderUserId($providerUserId)
|
||||
{
|
||||
$this->providerUserId = $providerUserId;
|
||||
$this->apiParas["provider_user_id"] = $providerUserId;
|
||||
}
|
||||
|
||||
public function getProviderUserId()
|
||||
{
|
||||
return $this->providerUserId;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.asset.account.get";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
134
extend/alipay/aop/request/AlipayAssetAccountUnbindRequest.php
Executable file
134
extend/alipay/aop/request/AlipayAssetAccountUnbindRequest.php
Executable file
@ -0,0 +1,134 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.asset.account.unbind request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2016-10-11 19:38:49
|
||||
*/
|
||||
class AlipayAssetAccountUnbindRequest
|
||||
{
|
||||
/**
|
||||
* 业务参数 使用该app提供用户信息的商户在支付宝签约时的支付宝账户userID,可以和app相同。
|
||||
**/
|
||||
private $providerId;
|
||||
|
||||
/**
|
||||
* 用户在商户网站的会员标识。商户需确保其唯一性,不可变更。
|
||||
**/
|
||||
private $providerUserId;
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function setProviderId($providerId)
|
||||
{
|
||||
$this->providerId = $providerId;
|
||||
$this->apiParas["provider_id"] = $providerId;
|
||||
}
|
||||
|
||||
public function getProviderId()
|
||||
{
|
||||
return $this->providerId;
|
||||
}
|
||||
|
||||
public function setProviderUserId($providerUserId)
|
||||
{
|
||||
$this->providerUserId = $providerUserId;
|
||||
$this->apiParas["provider_user_id"] = $providerUserId;
|
||||
}
|
||||
|
||||
public function getProviderUserId()
|
||||
{
|
||||
return $this->providerUserId;
|
||||
}
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.asset.account.unbind";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
103
extend/alipay/aop/request/AlipayAssetPointBalanceQueryRequest.php
Executable file
103
extend/alipay/aop/request/AlipayAssetPointBalanceQueryRequest.php
Executable file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
/**
|
||||
* ALIPAY API: alipay.asset.point.balance.query request
|
||||
*
|
||||
* @author auto create
|
||||
* @since 1.0, 2017-04-14 19:00:47
|
||||
*/
|
||||
class AlipayAssetPointBalanceQueryRequest
|
||||
{
|
||||
|
||||
private $apiParas = array();
|
||||
private $terminalType;
|
||||
private $terminalInfo;
|
||||
private $prodCode;
|
||||
private $apiVersion="1.0";
|
||||
private $notifyUrl;
|
||||
private $returnUrl;
|
||||
private $needEncrypt=false;
|
||||
|
||||
|
||||
public function getApiMethodName()
|
||||
{
|
||||
return "alipay.asset.point.balance.query";
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->notifyUrl=$notifyUrl;
|
||||
}
|
||||
|
||||
public function getNotifyUrl()
|
||||
{
|
||||
return $this->notifyUrl;
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->returnUrl=$returnUrl;
|
||||
}
|
||||
|
||||
public function getReturnUrl()
|
||||
{
|
||||
return $this->returnUrl;
|
||||
}
|
||||
|
||||
public function getApiParas()
|
||||
{
|
||||
return $this->apiParas;
|
||||
}
|
||||
|
||||
public function getTerminalType()
|
||||
{
|
||||
return $this->terminalType;
|
||||
}
|
||||
|
||||
public function setTerminalType($terminalType)
|
||||
{
|
||||
$this->terminalType = $terminalType;
|
||||
}
|
||||
|
||||
public function getTerminalInfo()
|
||||
{
|
||||
return $this->terminalInfo;
|
||||
}
|
||||
|
||||
public function setTerminalInfo($terminalInfo)
|
||||
{
|
||||
$this->terminalInfo = $terminalInfo;
|
||||
}
|
||||
|
||||
public function getProdCode()
|
||||
{
|
||||
return $this->prodCode;
|
||||
}
|
||||
|
||||
public function setProdCode($prodCode)
|
||||
{
|
||||
$this->prodCode = $prodCode;
|
||||
}
|
||||
|
||||
public function setApiVersion($apiVersion)
|
||||
{
|
||||
$this->apiVersion=$apiVersion;
|
||||
}
|
||||
|
||||
public function getApiVersion()
|
||||
{
|
||||
return $this->apiVersion;
|
||||
}
|
||||
|
||||
public function setNeedEncrypt($needEncrypt)
|
||||
{
|
||||
|
||||
$this->needEncrypt=$needEncrypt;
|
||||
|
||||
}
|
||||
|
||||
public function getNeedEncrypt()
|
||||
{
|
||||
return $this->needEncrypt;
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user