找到
10
篇与
菜鸟教程
相关的结果
- 第 2 页
-
小呆支付系统6.8.3/6.8.7解决ThinkPHP方法弃用问题 小呆支付系统修复指南 卡片描述 - 解决 ThinkPHP 方法弃用导致的 500 错误 宝塔计划任务 shell 无法执行,监控断线 依赖 "topthink/think-captcha": "2.0.*" & "endroid/qrcode": "^2.5" 无法直接升级 ThinkPHP,所以给出完整 6 步修复计划 问题背景 小呆支付系统在生产环境突然 500: Fatal error: ReflectionParameter::getClass() is deprecated … 根源:PHP 8.x 把 getClass() 标为弃用,ThinkPHP 旧核心仍在调用,同时宝塔计划任务中断。 不及时修复 → 订单与回调全面停摆。 修复思路 不升级整站框架,仅替换 2 个核心函数 + 批量修改变量写法 + 清缓存,全程 6 步,约 5 分钟,零业务侵入,兼容 PHP 7.4 → 8.2。 适用人群 正在使用 ThinkPHP 5.x/6.x 的支付系统 宝塔计划任务出现 curl / Reflection 报错 手机 / 电脑均可按步骤操作 修复步骤(手机长按即可复制) ① 备份 cp -r /www/wwwroot/你的根目录 /path/to/backup② 替换 thinkphp/library/think/Container.php(第 453 行) protected function bindParams(\ReflectionFunctionAbstract $reflect, $vars = []) { if ($reflect->getNumberOfParameters() == 0) return []; reset($vars); $type = key($vars) === 0 ? 1 : 0; $params = $reflect->getParameters(); $args = []; foreach ($params as $param) { $name = $param->getName(); $reflectionType = $param->getType(); if ($reflectionType && $reflectionType instanceof \ReflectionNamedType && !$reflectionType->isBuiltin()) { $args[] = $this->getObjectParam($reflectionType->getName(), $vars); } elseif ($type == 1 && !empty($vars)) { $args[] = array_shift($vars); } elseif ($type == 0 && isset($vars[$name])) { $args[] = $vars[$name]; } elseif ($param->isDefaultValueAvailable()) { $args[] = $param->getDefaultValue(); } else { throw new \InvalidArgumentException('参数缺失: ' . $name); } } return $args; } ③ 修改 application/common.php第 1771 行 function doCurl($url, $header, $data = [], $timeout = 30, $bankId = "", $POST = true) { $ch = curl_init(); if (substr($url, 0, 5) === 'https') { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } $atad = Db::name("pay_sz")->find(); $use_agent = $atad['ip_hfw'] != 2; } application/common.php第 1913 行 function sign($type, $api = '', $data1 = '', $data2 = '') { $cls = pay($data2['duijei'] == 1 ? 'mr' : 'yzf'); return $type == 'sign' ? $cls->sign($api, $data1) : $cls->ybhd($api, $data1, $data2['key']); } 隐藏内容,请前往内页查看详情 ⑤ 手动检查 # 检查替换后的文件 grep -rn --include=\*.php '\$[a-zA-Z_]\w*\s*\[' /www/wwwroot/你的根目录/⑥ 清缓存 rm -rf /www/wwwroot/你的根目录/runtime/* -
教你使用小呆支付系统在app监控离线状态下唤起支付并回调方法 前言描述 - 本教程是教你如何用呆呆支付系统,在app监控离线情况下唤起起支付并回调,不使用任何云端产品,自己的常用手机就可以实现回调支付,不耗电,不耗流量 大家都知道app监控端,离线状态下是不会唤起支付,并不出码的,必须保证app不掉线,要开启亮屏,这样太麻烦了,还要不停地充电。 下面我就教大家方法 一、首先将app监控用MT进行反编译得到AndroidManifest.xml这个文件,参考以下图片 1640005264-13c899074adc7f8.jpg图片 用反编译把文件打开将: uses-permission android:name="android.permission.FOREGROUND\_SERVICE" 这段代码复制粘贴过去保存,如图: 1640005442-dbd23da2cf5d86b.jpg图片 然后进行打包安装 二、安装好后后,必须开启通知权限和后台启动以及关联启动如图: 教你使用小呆支付系统在app监控离线状态下唤起支付并回调方法4图片 教你使用小呆支付系统在app监控离线状态下唤起支付并回调方法5图片 三、还有个最重要的开关要开启,那就是来锁屏通知时亮屏,这样收到钱包通知时亮屏,激活app监控端联网并回调, 如图: 1640006156-a3ead676c74a3e4.jpg图片 四、修改小呆呆数据库表 ‘pay_gfg’将其增加一个字段为 jkstate1 varchar(32) DEFAULT '1' COMMENT '监控端状态1', 如图: 教你使用小呆支付系统在app监控离线状态下唤起支付并回调方法6图片 添加 jkstate1 教你使用小呆支付系统在app监控离线状态下唤起支付并回调方法7图片 先改为"0"在改回"1" 教你使用小呆支付系统在app监控离线状态下唤起支付并回调方法8图片 五、修改支付系统源码文件,这是最关键的一步,否则不能唤起支付 修改文件路径为:application/pay/controller/index.php和application/index/controller/pay.php 将这段代码 pay.php的 行 148 和 248 index.php 的行145和249 原代码 - $jie = Db::name("pay\_jie")->where("pid", $data['pid'])->where("id", $data\['typec\_id'\])->where("state", 1)->find();//获取通道 if($data['jkstate']==0){ $this->success('1017',null,'监控状态异常,请检查是否挂监控回调'); 改为: $jie = Db::name("pay_jie")->where("pid", $data['pid'])->where("id", $data['typec_id'])->where("state", 1)->find();//获取通道 if($data['jkstate']==3){ $this->success('1017',null,'监控状态异常,请检查是否挂监控回调'); 将代码:行290 原代码 - $cou = Db::name("pay\_gfg")->where("pid", $pid)->where("type", $type)->where("jkstate", 1)->where("state", 1)->where("land\_lx", 1)->where("ds\_status", 0)->find(); if($cou==false){ $this->success('1009',null,'暂无账户可用,请稍后再试'); } $table = "pay\_gfg"; //需要抽取的数据表 $pk = Db::name("$table")->getPK();//获取主键 $countcus = Db::name($table)->where("pid", $pid)->where("type", $type)->where("jkstate", 1)->where("state", 1)->where("land\_lx", 1)->where("ds\_status", 0)->field($pk)->select();//查询数据 $con = ''; 改为: 隐藏内容,请前往内页查看详情 如果你还有更高的方法,欢迎投稿!!! -
教你更改小呆支付二维码解码接口(草料二维码新的解码接口) 大家都知道,之前的接口都失效了,后来换了一个接口,但是部支持ssl,现在我教大家更换新的解码接口,也许支付网站或其他网站,需要用到解码接口的都可以参考,都是一个道理哈! 这个接口已经失效:https://cli.im/apis/up/deqrimg 这个接口不支持ssl:https://api.uomg.com/api/qr.encode?url= 需要修改的路径:application/index/controller/User.php 第1906行如: //二维码解析 public function upload() { if($dernout = $this->dernout()){ return $dernout;//判断登录状态 } // 获取表单上传文件 例如上传了001.jpg //$file = request()->file('file'); // 移动到框架应用根目录/public/static/user/assets/erweima/ 目录下 $info = $file->validate(['ext'=>'jpg,png,gif'])->move('../public/static/user/assets/erweima/',true,false); if($info){ $ret = curls('https://api.uomg.com/api/qr.encode?url='.http_url().'/static/user/assets/erweima/'.$info->getSaveName()); $json = json_decode($ret,TRUE); //@unlink(Env::get('ROOT_PATH').'/public/static/user/assets/erweima/'.$info->getSaveName());//删除目录图片 deldir(Env::get('ROOT_PATH').'/public/static/user/assets/erweima/');//删除文件夹 if($json['code'] == 1){ return json($this->getReturn(1, $json["qrurl"])); }else{ return json($this->getReturn(-1, $json['msg'])); } }else{ return json($this->getReturn(-1, '上传失败[可点收款码解析地址]')); } }改为: 隐藏内容,请前往内页查看详情 -
zibll子比主题使用小呆易支付时无法调用支付问题 ///此段教程适用子比主题使用易支付的场景 起因: 因目前使用的易支付平台免跳转扫码 qrcode.php 接口变更为mapi.php 这就导致了到目前为止最新 7.4 所有版本的子比主题无法使用该平台的免跳转扫码功能。 搜遍所有网也没有人发过这个教程!!!PHP 一窍不通!!!这里感谢 CHATGPT 一路指导!!!人类之光!!! 该教程适用的条件有两条 一:你的平台可以用"https://payapi.xxxzf.com/pay/submit/订单号/"这种格式的URL打开收款界面 二:检查你收款平台的开发文档,找到 API 接口支付下面的返回结果有无:订单号 trade_no 的返回变量 如有,接着往下看,一共两步 第 ① 步,在主题文件编辑器找到以下路径 子比主题: <color=Red>zibpay-ajax.php (zibpay/functions/zibpay-ajax.php) 在第 500 行的位置插入以下代码 if (empty($result['qrcode'])) { $code_url = "https://payapi.xxxzf.com/pay/submit/" . $result['trade_no'] . "/"; $result['qrcode'] = $code_url; }改完记得保存 第二步,在主题文件编辑器找到以下路径 子比主题:epay.class.php (zibpay/sdk/epay/epay.class.php) function get_real_ip_address(){ if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; } return $_SERVER['REMOTE_ADDR']; }修改第 232 行的位置的代码 原代码$this->alipay_qrcode = $this->alipay_config['apiurl'] . 'qrcode.php?'; 修改为$this->alipay_qrcode = $this->alipay_config['apiurl'] . 'mapi.php?'; 在第 269 行的位置插入以下代码 $client_ip = get_real_ip_address(); $para_filter['clientip'] = $client_ip;改完记得保存 最后在子比主题设置,商城&付费->收款接口里面,将易支付的 PC 端扫码支付打开,兼容模式不要开,点保存 现在,你可以优雅的使用易支付免跳转扫码收款啦~ 完结撒花 第二个问题,使用子比主题里的易支付无法调用支付如何解决? 首先找到子比主题里易支付文件路径如:zibpay 这个文件里的 functions/zibpay-ajax.php 第 775 行代码如下: //易支付发起支付 function zibpay_initiate_epay($order_data) { //获取参数 $config = zibpay_get_payconfig('epay'); if (empty($config['apiurl']) || empty($config['partner']) || empty($config['key'])) { return array('error' => 1, 'msg' => '易支付缺少配置参数'); } require_once get_theme_file_path('/zibpay/sdk/epay/epay.class.php'); $payment_method = 'alipay' == $order_data['payment_method'] ? 'alipay' : 'wxpay'; $parameter = array( "pid" => trim($config['partner']), "type" => $payment_method, 'notify_url' => ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php', 'return_url' => add_query_arg(['redirect_url' => urlencode($order_data['return_url'])], ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php'), "out_trade_no" => $order_data['order_num'], //本地订单号 "name" => $order_data['order_name'], "money" => $order_data['order_price'], "sitename" => get_bloginfo('name'), "clientip" => zib_get_remote_ip_addr() ?: '127.0.0.1', ); 把这段代码注释掉如: //易支付发起支付 function zibpay_initiate_epay($order_data) { //获取参数 $config = zibpay_get_payconfig('epay'); if (empty($config['apiurl']) || empty($config['partner']) || empty($config['key'])) { return array('error' => 1, 'msg' => '易支付缺少配置参数'); } require_once get_theme_file_path('/zibpay/sdk/epay/epay.class.php'); $payment_method = 'alipay' == $order_data['payment_method'] ? 'alipay' : 'wxpay'; $parameter = array( "pid" => trim($config['partner']), "type" => $payment_method, 'notify_url' => ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php', 'return_url' => add_query_arg(['redirect_url' => urlencode($order_data['return_url'])], ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php'), "out_trade_no" => $order_data['order_num'], //本地订单号 "name" => $order_data['order_name'], "money" => $order_data['order_price'], // "sitename" => get_bloginfo('name'), //"clientip" => zib_get_remote_ip_addr() ?: '127.0.0.1', );