Laravel 5 风格撸一个微信小程序扩展

2019-05-1714:53:18APP与小程序开发Comments2,274 views字数 1478阅读模式

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

小程序API接口

获取用户信息:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12521.html

安装

执行以下命令安装最新稳定版本:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12521.html

composer require iwanli/wxxcx

或者添加如下信息到你的 文件中 :文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12521.html

然后注册服务提供者到 Laravel中 具体位置:/config/ 中的 providers 数组文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12521.html

Iwanli\Wxxcx\WxxcxServiceProvider::class,
发布配置文件:
php artisan vendor:publish --tag=wxxcx

命令完成后,会添加一个配置文件到您的配置文件夹 如 : /config/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12521.html

生成配置文件后,将小程序的 AppIDAppSecret 填写到 /config/ 文件中文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12521.html

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

...

use Iwanli\Wxxcx\Wxxcx;

class WxxcxController extends Controller
{
    protected$wxxcx;

    function __construct(Wxxcx $wxxcx)
    {
        $this->wxxcx = $wxxcx;
    }

    /**
     * 小程序登录获取用户信息
     * @author 晚黎
     * @date   2017-05-27T14:37:08+0800
     * @return [type]                   [description]
     */publicfunction getWxUserInfo()
    {
        //code 在小程序端使用  获取$code = request('code', '');
        //encryptedData 和 iv 在小程序端使用  获取$encryptedData = request('encryptedData', '');
        $iv = request('iv', '');

        //根据 code 获取用户 session_key 等信息, 返回用户openid 和 session_key$userInfo = $this->wxxcx->getLoginInfo($code);

        //获取解密后的用户信息return$this->wxxcx->getUserInfo($encryptedData, $iv);
    }
}

用户信息返回格式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12521.html

{
    "openId": "xxxx",
    "nickName": "晚黎",
    "gender": 1,
    "language": "zh_CN",
    "city": "",
    "province": "Shanghai",
    "country": "CN",
    "avatarUrl": "",
    "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://www.cainiaoxueyuan.com/xcx/12521.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/12521.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定