Code前端首页关于Code前端联系我们

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

terry 2年前 (2023-09-23) 阅读数 67 #移动小程序

小程序加解密官方SDK已经很清楚了,只是刚刚改成Laravel风格,就跟瓦工一样。在重新发明轮子方面,我发现其他人的扩展在解密用户信息时出现编码错误,并且必须安装一个 Laravel Curl 扩展而不提示用户安装。没办法,只好根据他们的源码自己写了一个,不依赖其他扩展,直接安装使用即可。

小程序 API 接口

获取用户信息:

安装

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

composer require iwanli/wxxcx

或者将以下信息添加到您的 文件中:然后具体注册Laravel 中服务提供者的位置:/config/ 中的providers 数组。

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

命令完成后, 配置文件将添加到您的配置文件夹中,例如:/config/

生成配置文件后,将AppIDAppSecret填写到中的小程序中

在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);
    }
}

用户返回格式信息:

{
    "openId": "xxxx",
    "nickName": "晚黎",
    "gender": 1,
    "language": "zh_CN",
    "city": "",
    "province": "Shanghai",
    "country": "CN",
    "avatarUrl": "",
    "watermark": {
        "timestamp": 1495867603,
        "appid": "your appid"
    }
}

小程序检索代码、iv 和加密数据并向服务器发送请求。示例代码:

//调用登录接口
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(){
        ...
    }
})

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门