tp框架 一个简单的函数 使用I()获取get和post

数据操作过程中,经常需要过滤一下数据,保证数据的安全性,tp框架,自带了I函数。
当有多个数据的时候,为了简便过滤,写了一个过滤函数。

//$method 方法,数组
function getParameters($method,$keys){
    $data = array();
    foreach($keys as $key){
        if($method == "get"){
            if(isset($_GET[$key])){
                $data[$key] = I($method.".".$key);
            }
        }
        else{
            if(isset($_POST[$key])){
                $data[$key] = I($method.".".$key);
            }
        }

    }
    return $data;

}

用法如下:

$data = getParameters("post",[
    'article_img','article_description','article_content',
    'article_state','article_name'
]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我作为AI语言模型,无法编写、运行和测试完整的代码,以下提供一个TP5.0框架下集成支付宝支付的样例代码,供参考: // 公共方法 // 加载composer自动加载器 require __DIR__ . '/vendor/autoload.php'; // 导入需要使用的类 use think\facade\Config; use think\facade\Log; use think\facade\Request; use think\Db; /** * 发起支付宝支付 * * @param float $totalFee 支付金额 * @param string $outTradeNo 商户订单号 * @param string $body 商品描述 * @return string 支付宝支付页面 */ function aliPay($totalFee, $outTradeNo, $body) { // 支付宝必要参数 $config = Config::get('payment.ali_pay'); $appId = $config['app_id']; $merchantPrivateKey = $config['merchant_private_key']; $alipayPublicKey = $config['alipay_public_key']; $gatewayUrl = $config['gateway_url']; $charset = $config['charset']; $signType = $config['sign_type']; // 拼接支付宝请求参数 $bizContent = [ 'body' => $body, 'subject' => $body, 'out_trade_no' => $outTradeNo, 'total_amount' => $totalFee, 'product_code' => 'QUICK_WAP_WAY', ]; $params = [ 'app_id' => $appId, 'method' => 'alipay.trade.wap.pay', 'format' => 'JSON', 'charset' => $charset, 'sign_type' => $signType, 'timestamp' => date('Y-m-d H:i:s'), 'version' => '1.0', 'notify_url' => 'http://example.com/api/pay/notify', // 支付宝异步通知地址 'return_url' => 'http://example.com/order/success', // 支付宝同步通知地址 'biz_content' => json_encode($bizContent), ]; // 对支付宝请求参数进行签名 $params['sign'] = generateSign($params, $merchantPrivateKey, $signType); // 跳转至支付宝支付页面 $url = $gatewayUrl . '?' . http_build_query($params); return redirect($url); } /** * 生成支付宝参数签名 * * @param array $params 请求参数 * @param string $merchantPrivateKey 商户私钥 * @param string $signType 签名类型 * @return string 签名结果 */ function generateSign($params, $merchantPrivateKey, $signType = 'RSA2') { // 排序请求参数 ksort($params); // 拼接请求参数 $paramStr = ''; foreach ($params as $key => $value) { $paramStr .= $key . '=' . $value . '&'; } $paramStr = rtrim($paramStr, '&'); // 生成签名 $rsa = new \phpseclib\Crypt\RSA(); $rsa->setPrivateKeyFormat(\phpseclib\Crypt\RSA::PRIVATE_FORMAT_PKCS1); $rsa->setPublicKeyFormat(\phpseclib\Crypt\RSA::PUBLIC_FORMAT_PKCS1); $rsa->loadKey($merchantPrivateKey); $sign = $rsa->sign($paramStr, $signType == 'RSA2' ? \phpseclib\Crypt\RSA::SIGNATURE_SHA256 : \phpseclib\Crypt\RSA::SIGNATURE_SHA1); $sign = base64_encode($sign); return $sign; } /** * 支付宝支付异步通知处理方法 * * @param array $data 异步通知数据 * @param float $totalFee 实际支付金额 * @return bool 是否处理成功 */ function aliPayNotify($data, $totalFee) { // 验证异步通知签名 $config = Config::get('payment.ali_pay'); $alipayPublicKey = $config['alipay_public_key']; $signType = $config['sign_type']; $result = verifySign($data, $alipayPublicKey, $signType); if (!$result) { return false; } // 验证商户订单号和支付宝交易号是否已处理 $outTradeNo = $data['out_trade_no']; $tradeNo = $data['trade_no']; $orderInfo = Db::name('orders')->where('out_trade_no', $outTradeNo)->field('id,payment_status,transaction_id')->find(); if (!$orderInfo || $orderInfo['transaction_id']) { return false; } // 修改订单状态并保存交易号 Db::name('orders')->where('id', $orderInfo['id'])->update([ 'payment_status' => 1, 'transaction_id' => $tradeNo, 'payment_time' => time(), // 可选,记录支付时间 ]); // 处理完成,返回true结束回调 return true; } /** * 验证支付宝异步通知签名 * * @param array $data 异步通知数据 * @param string $alipayPublicKey 支付宝公钥 * @param string $signType 签名类型 * @return bool 是否验证通过 */ function verifySign($data, $alipayPublicKey, $signType = 'RSA2') { // 获取通知参数中的签名字符串 $sign = $data['sign']; unset($data['sign'], $data['sign_type']); // 排序请求参数 ksort($data); // 拼接请求参数 $paramStr = ''; foreach ($data as $key => $value) { $paramStr .= $key . '=' . $value . '&'; } $paramStr = rtrim($paramStr, '&'); // 验证签名 $rsa = new \phpseclib\Crypt\RSA(); $rsa->setPrivateKeyFormat(\phpseclib\Crypt\RSA::PRIVATE_FORMAT_PKCS1); $rsa->setPublicKeyFormat(\phpseclib\Crypt\RSA::PUBLIC_FORMAT_PKCS1); $rsa->loadKey($alipayPublicKey); $result = $rsa->verify($paramStr, base64_decode($sign), $signType == 'RSA2' ? \phpseclib\Crypt\RSA::SIGNATURE_SHA256 : \phpseclib\Crypt\RSA::SIGNATURE_SHA1); return $result; } // 使用样例 $totalFee = 0.01; // 支付金额 $outTradeNo = '202205271331482050'; // 商户订单号 $body = '测试商品'; // 商品描述 $payUrl = aliPay($totalFee, $outTradeNo, $body); // 获取支付页面链接 // 支付宝支付异步通知处理方法 $data = Request::param(); // 异步通知数据 $totalFee = 0.01; // 实际支付金额 $notifyResult = aliPayNotify($data, $totalFee); // 处理支付结果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值