|
1 | | -# 微信小程序php后端开发包 |
2 | | - |
3 | | -[](https://github.com/hillpy/MiniProgramSDK/issues) |
4 | | -[](https://github.com/hillpy/MiniProgramSDK) |
5 | | -[](https://github.com/hillpy/MiniProgramSDK) |
6 | 1 | [](https://github.com/hillpy/MiniProgramSDK/blob/master/LICENSE) |
| 2 | +[](https://img.shields.io/github/release/hillpy/MiniProgramSDK.svg) |
| 3 | +[](https://packagist.org/packages/hillpy/mini-program-sdk) |
| 4 | +[](https://img.shields.io/packagist/dt/hillpy/mini-program-sdk.svg) |
7 | 5 |
|
8 | | -### 功能描述 |
9 | | -#### 封装微信小程序php端相关接口,比如php端微信用户信息解密(即登陆功能)、获取sessionKey、获取小程序码等等。 |
10 | | - |
11 | | -### 安装方法 |
12 | | - |
13 | | -1. 下载[发行版](https://github.com/hillpy/MiniProgramSDK/releases) |
14 | | - |
15 | | -2. 使用composer安装(推荐) |
16 | | - |
17 | | -``` |
18 | | -composer require hillpy/mini-program-sdk |
19 | | -``` |
20 | | - |
21 | | -### 使用方法 |
22 | | - |
23 | | -* 实例化开发包、accessToken获取及缓存 |
24 | | - |
25 | | -``` |
26 | | -/** |
27 | | - * 使用案例 |
28 | | - * 注意:实际项目若使用composer安装的库,请先引入自动加载脚本(require __DIR__ . '/vender/autoload.php';)。另外需安装redis扩展并开启redis服务 |
29 | | - */ |
30 | | -use hillpy\MiniProgramSDK\MiniProgram; |
31 | | -
|
32 | | -// 设置变量 |
33 | | -$appId = ''; |
34 | | -$appSecret = ''; |
35 | | -$accessToken = ''; |
36 | | -
|
37 | | -// 从redis获取accessToken; |
38 | | -$redis = new Redis(); |
39 | | -$redis->connect('127.0.0.1', 6379); |
40 | | -$accessToken = $redis->get('miniprogram_access_token_appid_' . $appId); |
41 | | -
|
42 | | -// 实例化MiniProgram |
43 | | -$miniProgram = new MiniProgram($appId, $appSecret, $accessToken); |
44 | | -
|
45 | | -//若缓存中不存在accessToken,从新实例化对象中获取并写入redis |
46 | | -if (!$accessToken) { |
47 | | - isset($miniProgram->accessTokenData['access_token']) && $accessToken = $miniProgram->accessTokenData['access_token']; |
48 | | -
|
49 | | - if ($accessToken) { |
50 | | - // 获取的expires_in为秒时间戳,减去30秒(过期时间适当提前避免accessToken实际已失效) |
51 | | - if (isset($miniProgram->accessTokenData['expires_in'])) { |
52 | | - $cacheTime = $miniProgram->accessTokenData['expires_in'] - 30; |
53 | | - } else { |
54 | | - $cacheTime = 0; |
55 | | - } |
56 | | - $redis->setex('miniprogram_access_token_appid_' . $appId, $cacheTime, $accessToken); |
57 | | - } |
58 | | -} |
59 | | -
|
60 | | -// 输出accessToken |
61 | | -if ($accessToken == '') { |
62 | | - echo 'accessToken获取失败<br>'; |
63 | | -} else { |
64 | | - echo 'accessToken:' . $accessToken . '<br>'; |
65 | | -} |
66 | | -``` |
67 | | - |
68 | | -* 解密登录用户数据 |
| 6 | +### MiniProgramSDK是什么 |
69 | 7 |
|
70 | | -``` |
71 | | -// 解密登录用户数据 |
72 | | -$paramArr['code'] = isset($_POST['code']) ? $_POST['code'] : ''; |
73 | | -$paramArr['rawData'] = isset($_POST['rawData']) ? $_POST['rawData'] : ''; |
74 | | -$paramArr['signature'] = isset($_POST['signature']) ? $_POST['signature'] : ''; |
75 | | -$paramArr['encryptedData'] = isset($_POST['encryptedData']) ? $_POST['encryptedData'] : ''; |
76 | | -$paramArr['iv'] = isset($_POST['iv']) ? $_POST['iv'] : ''; |
77 | | -$paramArr['sessionKeyExpired'] = isset($_POST['sessionKeyExpired']) ? $_POST['sessionKeyExpired'] : ''; |
| 8 | +MiniProgramSDK是一个PHP的小程序开发包。封装微信小程序后端相关接口,比如php端微信用户信息解密(微信登录)、获取小程序码等等。 |
78 | 9 |
|
79 | | -// sessionKeyExpired参数表示session_key是否过期(必须由前端判断),未过期则从缓存获取sessionKeyData |
80 | | -if ($paramArr['sessionKeyExpired'] != 1) { |
81 | | - $sessionKeyData = $redis->get('miniprogram_jscode2session_appid_' . $appId); |
82 | | - $sessionKeyDataArr = json_decode($sessionKeyData, true); |
83 | | - $paramArr['sessionKey'] = $sessionKeyDataArr['sessionKey']; |
84 | | - $paramArr['openId'] = $sessionKeyDataArr['openId']; |
85 | | -} |
| 10 | +### 项目文档 |
86 | 11 |
|
87 | | -$res = $miniProgram->decryptData($paramArr); |
88 | | -
|
89 | | -if ($res['code'] == 100) { |
90 | | - // 将sessionKeyData写入缓存 |
91 | | - $sessionKeyDataArr['sessionKey'] = $res['data']['sessionKey']; |
92 | | - $sessionKeyDataArr['openId'] = $res['data']['data']['openId']; |
93 | | - $redis->set('miniprogram_jscode2session_appid_' . $appId, json_encode($sessionKeyDataArr)); |
94 | | -
|
95 | | - echo '解密成功'; |
96 | | -} else { |
97 | | - echo $res['msg']; |
98 | | -} |
99 | | -``` |
100 | | - |
101 | | -* 获取无数量限制的小程序码 |
102 | | - |
103 | | -``` |
104 | | -// 小程序码图片的保存路径 |
105 | | -$path = ''; |
106 | | -// 小程序码图片的保存名称 |
107 | | -$filename = ''; |
108 | | -
|
109 | | -// 小程序码接口所需参数 |
110 | | -$paramArr['scene'] = ''; |
111 | | -$paramArr['page'] = ''; |
112 | | -$paramArr['width'] = ''; |
113 | | -$paramArr['auto_color'] = ''; |
114 | | -$paramArr['line_color'] = ''; |
115 | | -$paramArr['is_hyaline'] = ''; |
116 | | -
|
117 | | -// 请求小程序码接口 |
118 | | -$res = $miniProgram->getWxacodeUnlimit($paramArr); |
119 | | -
|
120 | | -// 打开文件并写入二进制流,生成图片 |
121 | | -$file = fopen($path . $filename, 'w'); |
122 | | -fwrite($file, $res); |
123 | | -fclose($file); |
124 | | -``` |
| 12 | +[MiniProgramSDK Document](https://hillpy.github.io/MiniProgramSDK/v1/) |
125 | 13 |
|
126 | 14 | ### TODO |
127 | 15 |
|
128 | 16 | ~~1. 微信用户数据解密~~ |
129 | 17 |
|
130 | 18 | ~~2. 小程序二维码、小程序码~~ |
131 | 19 |
|
132 | | -3. 模板消息 |
133 | | - |
134 | | -4. 统一服务消息 |
135 | | - |
136 | | -5. 动态消息 |
137 | | - |
138 | | -6. 客服消息 |
139 | | - |
140 | | -7. 数据分析 |
141 | | - |
142 | | -8. 附近的小程序 |
143 | | - |
144 | | -9. 插件管理 |
145 | | - |
146 | | -10. 内容安全 |
147 | | - |
148 | 20 | ### 仓库地址 |
149 | 21 |
|
150 | 22 | [Coding](https://coding.net/u/shinn_lancelot/p/MiniProgramSDK/git "MiniProgramSDK")<br> |
|
0 commit comments