zoukankan      html  css  js  c++  java
  • Laravel 5 微信小程序扩展

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

    百牛信息技术bainiu.ltd整理发布于博客园

    小程序API接口

    • 用户登录:wx.login
    • 获取用户信息: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

    生成配置文件后,将小程序的 AppID 和 AppSecret 填写到 /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(){
            ...
        }
    })

    github地址:https://github.com/lanceWan/wxxcx
    packagist地址: https://packagist.org/packages/iwanli/wxxcx

  • 相关阅读:
    PhoneApplicationPage 之观察 触摸事件 GIS
    读书笔记 之 image GIS
    button 样式 GIS
    TextBlock GIS
    textgame GIS
    c#对List或ListArray或string组数 用linq进行分组统计
    彗星撞地球 怀念下Warez组织的经典力作(15G动画压缩成64Kb的那个)
    .NET Framework各版本独立下载.NET Framework 3.5下载.NET Framework 2.0下载
    asp.net 导出excel 表之后 按钮 页面控件失效不可用,没反应的解决办法。
    SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005 下载SQL Server 2000 下载
  • 原文地址:https://www.cnblogs.com/bainiu/p/7541925.html
Copyright © 2011-2022 走看看