国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

??Webman.tool 輔助函數(shù)百寶箱

v1.3.1 版本
2025-04-23 版本更新時間
11 安裝
6 star

Youloge.tool Webman 輔助函數(shù)工具箱

Brightgreen Packagist Languages Packagist Downloads License

使用前看一下下面輔助函數(shù):尤其注意函數(shù)名稱問題

  • 代碼風(fēng)格極簡 歡迎提交代碼
  • 幾行代碼就能接入微信支付/支付寶
  • 一行代碼生成一個虛擬文件并上傳

項(xiàng)目地址

Github Youloge.Tool Star我 有幫助的話,記得給個star 能提交點(diǎn)代碼最好

  • 1.2.8 [2025-03-20] 增加useValidate基本數(shù)據(jù)類型int:100,float:1.02,bool:false,string:默認(rèn)值 提供默認(rèn)值支持
  • 1.2.7 [2025-03-16] 優(yōu)化表單過濾器useValidate并拆分獨(dú)立版本Webman.validate
  • 1.2.4 [2025-03-15] 新增輸入過濾器useValidate優(yōu)雅處理表單輸入
  • 1.2.2 [2025-03-13] 新增谷歌令牌輔助函數(shù) secret_base32 => useTOTP
  • 1.0.1 增加 構(gòu)造騰訊云請求體
  • 0.0.9 遷移多個輔助函數(shù)

安裝使用

composer require youloge/webman.tool

  • 如果要使用 onRequest 請求封裝 請安裝composer require workerman/http-client
  • 如果要使用 onQueue 隊(duì)列封裝 請安裝composer require workerman/redis-queue

使用說明

  • 到目錄config/youloge.php 新建配置文件
  • 工具箱已經(jīng)內(nèi)置``配置文件讀取功能 .ini
    <?php
    $config = [
    'weixin'=>[
        'v3key'=>ini('WEIXIN.V3KEY',''),// 商戶APIV3密鑰,
        'anthor'=>'https://%s%S'
    ],
    // 支付寶 二類配置`public`和`gatway.xxx.xxx.xx`
    'alipay'=>[
        // 公共參數(shù)
        'public'=>[
            'app_id'=>'','method'=>'','version'=>'1.0',
            'format'=>'JSON','charset'=>'utf-8',
            'sign_type'=>'RSA2','timestamp'=>date('Y-m-d H:i:s')
        ]
        // 方法參數(shù)
        'alipay.system.oauth.token'=>['grant_type'=>'','code'=>""],
          'alipay.trade.create'=>['biz_content'=>'','notify_url'=>'',],
          'alipay.trade.precreate'=>['biz_content'=>'','notify_url'=>'',],
          'alipay.trade.page.pay'=>['notify_url'=>'','biz_content'=>''],
          'alipay.trade.wap.pay'=>['notify_url'=>'','biz_content'=>''],
    ],
    // 數(shù)組每次代理 隨機(jī)選擇一個
    'proxy'=>[
        ['addr'=>'','prot'=>'','pass'=>'']
    ],
    // 商戶配置
    '150123456'=>[
        'apiclient_key'=>'file:///www/pem/150123456.apiclient_key.pem'
    ],
    // 小程序配置
    '12345678'=>[
        'secert'=>ini('XCX.SECERT','12345678'),
        'xxx'=>ini('XCX.xxx','12345678'),
    ]
    ];
    // 帶格式的配置 - 例如
    $config['150123456']['cert'] = <<<EOT
    多行配置參數(shù)
    多行配置參數(shù)
    EOT;
    // 最后返回配置
    return $config;

示例代碼 - 輔助輔助 函數(shù)還是要配合代碼食用才香~

示例:表單輸入驗(yàn)證器 查看使用詳情文檔 webman.validat

  • 驗(yàn)證規(guī)則
    • | 分割多個規(guī)則
    • : 規(guī)則參數(shù) ,多個參數(shù)用逗號分隔
    • # 自定義錯誤提示
 $rules = [
    'name'=>'required|min:3|max:10',
    'age'=>'required|int|min:18|max:100',
    'email'=>'required|email',
 ]
 $array = useValidate($data,$rules,$filter=true);

示例:標(biāo)準(zhǔn)動態(tài)令牌

標(biāo)準(zhǔn)TOTP令牌 RFC6238

$secret = secret_base32(16); // 生成一個16位Base32隨機(jī)字符串
$array = useTOTP('GQBWBS7AAEBECCUJ',1741877199);
// 返回時間戳 前中后 三組驗(yàn)證碼
[893277,448721,854850]

示例:騰訊云短信SMS號碼查詢

簡單粗暴 不需要安裝各種騰訊云各種SDK配好密鑰 直接開干

    // 第二個參數(shù)為一個組合 `接入點(diǎn)/方法/版本/區(qū)域(可選參數(shù))`
    $options = tencent_request('POST','sms.tencentcloudapi.com/DescribePhoneNumberInfo/2021-01-11/ap-nanjing',[
            'PhoneNumberSet'=>['+8617605509012']
        ],'1253985496');
    $request = onRequest(...$options); // 異步請求 
    $request = httpProxy(...$options); // 代理請求

示例:請求微信證書

就是這么簡單 發(fā)起JSAPI H5 支付都是同理,比如JSAPI支付統(tǒng)一下單之后在調(diào)用一下簽名組裝一下payment參數(shù)即可支付

$options = weixin_request('GET','/v3/certificates',[],'商戶ID');
@['data'=>$data] = $request = onRequest(...$options);
// 返回一個V3加密后的數(shù)組
$list = [];
foreach($data as ['serial_no'=>$serial_no,'encrypt_certificate'=>$encrypt_certificate]){
    // 使用微信V3解密 weixin_decrypt
    $certificate = weixin_decrypt($encrypt_certificate,'商戶ID');
    // 按照證書序列號`PEM格式`保存到本地
    file_put_contents("$serial_no.pem",$certificate);
    $list[$serial_no] = $certificate;
}
// 
return $list;

示例:上傳JSON文件到七牛

上傳一個JSON片段文件并指定保存文件名到config/100.json, 二進(jìn)制數(shù)據(jù)沒測試*

     $url = qiniu_sign([
        'scope'=>"buket:100.json",
        'deadline'=>time()+300,
        'forceSaveKey'=>true,
        'saveKey'=>"config/100.json",
        'returnBody'=>'{"err": 200,"hash": $(etag)}',
        'insertOnly'=>0,
    ]);
    $data = json_encode([
        'uuid'=>100,
        'target'=>'https://www.abc.com',
        'type'=>'1'
    ]);
    $file = ['name'=>"100.json",'mime'=>'application/json','data'=>$data];
    @['err'=>$err,'hash'=>$hash] = $virtual = virtualFile("https://upload.qiniup.com/?token=$url",['file'=>$file],['key'=>'100']);

示例:代理請求網(wǎng)網(wǎng)址

網(wǎng)站支持github登錄服務(wù)器在國內(nèi),運(yùn)營商會屏蔽你的訪問,這時候可以使用代理請求,數(shù)據(jù)結(jié)構(gòu)與onRequest 一樣

    @['appid'=>$appid,'code'=>$code] = $request->all();
    @['secret'=>$secret] = config("youloge.$appid"); // 配置參數(shù)格式統(tǒng)一起來
    // 換取`access_token`
    @['access_token'=>$access_token] = $data = `httpProxy`( 
    "https://github.com/login/oauth/access_token?client_id=$appid&client_secret=$secret&code=$code",[
      'headers'=>[
        'Accept'=>'application/json'
        ]
    ]);
    if($access_token == null){ return ['err'=>100800,'msg'=>'Github授權(quán)失敗']; }
    // 獲取用戶信息
    @['email'=>$mail] = $data = httpProxy('https://api.github.com/user',[
      'headers'=>['Authorization'=>"Bearer $access_token",'Accept'=>'application/json','User-Agent'=>'Youloge-API']
    ]);
    if($mail == null){ return ['err'=>100801,'msg'=>'Github賬戶未認(rèn)證']; }
    // 用登錄信息 查詢數(shù)據(jù)庫 ...

代碼工具箱


安全的base64編碼

safe_base64_encode($data);
safe_base64_decode($data);

生成不重復(fù)字符 - 用于驗(yàn)證碼

  • 使用Base32字符集 ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
  • @param int $len=4 長度
rand_base32($len=4)

生成重復(fù)的字符 - 用于密鑰密碼

  • 使用Base32字符集
  • @param int $len=16 長度
  • @param string $prefix='' 前綴
    secret_base32($len=16,$prefix='')

Mysql實(shí)例

onMysql($table)

Redis實(shí)例 - 配置文件讀取默認(rèn)

  • 返回句柄
onRedis()

Redis數(shù)組執(zhí)行(自動close)

  • runRedis('HGET',["wallet",$uuid])
  • runRedis('HINCRBY',["wallet",$uuid,10])
runRedis($method,$params)

[webman-queue] 隊(duì)列封裝

  • @param string $queue 隊(duì)列名稱
  • @param array $data 數(shù)據(jù)
  • @param int $delay 可選:延遲時間
     onQueue($queue,$data,$delay=0)

[http-client] 異步網(wǎng)絡(luò)請求封裝

  • @param string $url 請求網(wǎng)址
  • @param array $options 請求配置
  • 示例:'https://example.com/', ['method' => 'POST','version' => '1.1','headers' => ['Connection' => 'keep-alive'],'data' => ['key1' => 'value1', 'key2' => 'value2'],]
  • 請求返回 返回 [JOSN] 非對象返回 [raw=響應(yīng)內(nèi)容]
  • 錯誤返回 ['err'=>500,'msg'=>'錯誤信息']
     onRequest($url,$options=[])

網(wǎng)絡(luò)代理 微信支付/支付寶 都需config/youloge.php 配置文件


HTTP代理網(wǎng)絡(luò)請求 - 配置文件隨機(jī)讀取 [youloge.proxy[0~n]]

  • 請求參數(shù)與 httpProxy == onRequest == http-client(request) 一樣
  • @param string $url 請求網(wǎng)址
  • @param array $options 請求配置
     httpProxy($url,$options=[])

生成虛擬文件對象并上傳 - 支持多文件

  • @param string $url 上傳地址
  • @param array $files 文件類型數(shù)據(jù) ['表單名稱'=>['name'=>'文件名稱','mime'=>'文件類型','data'=>'數(shù)據(jù)內(nèi)容']]
  • @param array $body 其他表單數(shù)據(jù)
  • @param array $header 其他表單請求頭
  • @return array 上傳結(jié)果
     virtualFile($url,$files,$body=[],$header=[])

  • =============================
  • = 算法相關(guān)
  • =============================

構(gòu)造騰訊云請求體 - 配置路徑(一律小寫):[youloge.{appid}.secretid|secretkey]

  • 簽名方法:TC3-HMAC-SHA256
  • @param string $method 請求方式 GET/POST
  • @param string $endpoint_action_version_region 接入點(diǎn)/方法/版本/區(qū)域
  • @param array $payload 請求載體 無參數(shù)時 設(shè)為[],null,false,0 即可
  • @param string $appid 選擇那個appid下得的證書
   tencent_request($method,$endpoint_action_version_region,$payload,$appid)
   $method = POST
   // 接入點(diǎn)/方法/版本/區(qū)域(可選參數(shù))
   trtc.tencentcloudapi.com/DescribeInstances/2019-07-22/ap-guangzhou

七牛簽名 - 配置文件讀取[youloge.qiniu.ak|sk]

七牛HMAC

  • @param string $string 待簽名字符串
     qiniu_hmac($string)

* 七牛SIGN -

  • @param array $params 待簽名數(shù)組對象
     qiniu_sign($params)

七牛AUTH -

  • @param array $params 待簽名數(shù)組對象
     qiniu_auth($params)

七牛DOWN -

  • @param array $url 待簽名下載網(wǎng)址
  • @param number $second 可選:設(shè)置有效時間 默認(rèn)3600秒
  • @param string $attname 可選:設(shè)置下載文件名 默認(rèn)沒有
     qiniu_download($url,$second=3600,$attname='')

  • =============================
  • = 支付算法類 詳細(xì)配置文件
  • = 證書路徑 youloge.{$appid}.{apiclient_key}
  • = 證書格式 1. ./file.pem 文件路徑 PEM編碼的證書/私鑰|公鑰 2. PEM格式的私鑰|公鑰
  • =============================

私鑰簽名 - 配置路徑:[youloge.{appid}.apiclient_key]

  • @param string $string 待簽名字符串
  • @param string $appid 選擇那個id下得的證書
  • 返回數(shù)組 成功 [err=>200,data=>base64] 失敗 [err=>500,msg=>'簽名錯誤']
     private_sign($string,$appid)

構(gòu)造微信支付請求體 - 配置路徑:[youloge.{appid}.apiclient_key|serial_no...]

  • 示例:weixin_request('GET','/v3/certificates',{},11111111);
  • 配置文件格式要規(guī)范
  • @param string $method 請求網(wǎng)絡(luò)方式 GET/POST
  • @param string $router 請求網(wǎng)絡(luò)路徑 必須'/'開頭
  • @param array $data JSON數(shù)據(jù) 不傳設(shè)置為 '' false 0 即可
  • @param string $appid 選擇那個商戶id下得的證書
     weixin_request($method,$router,$data='',$appid='')

微信回調(diào)驗(yàn)簽 - 配置路徑:[youloge.{serial}.platform_cert]

  • @param object $request Request 給返回對象傳進(jìn)來
  • 成功返回 對象返回JSON 否則返回 []
  • 失敗返回 ['err'=>500,'msg'=>Exception]
     weixin_verify($request)

微信解密V3 - 配置路徑:[youloge.{appid}.v3key]

  • @param array $encrypt 解密數(shù)據(jù) 要有['ciphertext','nonce','associated_data']
  • @param string $appid 選擇那個商戶id下得的證書
  • 成功返回 對象返回JSON 否則返回 ['raw'=>$raw]
  • 失敗返回 ['err'=>500,'msg'=>Exception]
     weixin_decrypt($encrypt,$appid)

構(gòu)造支付寶支付請求體 - 配置路徑:[appid.{appid}.apiclient_key]

  • 示例:alipay_request('alipay.trade.create',$data,11111111);
  • @param string $method 接口名稱 alipay.trade.create ...
  • @param array $data 待合并參數(shù)
  • @param string $appid 選擇那個商戶id下得的證書
     alipay_request($method,$data,$appid)

支付寶驗(yàn)簽 - 配置路徑:[youloge.alipay.public_key]

  • @param object $request Request 給返回對象傳進(jìn)來
  • 成功返回 對象返回JSON 否則返回 []
  • 失敗返回 ['err'=>500,'msg'=>Exception]
     alipay_verify($request)

讀取配置文件參數(shù)

  • ini(null)返回全部配置
  • ini('MYSQL','默認(rèn)值') 返回一級配置[數(shù)組]
  • ini('MYSQL.HOST') 返回三級配置[字符串]
ini($keys, $def='')
贊助商