From 94de61fbda74bfe28fb85b5c5b8338252cd86d87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=80=E6=9C=AF=E8=80=81=E8=83=A1?= <1094551889@qq.com> Date: Wed, 23 Oct 2024 15:56:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- !.env => !!.env | 6 +- .env | 6 +- app/controller/IndexController.php | 5 +- app/controller/UserController.php | 2 + app/controller/api/PayManageController.php | 8 +- app/controller/api/PluginController.php | 42 ++++--- app/model/PayAccount.php | 2 +- config/extendconfig/payplugin.php | 121 +++++++++++++++------ config/payconfig/1001_7.php | 48 ++++++++ extend/payclient/ShouQianBa.php | 78 ++++++------- extend/payclient/payclient.zip | Bin 8302 -> 0 bytes view/pay_manage/index.html | 1 + view/user/index.html | 15 ++- 13 files changed, 229 insertions(+), 105 deletions(-) rename !.env => !!.env (71%) create mode 100644 config/payconfig/1001_7.php delete mode 100644 extend/payclient/payclient.zip diff --git a/!.env b/!!.env similarity index 71% rename from !.env rename to !!.env index 3410a9b..74406fb 100644 --- a/!.env +++ b/!!.env @@ -2,9 +2,9 @@ APP_DEBUG = true DB_TYPE = mysql DB_HOST = 127.0.0.1 -DB_NAME = mpay -DB_USER = admin -DB_PASS = Aa123456 +DB_NAME = test +DB_USER = test +DB_PASS = 123456 DB_PORT = 3306 DB_CHARSET = utf8 DB_PREFIX = mpay_ diff --git a/.env b/.env index 74406fb..3410a9b 100644 --- a/.env +++ b/.env @@ -2,9 +2,9 @@ APP_DEBUG = true DB_TYPE = mysql DB_HOST = 127.0.0.1 -DB_NAME = test -DB_USER = test -DB_PASS = 123456 +DB_NAME = mpay +DB_USER = admin +DB_PASS = Aa123456 DB_PORT = 3306 DB_CHARSET = utf8 DB_PREFIX = mpay_ diff --git a/app/controller/IndexController.php b/app/controller/IndexController.php index b75af60..6e8c573 100644 --- a/app/controller/IndexController.php +++ b/app/controller/IndexController.php @@ -3,6 +3,7 @@ namespace app\controller; use think\facade\View; +use payclient\LaKaLa; class IndexController { @@ -16,6 +17,8 @@ class IndexController } public function test() { - return request()->domain(); + $key = "0383d7088b6947b68e4a626af119e2bd"; + + return $key; } } diff --git a/app/controller/UserController.php b/app/controller/UserController.php index 14b5cc2..d860454 100644 --- a/app/controller/UserController.php +++ b/app/controller/UserController.php @@ -17,6 +17,8 @@ class UserController extends BaseController $userinfo = User::find(\session('userid'))->toArray(); View::assign($userinfo); View::assign('url', $this->request->domain()); + $sign = md5($userinfo['pid'] . $userinfo['secret_key']); + View::assign('orderurl', $this->request->domain() . "/checkOrder/{$userinfo['pid']}/{$sign}"); return View::fetch(); } // 登陆视图 diff --git a/app/controller/api/PayManageController.php b/app/controller/api/PayManageController.php index 7af59d0..62c260d 100644 --- a/app/controller/api/PayManageController.php +++ b/app/controller/api/PayManageController.php @@ -112,9 +112,9 @@ class PayManageController extends BaseController // 生成账号配置 private function createAccountConfig($acc) { - $platform = Platform::where('platform', $acc->getData('platform'))->find(); + $platform = \app\controller\api\PluginController::getPluginInfo($acc->getData('platform')); $user = User::where('pid', $acc->pid)->find(); - $query = var_export(\unserialize($platform->query), \true); + $query = var_export($platform['query'], \true); $config = << [ 'pid' => {$user->pid}, - 'key' => '$user->secret_key' + 'key' => '{$user->secret_key}' ], // 收款平台账号配置 'pay' => [ @@ -134,7 +134,7 @@ return [ // 收款平台 'platform' => '{$acc->getData('platform')}', // 插件类名 - 'payclass' => '{$platform->class_name}', + 'payclass' => '{$platform['class_name']}', // 账号 'account' => '{$acc->account}', // 密码 diff --git a/app/controller/api/PluginController.php b/app/controller/api/PluginController.php index db89c17..2eecc79 100644 --- a/app/controller/api/PluginController.php +++ b/app/controller/api/PluginController.php @@ -13,7 +13,7 @@ class PluginController extends BaseController // 获取插件列表 public function getPluginList() { - $plugin_config = $this->getPluginConfig(); + $plugin_config = self::getPluginConfig(); if ($plugin_config) { return json(['code' => 0, 'msg' => 'OK', 'count' => \count($plugin_config), 'data' => $plugin_config]); } else { @@ -38,7 +38,7 @@ class PluginController extends BaseController $config[$key] = $value; } } - $plugin_config = $this->getPluginConfig(); + $plugin_config = self::getPluginConfig(); $plugin_platform = $config['platform'] ?: ''; foreach ($plugin_config as $value) { if ($plugin_platform == $value['platform']) { @@ -52,7 +52,7 @@ class PluginController extends BaseController // 删除插件 public function delPlugin($plugin_name = '') { - $plugin_config = $this->getPluginConfig(); + $plugin_config = self::getPluginConfig(); $keys = []; foreach ($plugin_config as $index => $value) { if ($value['platform'] == $plugin_name) { @@ -69,12 +69,12 @@ class PluginController extends BaseController // 修改插件 public function setPlugin($platform = '', $option = []) { - $config = $this->getPluginConfig(); + $config = self::getPluginConfig(); if (!$platform) { - return 1; //'请选择插件' + return 1; // 请选择插件 } if (!$option) { - return 2; //请添加插件配置 + return 2; // 请添加插件配置 } foreach ($config as $index => $options) { if ($options['platform'] == $platform) { @@ -103,39 +103,35 @@ class PluginController extends BaseController public function pluginOption() { // 加载平台配置 - $config = $this->getPluginConfig(); + $config = self::getPluginConfig(); $option = []; foreach ($config as $value) { $option[] = ['platform' => $value['platform'], 'name' => $value['name']]; } return json($option); } - // 生成插件配置 - public function crtPlfConfig() + // 获取指定插件配置 + public static function getPluginInfo($platform = '') { - $info = Platform::where('state', 1)->field('platform, name')->select()->toArray(); - $data = []; - foreach ($info as $value) { - $data[$value['platform']] = $value['name']; - } - $config = View::fetch('tpl/platform_config', $data); - $path = "../config/extendconfig/platform.php"; - $res = \file_put_contents($path, $config); - if ($res) { - return \json(\backMsg(msg: '创建成功')); - } else { - return \json(\backMsg(1, '创建成功')); + $config = self::getPluginConfig(); + $info = []; + foreach ($config as $item) { + if ($item['platform'] == $platform) { + $info = $item; + break; + } } + return $info; } // 获取插件配置 - private function getPluginConfig(): array + private static function getPluginConfig(): array { $payplugin_path = config_path() . '/extendconfig/payplugin.php'; if (!file_exists($payplugin_path)) { return []; } // 加载插件配置 - $payplugin_config = require_once $payplugin_path; + $payplugin_config = require $payplugin_path; return $payplugin_config; } // 保存插件配置 diff --git a/app/model/PayAccount.php b/app/model/PayAccount.php index b699756..c5a24f9 100644 --- a/app/model/PayAccount.php +++ b/app/model/PayAccount.php @@ -32,7 +32,7 @@ class PayAccount extends BaseModel return []; } // 加载插件配置 - $payplugin_config = require_once $payplugin_path; + $payplugin_config = require $payplugin_path; $option = []; foreach ($payplugin_config as $config) { $option[$config['platform']] = $config['name']; diff --git a/config/extendconfig/payplugin.php b/config/extendconfig/payplugin.php index 2bf0228..4a0555c 100644 --- a/config/extendconfig/payplugin.php +++ b/config/extendconfig/payplugin.php @@ -3,9 +3,9 @@ // | 支付插件列表 // +---------------------------------------------------------------------- -return array ( - 0 => - array ( +return array( + 0 => + array( 'platform' => 'sqbpay', 'name' => '收钱吧', 'class_name' => 'ShouQianBa', @@ -13,10 +13,20 @@ return array ( 'describe' => '主流移动支付全能收 信用卡,花呗都能用,生意帮手收钱吧,移动收款就用它!', 'website' => 'https://www.shouqianba.com/', 'state' => 1, - 'query' => 'a:8:{s:8:"date_end";N;s:10:"date_start";N;s:4:"page";i:1;s:9:"page_size";i:10;s:13:"upayQueryType";i:0;s:6:"status";s:4:"2000";s:8:"store_sn";s:0:"";s:4:"type";s:2:"30";}', + 'query' => + array( + 'date_end' => NULL, + 'date_start' => NULL, + 'page' => 1, + 'page_size' => 10, + 'upayQueryType' => 0, + 'status' => '2000', + 'store_sn' => '', + 'type' => '30', + ), ), - 1 => - array ( + 1 => + array( 'platform' => 'storepay', 'name' => '数字门店', 'class_name' => 'ZhiHuiJingYing', @@ -24,10 +34,19 @@ return array ( 'describe' => '数字门店', 'website' => 'https://store.zhihuijingyingba.com/', 'state' => 1, - 'query' => 'a:7:{s:6:"pageNo";i:1;s:8:"pageSize";i:10;s:9:"payClient";i:4;s:6:"status";i:2;s:2:"_t";N;s:16:"createTime_begin";N;s:14:"createTime_end";N;}', + 'query' => + array( + 'pageNo' => 1, + 'pageSize' => 10, + 'payClient' => 4, + 'status' => 2, + '_t' => NULL, + 'createTime_begin' => NULL, + 'createTime_end' => NULL, + ), ), - 2 => - array ( + 2 => + array( 'platform' => 'ysepay', 'name' => '小Y经营', 'class_name' => 'Ysepay', @@ -35,10 +54,22 @@ return array ( 'describe' => '为商户和消费者提供安全、便捷、高效的支付产品与服务助力商户提升运营效率,实现数字化运营', 'website' => 'https://xym.ysepay.com/', 'state' => 1, - 'query' => 'a:10:{s:7:"storeNo";s:0:"";s:7:"bizType";i:3;s:7:"payType";s:0:"";s:11:"orderStatus";i:3;s:5:"trmNo";s:0:"";s:12:"operatorUser";s:0:"";s:13:"codeBoardCode";s:0:"";s:8:"pageSize";i:10;s:6:"pageNo";i:1;s:7:"orderNo";s:0:"";}', + 'query' => + array( + 'storeNo' => '', + 'bizType' => 3, + 'payType' => '', + 'orderStatus' => 3, + 'trmNo' => '', + 'operatorUser' => '', + 'codeBoardCode' => '', + 'pageSize' => 10, + 'pageNo' => 1, + 'orderNo' => '', + ), ), - 3 => - array ( + 3 => + array( 'platform' => 'mqpay', 'name' => '码钱', 'class_name' => 'MaQian', @@ -46,10 +77,24 @@ return array ( 'describe' => '码钱商管平台', 'website' => 'https://m.hkrt.cn/', 'state' => 1, - 'query' => 'a:12:{s:12:"terminalType";s:0:"";s:7:"payType";s:0:"";s:7:"payMode";s:0:"";s:11:"tradeStatus";s:1:"1";s:7:"tradeNo";s:0:"";s:7:"storeId";s:0:"";s:4:"page";i:1;s:4:"rows";i:10;s:7:"endDate";N;s:7:"endTime";N;s:9:"startDate";N;s:9:"startTime";N;}', + 'query' => + array( + 'terminalType' => '', + 'payType' => '', + 'payMode' => '', + 'tradeStatus' => '1', + 'tradeNo' => '', + 'storeId' => '', + 'page' => 1, + 'rows' => 10, + 'endDate' => NULL, + 'endTime' => NULL, + 'startDate' => NULL, + 'startTime' => NULL, + ), ), - 4 => - array ( + 4 => + array( 'platform' => 'lklpay', 'name' => '拉卡拉', 'class_name' => 'LaKaLa', @@ -57,10 +102,37 @@ return array ( 'describe' => '数字支付,更安全,更高效', 'website' => 'https://customer.lakala.com/', 'state' => 1, - 'query' => '', + 'query' => + array( + 'requestTime' => NULL, + 'systemCode' => 'MERDASH', + 'version' => '1.0', + 'openEntity' => NULL, + 'requestId' => NULL, + 'pageSize' => 10, + 'pageNum' => 1, + 'startTime' => NULL, + 'timeOption' => NULL, + 'tranSts' => 'SUCCESS', + 'orderNo' => NULL, + 'srefno' => NULL, + 'ornNo' => NULL, + 'endTime' => NULL, + 'startDate' => NULL, + 'endDate' => NULL, + 'page' => 1, + 'size' => 10, + 'merchantNos' => NULL, + 'merInnerNos' => NULL, + ), + 'param' => [ + 'openEntity' => '822581058121GYW', + 'merchantNos' => '822581058121GYW', + 'merInnerNos' => '4002022071722760372', + ], ), - 5 => - array ( + 5 => + array( 'platform' => 'sftpay', 'name' => '盛付通', 'class_name' => 'ShengPay', @@ -70,17 +142,4 @@ return array ( 'state' => 0, 'query' => '', ), - 6 => - array ( - 'platform' => 'haopay', - 'name' => '好支付', - 'class_name' => 'Haopay', - 'price' => 99, - 'describe' => '好支付', - 'website' => 'https://store.zhihuijingyingba.com/', - 'state' => 0, - 'query' => - array ( - ), - ), ); diff --git a/config/payconfig/1001_7.php b/config/payconfig/1001_7.php new file mode 100644 index 0000000..5d785e5 --- /dev/null +++ b/config/payconfig/1001_7.php @@ -0,0 +1,48 @@ + [ + 'pid' => 1001, + 'key' => '953c4d682d9ab148277b76a06e215ce7' + ], + // 收款平台账号配置 + 'pay' => [ + // 账号id + 'aid' => 7, + // 收款平台 + 'platform' => 'lklpay', + // 插件类名 + 'payclass' => 'LaKaLa', + // 账号 + 'account' => '13822254817', + // 密码 + 'password' => 'n8omf1FNqK+Irq9IlOPZJA==', + // 订单查询参数配置 + 'query' => array ( + 'requestTime' => NULL, + 'systemCode' => 'MERDASH', + 'version' => '1.0', + 'openEntity' => '822581058121GYW', + 'requestId' => NULL, + 'pageSize' => 10, + 'pageNum' => 1, + 'startTime' => NULL, + 'timeOption' => NULL, + 'tranSts' => 'SUCCESS', + 'orderNo' => NULL, + 'srefno' => NULL, + 'ornNo' => NULL, + 'endTime' => NULL, + 'startDate' => NULL, + 'endDate' => NULL, + 'page' => 1, + 'size' => 10, + 'merchantNos' => '822581058121GYW', + 'merInnerNos' => '4002022071722760372', +), + ] +]; diff --git a/extend/payclient/ShouQianBa.php b/extend/payclient/ShouQianBa.php index fe77448..029481c 100644 --- a/extend/payclient/ShouQianBa.php +++ b/extend/payclient/ShouQianBa.php @@ -97,45 +97,49 @@ class ShouQianBa public function payQuery(array $query): array { $token = $this->getToken(); - $url = $this->host . $this->find_transactions . '?client_version=7.0.0&token=' . $token; - $header = ['Content-Type: application/json;charset=UTF-8']; - // 构建订单查询 - $now = time(); - $begin_time = ($now - 175) * 1000; - $end_time = $now * 1000; - $query['date_start'] = $begin_time; - $query['date_end'] = $end_time; - // 查询订单列表 - $res_order = $this->getHttpResponse($url, $header, json_encode($query)); - $arr_res = json_decode($res_order, true); - $list = []; - if ($arr_res['code'] === 50000) { - $list = $arr_res['data']['records']; - } - // 重构订单流水,返回数组 - $moneyList = []; - if ($list) { - $order_no = []; - $payway = []; - $price = []; - $channel = []; - $payways = [2 => 'alipay', 3 => 'wxpay']; - foreach ($list as $value) { - // 平台订单流水号 - $order_no[] = $value['order_sn']; - // 支付类型 - $payway[] = $payways[$value['payway']]; - // 收款金额 - $price[] = $value['original_amount'] / 100; - // 收款渠道(二维码编号) - $channel[] = $value['terminal_device_fingerprint']; + if ($token) { + $url = $this->host . $this->find_transactions . '?client_version=7.0.0&token=' . $token; + $header = ['Content-Type: application/json;charset=UTF-8']; + // 构建订单查询 + $now = time(); + $begin_time = ($now - 175) * 1000; + $end_time = $now * 1000; + $query['date_start'] = $begin_time; + $query['date_end'] = $end_time; + // 查询订单列表 + $res_order = $this->getHttpResponse($url, $header, json_encode($query)); + $arr_res = json_decode($res_order, true); + $list = []; + if ($arr_res['code'] === 50000) { + $list = $arr_res['data']['records']; } - $moneyList['order_no'] = $order_no; - $moneyList['payway'] = $payway; - $moneyList['price'] = $price; - $moneyList['channel'] = $channel; + // 重构订单流水,返回数组 + $moneyList = []; + if ($list) { + $order_no = []; + $payway = []; + $price = []; + $channel = []; + $payways = [2 => 'alipay', 3 => 'wxpay']; + foreach ($list as $value) { + // 平台订单流水号 + $order_no[] = $value['order_sn']; + // 支付类型 + $payway[] = $payways[$value['payway']]; + // 收款金额 + $price[] = $value['original_amount'] / 100; + // 收款渠道(二维码编号) + $channel[] = $value['terminal_device_fingerprint']; + } + $moneyList['order_no'] = $order_no; + $moneyList['payway'] = $payway; + $moneyList['price'] = $price; + $moneyList['channel'] = $channel; + } + return $moneyList; + } else { + return []; } - return $moneyList; } // 请求外部资源 private function getHttpResponse($url, $header = [], $post = null, $timeout = 10) diff --git a/extend/payclient/payclient.zip b/extend/payclient/payclient.zip deleted file mode 100644 index fc2e00b70d771120e02dce2bbb33d417ed17bd3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8302 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 diff --git a/view/pay_manage/index.html b/view/pay_manage/index.html index d95146e..dd884d3 100644 --- a/view/pay_manage/index.html +++ b/view/pay_manage/index.html @@ -106,6 +106,7 @@ { title: '密 码', field: 'password', align: 'center' }, { title: '启用状态', field: 'state', align: 'center', templet: '#account-state' }, { title: '监听模式', field: 'pattern', align: 'center' }, + { title: '监听地址', field: 'payurl', align: 'center', templet: `
{{# return window.location.origin + '/checkPayResult?pid='+d.pid+'&aid='+d.id }}
` }, { title: '终端数量', field: 'channel', align: 'center', templet: '' }, { title: '操作', align: 'center', fixed: 'right', templet: '' } ]] diff --git a/view/user/index.html b/view/user/index.html index 24ec84c..36a8147 100644 --- a/view/user/index.html +++ b/view/user/index.html @@ -19,7 +19,7 @@
-
+
@@ -81,11 +81,22 @@
+
+ +
+
+ + +
+
+
-
+
我的文章