• Laravel 5 微信小程序扩展


    小程序官方的加解密 SDK 已经非常清楚了,只不过改成 Laravel 风格而已,仅仅相当于搬砖工。至于重复造轮子,我发现其他人的扩展解密用户信息的时候代码出错了,并且需要安装一个 Laravel 的 Curl 扩展,没有提示用户去安装。只好自己去根据他们的源码自己写一个0.0 ,不依赖其他扩展,直接安装使用即可。

    小程序API接口

    获取用户信息:wx.getUserInfo

    安装

    执行以下命令安装最新稳定版本:

    composer require iwanli/wxxcx

    或者添加如下信息到你的 composer.json 文件中 :

    "iwanli/wxxcx": "^1.0",

    然后注册服务提供者到 Laravel中 具体位置:/config/app.php 中的 providers 数组

    IwanliWxxcxWxxcxServiceProvider::class,
    发布配置文件:
    php artisan vendor:publish --tag=wxxcx

    命令完成后,会添加一个wxxcx.php配置文件到您的配置文件夹 如 : /config/wxxcx.php

    生成配置文件后,将小程序的 AppIDAppSecret 填写到 /config/wxxcx.php 文件中

    在Laravel 5控制器中使用 (示例)

    ...
    
    use IwanliWxxcxWxxcx;
    
    class WxxcxController extends Controller
    {
        protected $wxxcx;
    
        function __construct(Wxxcx $wxxcx)
        {
            $this->wxxcx = $wxxcx;
        }
    
        /**
         * 小程序登录获取用户信息
         * @author 晚黎
         * @date   2017-05-27T14:37:08+0800
         * @return [type]                   [description]
         */
        public function getWxUserInfo()
        {
            //code 在小程序端使用 wx.login 获取
            $code = request('code', '');
            //encryptedData 和 iv 在小程序端使用 wx.getUserInfo 获取
            $encryptedData = request('encryptedData', '');
            $iv = request('iv', '');
    
            //根据 code 获取用户 session_key 等信息, 返回用户openid 和 session_key
            $userInfo = $this->wxxcx->getLoginInfo($code);
    
            //获取解密后的用户信息
            return $this->wxxcx->getUserInfo($encryptedData, $iv);
        }
    }

    用户信息返回格式:

    {
        "openId": "xxxx",
        "nickName": "晚黎",
        "gender": 1,
        "language": "zh_CN",
        "city": "",
        "province": "Shanghai",
        "country": "CN",
        "avatarUrl": "http://wx.qlogo.cn/mmopen/xxxx",
        "watermark": {
            "timestamp": 1495867603,
            "appid": "your appid"
        }
    }

    小程序端获取 code、iv、encryptedData 向服务端发送请求示例代码:

    //调用登录接口
    wx.login({
        success: function (response) {
            var code = response.code
            wx.getUserInfo({
                success: function (resp) {
                    wx.request({
                        url: 'your domain',
                        data: {
                            code: code,
                            iv: resp.iv,
                            encryptedData: resp.encryptedData
                        },
                        success: function (res) {
                            console.log(res.data)
                        }
                    })
                }
            })
        },
        fail:function(){
            ...
        }
    })

    摘自:https://segmentfault.com/a/1190000009580577

  • 相关阅读:
    java基础学习——编辑器的使用(一)
    nginx配置文件重写url不带index.php
    解决Too many open files问题
    内存溢出
    NetworkInterface获取主机ip,判断内外网
    克隆
    StringUtil
    Model与Record转换适配
    字符串操作工具类
    利用反射机制动态的调用类信息
  • 原文地址:https://www.cnblogs.com/jdwang-admin/p/7872850.html
Copyright © 2020-2023  润新知