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

  • 相关阅读:
    matlab中的开方sqrt用牛顿迭代法实现的代码
    转载 迭代算法实现开平方
    关于verilog中小数直接赋值
    关于verilog中的signed类型
    第二十五篇:使用 sigaction 函数实现可靠信号
    第二十四篇:可靠信号机制
    第二十三篇:信号机制的两个思考
    第二十二篇:信号的接收和处理
    hdu 2918(IDA*)
    hdu 1813(IDA*)
  • 原文地址:https://www.cnblogs.com/bainiu/p/7541925.html
Copyright © 2011-2022 走看看