避也避不开的支付宝SDKalipay-sdk-php-all
- 既不支持composer也没有命名空间
aop\request
目录下居然有4797个文件
为了支持低版本的php 做了如下处理
目录结构
extend
├─aop(github下载即可)
│ ├─request
│ └─schema
├─include.php
└─aoplibs.php(此文件自动生成)
include.php
<?php
spl_autoload_register(
function ($class) {
static $classes = null;
$path = __DIR__ . DIRECTORY_SEPARATOR . 'aop';
$classes = _create_libs($path);
if (isset($classes[$class])) {
require $path . $classes[$class];
}
}
);
function _create_libs($path)
{
$libfile = dirname($path) . '/aoplibs.php';
if (is_file($libfile)) {
return current(include($libfile));
}
$files = array_merge(
glob($path . '/*.php', GLOB_BRACE),
glob($path . '/schema/*.php'),
glob($path . '/request/*.php')
);
$libs = [];
foreach ($files as $k => $v) {
$_p = pathinfo($v);
$libs[$_p['filename']] = str_replace($path, '', $_p['dirname'] . '/' . $_p['basename']);
}
file_put_contents($libfile, '<?php' . PHP_EOL . 'return array(' . var_export($libs, true) . ')' . PHP_EOL . '?>');
return $libs;
}
使用
<?php
namespace xxx
use AopClient;
use AlipayConfig;
use AlipayTradeQueryRequest;
include 'extend/include.php';
$aop = new AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = '你的appid';
$aop->rsaPrivateKey = '你的应用私钥';
$aop->alipayrsaPublicKey = '你的支付宝公钥';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset = 'utf-8';
$aop->format = 'json';
$request = new AlipayTradeQueryRequest ();
$request->setBizContent("{" .
"\"out_trade_no\":\"20150320010101001\"," .
"\"trade_no\":\"2014112611001004680 073956707\"," .
"\"org_pid\":\"2088101117952222\"," .
" \"query_options\":[" .
" \"TRADE_SETTE_INFO\"" .
" ]" .
" }");
$result = $aop->execute($request);
echo $result;