開發了多次小程式,每次都要翻文件、找之前的專案複製過來,
費時費事,為了便於小程式的開發,乾脆自己去造輪子,
整合小程式(微信、QQ、百度、位元組跳動、支付寶)相關開發。
!!請先熟悉 相關小程式 說明文件!!請具有基本的 debug 能力!!
特點
- 豐富的擴充套件,支援微信、QQ、百度、位元組跳動、支付寶(待完善)小程式
- 符合 PSR 標準,方便的與你的框架整合
- 檔案結構清晰,每個類單獨封裝擴充套件,便於單獨使用
支援的小程式
1、微信(Wechat)
method |
描述 |
openid |
獲取小程式 openid |
accessToken |
獲取 access_token |
send |
微信小程式傳送訂閱訊息 |
uniformSend |
下發小程式和公眾號統一的服務訊息 |
qrcode |
獲取小程式碼或小程式二維碼,圖片 Buffer |
decrypt |
檢驗資料的真實性,並且獲取解密後的明文 |
2、QQ(QQ)
method |
描述 |
openid |
獲取小程式 openid |
accessToken |
獲取 access_token |
send |
小程式傳送訂閱訊息 |
qrcode |
獲取小程式二維碼,圖片 Buffer |
decrypt |
檢驗資料的真實性,並且獲取解密後的明文 |
3、百度(Baidu)
method |
描述 |
openid |
獲取小程式 openid |
accessToken |
獲取 access_token |
send |
小程式傳送訂閱訊息 |
qrcode |
獲取小程式二維碼,圖片 Buffer |
decrypt |
檢驗資料的真實性,並且獲取解密後的明文 |
4、位元組跳動(Bytedance)
method |
描述 |
openid |
獲取小程式 openid |
accessToken |
獲取 access_token |
send |
小程式傳送訂閱訊息 |
qrcode |
獲取小程式二維碼,圖片 Buffer |
decrypt |
檢驗資料的真實性,並且獲取解密後的明文 |
5、支付寶(Alipay)
method |
描述 |
token |
獲取小程式使用者user_id及access_token |
send |
小程式傳送模板訊息 |
qrcode |
小程式推廣碼,連結地址 |
composer require fengkui/xcx
完善相關配置
$wechatConfig = [
'appid' => '',
'secret' => '',
];
$qqConfig = [
'appid' => '',
'secret' => '',
];
$baiduConfig = [
'appid' => '',
'appkey' => '',
'secret' => '',
];
$bytedanceConfig = [
'appid' => '',
'secret' => '',
];
$alipayConfig = [
'app_id' => '',
'public_key' => '',
'private_key' => '',
];
使用說明
單獨使用
$xcx = new \fengkui\Xcx\Wechat($wechatConfig);
$xcx = new \fengkui\Xcx\Qq($qqConfig);
$xcx = new \fengkui\Xcx\Baidu($baiduConfig);
$xcx = new \fengkui\Xcx\Bytedance($bytedanceConfig);
$xcx = new \fengkui\Xcx\Alipay($alipayConfig);
公共使用
<?php
require_once('./vendor/autoload.php');
class Xcx
{
protected static $xcx = '';
protected static $type = '';
protected static $config = [];
public function _initialize()
{
self::$type = $_GET['type'] ?? 'wechat';
self::config();
}
protected static function config($type='')
{
$type = $type ?: self::$type;
$wechatConfig = [
'appid' => '',
'secret' => '',
];
if (in_array($type, ['wechat', 'qq', 'baidu', 'bytedance', 'alipay'])) {
$config = $type . "Config";
self::$config = $$config;
} else {
die('當前型別配置不存在');
}
$type && self::$xcx =(new \fengkui\Xcx())::$type(self::$config);
}
public function fastLogin($code=null)
{
if(!$code)
die('引數缺失');
$data = self::$xcx->openid($code);
if (empty($data['openid']))
die('獲取資料失敗');
}
public function decrypt()
{
$sessionKey = '';
$encryptedData = '';
$iv = '';
if(!$sessionKey || !$encryptedData || !$iv)
die('引數缺失');
$re = self::$xcx->decrypt($sessionKey, $encryptedData, $iv);
if (!$re)
die('獲取資料失敗');
}
public static function send()
{
$openid = $openid;
$template_id = '';
$data = [];
$page = 'pages/index/index';
$re = self::$xcx->send($openid, $template_id, $data, $page);
if (!$re)
die('獲取資料失敗');
}
public static function qrcode()
{
$path = 'pages/index/index';
$width = 430;
$type = 2;
$is_hyaline = true;
$re = self::$xcx->qrcode($path, $width, $type, $is_hyaline);
if (!$re)
die('獲取資料失敗');
$im = imagecreatefromstring($re);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結