Files
pingan_unionpay_new/app/Http/Controllers/SkyxuController.php
2021-02-19 10:51:21 +08:00

146 lines
3.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use League\Flysystem\Sftp\SftpAdapter;
use League\Flysystem\Filesystem;
use XuanChen\UnionPay\Check;
use XuanChen\UnionPay\Models\UnionpayLog;
class SkyxuController extends Controller
{
/**
* Notes: 链接sftp
* @Author: 玄尘
* @Date : 2021/1/26 8:18
*/
public function sftp()
{
$app = app('xuanchen.unionpay.check');
$app->date = '20190722';
$app->login();
$app->hasFile();
$app->start();
dump($app->msg);
die();
$path = '/home/wwwroot/pingan/upload/';
$name = 'JYMX66007320190722.txt';
$adapter = new SftpAdapter([
'host' => '123.57.16.212',
'port' => 22,
'username' => 'root',
'password' => 'Anetadmin1',
'privateKey' => '',
'passphrase' => '',
'root' => $path,
'timeout' => 10,
'directoryPerm' => 0755,
]);
$filesystem = new Filesystem($adapter);
$lists = $filesystem->listContents();
$content = $filesystem->read($name);
$content = str_replace("\n", "br", $content);
dump($content);
$content = explode("br", $content);
foreach ($content as $item) {
$array = explode('|', $item);
foreach ($array as $item) {
echo $item . "<br>";
}
echo '----------------------------------------' . "<br>";
}
dd($content);
}
public function index(Request $request)
{
if (method_exists($this, $request->action)) {
return call_user_func_array([$this, $request->action], [$request->all()]);
} else {
dd('未找到方法');
}
}
/**
* Notes: 获取sign
* @Author: 玄尘
* @Date : 2021/2/19 8:17
*/
public function checkUnionLog()
{
$url = 'http://pac.ysd-bs.com/api/V1/unionpay/query';
$info = UnionpayLog::find(177);
$in_source = $info->in_source;
$out_source = $info->out_source;
$res = $this->http($in_source, $url);
dd($res);
dump($info->in_source);
dump($info->out_source);
}
/**
* Notes: 校验签名
* @Author: 玄尘
* @Date : 2021/2/19 9:03
* @param $params
* @throws \Exception
*/
public function checkSign($params)
{
$sign = $params['sign'];
$signStr = $params['str'];
$app = app('xuanchen.unionpay');
$out = false;
if (isset($params['isout'])) {
$out = true;
}
$public_key = $app->getPublic($out);
$pub_key_id = openssl_get_publickey($public_key);
dump('sign: ' . $sign);
dump('signStr: ' . $signStr);
$sign = $app->hexXbin($sign);
if (!$sign) {
throw new \Exception('签名错误');
}
if ($pub_key_id) {
$result = (bool) openssl_verify($signStr, $sign, $pub_key_id);
openssl_free_key($pub_key_id);
} else {
throw new \Exception('私钥格式有误');
}
$res_str = ($result === true) ? '成功' : '失败';
dd('验签结果:' . $res_str);
}
public function http($data, $url)
{
$client = new Client();
$response = $client->request('POST', $url,
[
'form_params' => $data,
'http_errors' => false,
]);
$body = $response->getBody();
$content = $body->getContents();
$result = json_decode($content, true);
return $result;
}
}