|
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