Icharle | Don't forget your first thoughts - composer
Laravel 支付宝小程序获取『用户详细信息』扩展
为什么要写一个laravel扩展包？ 最近支付宝小程序允许个人开发者开放申请，但是对于官方给的PHP版SDK没有composer包管理，对于laravel开放者来说，这是一个很大问题，需要自己动手拆开嵌入到laravel项目中，因此产生做出一个扩展包的形式。 项目地址(欢迎star) https://github.com/icharle/alipayTool 目前支持的接口功能 [x] alipay.system.oauth.token(换取授权访问令牌) [x] alipay.user.info.share(支付宝会员授权信息查询接口) [ ] 小程序二维码生成 使用方法 运行以下命令以获取最新版本： composer require icharle/alipaytool dev-master 将服务提供者添加到配置文件中的providers数组中config/app.php，如下所示： 'providers' => [ ... Icharle\Alipaytool\AlipaytoolServiceProvider::class, ] 发布配置文件 php artisan vendor:publish --tag=alipaytool 此时会生成config/alipaytool.php、storage/pem/public.txt、storage/pem/private.txt文件。 配置AppID、支付宝公钥及应用私钥 在根目录.env文件中添加如下代码 # 填入小程序AppID ALIPAY_APP_ID=xxxxx 在storage/pem/public.txt、storage/pem/private.txt文件中分别填入支付宝公钥及应用私钥(如何生成支付宝公钥及应用私钥？) 快速入门 先了解下授权流程吧。官网详细介绍(如果之前做个微信小程序开发的话，可以忽略啦，流程跟微信的差不多。) 先是小程序端通过my.getAuthCode方法得到authcode，并将其传入后端，后端调用alipay.system.oauth.token接口得到access_token以及支付宝用户的userId。access_token再配合调用alipay.user.info.share方法即可解密得到用户详细信息。 使用案例 ## 小程序端调用(官方示例) my.getAuthCode({ scopes: 'auth_user', // 主动授权（弹框）：auth_user，静默授权（不弹框）：auth_base success: (res) => { if (res.authCode) { // 认证成功 // 调用自己的服务端接口，让服务端进行后端的授权认证，并且种session，需要解决跨域问题 my.httpRequest({ url: 'http://xxx.com/auth', // 该url是自己的服务地址，实现的功能是服务端拿到authcode去开放平台进行token验证 data: { authcode: res.authCode }, success: () => { // 授权成功并且服务器端登录成功 }, fail: () => { // 根据自己的业务场景来进行错误处理 }, }); } }, }); ## 后端示例 /** * 支付宝授权登录尝试 * code值反馈 * 40002 => authCode(授权码code)无效 * 40006 => ISV权限不足，建议在开发者中心检查对应功能是否已经添加 * 10000 => 请求成功 */ public function auth(Request $request) { $data = $request->all(); $authtoken = $data['authCode']; $app = new Alipaytool(); $alipay_system_oauth_token_response = $app::getAccessToken($authtoken); if (isset($alipay_system_oauth_token_response['code']) && $alipay_system_oauth_token_response['code'] == 40002) { exit('授权码code无效'); } // echo $alipay_system_oauth_token_response['access_token']; /** * 执行成功后 $alipay_system_oauth_token_response => 可以得到如下 * "access_token" => "访问令牌。通过该令牌调用需要授权类接口" * "alipay_user_id" => "暂时不懂是啥 官方也没有给出" * "expires_in" => 访问令牌的有效时间，单位是秒。 * "re_expires_in" => 刷新令牌的有效时间，单位是秒。 * "refresh_token" => "刷新令牌。通过该令牌可以刷新access_token" * "user_id" => "支付宝用户的唯一userId" */ $alipay_user_info_share_response = $app::getUserInfoByAccessToken($alipay_system_oauth_token_response['access_token']); if (isset($alipay_user_info_share_response['code']) && $alipay_user_info_share_response['code'] == 40006) { exit('ISV权限不足，建议在开发者中心检查对应功能是否已经添加'); } dd(alipay_user_info_share_response); /** * 执行成功后 $alipay_user_info_share_response => 可以得到如下(按照需要存入数据库中) * "code" => "10000" * "msg" => "Success" * "avatar" => "用户头像地址" * "city" => "市名称。" * "gender" => "只有is_certified为T的时候才有意义，否则不保证准确性. 性别（F：女性；M：男性）。" * "is_certified" => "是否通过实名认证。T是通过 F是没有实名认证。" * "is_student_certified" => "是否是学生" * "nick_name" => "用户昵称" * "province" => "省份名称" * "user_id" => "支付宝用户的userId" * "user_status" => "用户状态（Q/T/B/W）。 Q代表快速注册用户 T代表已认证用户 B代表被冻结账户 W代表已注册，未激活的账户" * "user_type" => "用户类型（1/2） 1代表公司账户2代表个人账户" */ }
Laravel 微信小程序获取『用户详细信息』及『带参数小程序码』扩展
功能介绍 本扩展包包含用户详细信息解密、带参数小程序码生成并保存在本地目录功能。 用户详细信息解密官方也提供多种语言版本SDK(C++、PHP、Node、Python)，在本扩展包中仅仅做封装处理。 带参数小程序码生成，官方给出三种接口，在此扩展包中采用 接口B (适用于需要的码数量极多的业务场景，通过该接口生成的小程序码，永久有效，数量暂无限制)。 项目地址 https://github.com/icharle/Wxtool 使用方法 运行以下命令以获取最新版本： composer require icharle/wxtool 1.0 将服务提供者添加到配置文件中的providers数组中config/app.php，如下所示： 'providers' => [ ... Icharle\Wxtool\WxtoolServiceProvider::class, ] 发布配置文件 php artisan vendor:publish --tag=wxtool 此时有一个config/wxtool.php文件。 配置AppID及AppSecret 在根目录.env文件中添加如下代码 WX_APPID = 您的小程序小程序ID WX_SECRET = 您的小程序密钥 公开storage访问文件(可选) 若要使用 带参数小程序码生成 功能时必须执行下面命令。生成的小程序码默认保存在storage/app/public/qrcode文件夹中 php artisan storage:link 快速入门 获取带参数小程序码(示例代码) <?php namespace App\Http\Controllers; use Icharle\Wxtool\Wxtool; use Illuminate\Http\Request; class TestController extends Controller { /** * 获取带参数小程序码 * @param $scene 场景值(最大32个可见字符，只支持数字，大小写英文以及部分特殊字符) * @param $pages 页面(必须是已经发布的小程序存在的页面（否则报错) * @return $imgpath 小程序码路径 (可以直接访问 http://xxx.com/$imgpath) */ public function GetImgCode() { $a = new Wxtool(); $imgpath = $a->GetQrcode($scene,$pages); } } 获取用户详细信息(示例代码) <?php namespace App\Http\Controllers; use Icharle\Wxtool\Wxtool; use Illuminate\Http\Request; class TestController extends Controller { /** * 获取用户详细信息 * @param Request $request */ public function GetInfo(Request $request) { $a = new Wxtool(); $code = $request->code; //wx.login获取 $encryptedData = $request->encryptedData; //wx.getUserInfo 获取 $iv = $request->iv; //wx.getUserInfo 获取 $res = $a->GetSessionKey($code); //获取用户openid 和 session_key $userinfo = $a->GetUserInfo($encryptedData,$iv); //获取用户详细信息 } } 解密返回结果 { "openId": "OPENID", "nickName": "NICKNAME", "gender": GENDER, "city": "CITY", "province": "PROVINCE", "country": "COUNTRY", "avatarUrl": "AVATARURL", "unionId": "UNIONID", "watermark": { "appid":"APPID", "timestamp":TIMESTAMP } }
简介 Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库，它会在你的项目中为你安装他们。Composer是PHP类扩展包,类似Node.js中的npm。 安装Composer 下载Composer 我们可以使用命令下载也可以去官网下载composer.phar文件。 下面说说第一种方法，命令下载方法： php -r“copy（'https://getcomposer.org/installer'，'composer-setup.php'）;” php composer-setup.php php -r“unlink（'composer-setup.php'）;” 第二种方法就是去官网下载composer.phar文件。 安装Composer 有局部安装也有全局安装两种，这里就只说全局安装方法吧。 Mac或Linux系统 打开命令行窗口并执行如下命令将前面下载的 composer.phar 文件拷贝到 /usr/local/bin/ 目录下面： sudo cp composer.phar /usr/local/bin/composer sudo chmod +x /usr/local/bin/composer Windows 系统 首先将composer.phar复制到 PHP 的安装目录下面(即为php.exe同级目录)，再在这个目录新建一个composer.bat文件，并将下面代码保存在.bat文件中。 @php "%~dp0composer.phar" %* 最后用命令行执行 composer --version ，看看能不能输出下面的图。 启用Composer中国全量镜像 为什么要使用中国全量镜像？因为在天朝被墙的原因，偶尔不能连接到Composer官网国外的服务器啦，所有要使用中国全量镜像。 配置中国全量镜像也有两种，一种是系统全局配置，另外一种是单个项目配置，这里推荐前者，因为不用经常配置它。 配置方法：打开命令行执行如下代码(Windows、Linux、Mac都相同) composer config -g repo.packagist composer https://packagist.phpcomposer.com 在没有执行上面那条命令之前我们可以看看它原来的地址(执行如下命令) composer config -gl repo.packagist 执行更换成中国全量镜像后 url地址发生了变化啦。 使用Composer的好处 Composer就像一个库，包含有众多的资源，比如验证码，百度Ueditor富文本编辑器等等。