《实现微信第三方授权扫码登录》一文中tiandi简单的叙述了一下如何实现微信第三方授权登录Ecshop系统以及公布了核心代码,主要是修改了用户的登录判定,即user.php这个文件。
本文作为上一文的补充,上文提到过,另外还需要修改模板文件和接口文件。这里的模板文件主要是增加了微信用户对老用户的绑定操作,如果您不需要做绑定操作,那么可以不改模板文件,如果您需要增加这一功能的话,tiandi也帮不上您的忙,每个人的模板都不同,只能自己改自己的咯。并且在上文提到的修改user.php的代码里也请省略下面一段,这一段只对绑定用户起作用。
/* by tiandi 微信绑定用户 从这里开始到结尾都可以不用加*/
elseif($action == 'wechatbd') {
...
}
下面是微信接口的源码,应该是无需更改,直接可以调用。
<?php
/***************************/
/* Wechat 登录 /
/* by tiandi 2014.12.6 /
/***************************/
if (defined('WEBSITE') || defined('GETINFO'))
{
global $_LANG;
$_LANG['help']['APP_KEY'] = '在微信开发者平台申请的AppID';
$_LANG['help']['APP_SECRET'] = '在微信开发者平台申请的AppSecret';
$_LANG['APP_KEY'] = 'AppID';
$_LANG['APP_SECRET'] = 'AppSecret';
$i = isset($web) ? count($web) : 0;
// 类名
$web[$i]['name'] = 'wechat';
// 文件名,不包含后缀
$web[$i]['type'] = 'wechat';
$web[$i]['className'] = 'wechat';
// 作者信息
$web[$i]['author'] = 'tiandi';
// 作者QQ
$web[$i]['qq'] = '';
// 作者邮箱
$web[$i]['email'] = '';
// 申请网址
$web[$i]['website'] = 'http://open.weixin.qq.com';
// 版本号
$web[$i]['version'] = '1.0';
// 更新日期
$web[$i]['date'] = '2014-12-6';
// 配置信息
$web[$i]['config'] = array(
array('type'=>'text' , 'name'=>'APP_KEY', 'value'=>''),
array('type'=>'text' , 'name' => 'APP_SECRET' , 'value' => ''),
);
}
if (!defined('WEBSITE'))
{
include_once(dirname(__FILE__).'/oath2.class.php');
class website extends oath2
{
function website()
{
$this->app_key = APP_KEY;
$this->app_secret = APP_SECRET;
$this->scope = 'snsapi_login';
//by tiandi authorizeURL是用来PHP打开微信登录时用,JS调用则不用authorizeURL。
$this->authorizeURL = 'https://open.weixin.qq.com/connect/qrconnect';
$this->tokenURL = 'https://api.weixin.qq.com/sns/oauth2/access_token';
$this->refreshtokenURL = 'https://api.weixin.qq.com/sns/oauth2/refresh_token';
$this->userURL = 'https://api.weixin.qq.com/sns/userinfo';
$this->meth = 'GET';
}
function Code2Token($code)
{
$params = 'appid='.$this->app_key.'&secret='.$this->app_secret.'&code='.$code.
'&grant_type=authorization_code';
$tokenurl = $this->tokenURL."?". $params;
$token = $this->http($tokenurl, 'GET');
$token = json_decode($token , true);
return $token;
}
function GetRefreshToken($token)
{
$params = 'appid='.$this->app_key.'&grant_type=refresh_token&refresh_token='.$token;
$tokenurl = $this->refreshtokenURL."?". $params;
$token = $this->http($tokenurl, 'GET');
$token = json_decode($token , true);
return $token;
}
function Getinfo($token,$openid)
{
$params = 'access_token='.$token.'&openid='.$openid;
$userurl = $this->userURL."?". $params;
$userinfo = $this->http($userurl, 'GET');
return json_decode($userinfo , true);
}
}
}
文章评分13次,平均分3.3:★★★☆☆

版主怎么联系,ecshop二次开发想找你,我qq1668828928
您好~user_passport 里面的链接应该怎么写呢
没听明白你的意思。
include_once(dirname(__FILE__).’/oath2.class.php’);
这个文件里面是什么
state 的生成, 和 $_REQUEST[‘state’] 判断该怎么写呢?
随机生成,然后返回时检查返回的值是不是和你生成的值一致即可。
感谢,大清早的回复! 鞠躬!
我还有个问题想问你。我现在已经能够支付(浪费了我好多时间,其实很简单,新版的Demo些得很不清楚),也写好了接收notify的函数,(按照文档里的要求:“商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。”)里面最后是返回echo给微信的消息,告知
$notifyReply->SetReturn_code(“SUCCESS”);
$notifyReply->SetReturn_msg(“OK”);
$notifyReply->ReplyNotify(true);
不知如何确认,这个ReplyNotify是否成功?
我登陆了下支付商户平台,好像没这个信息。
或者这个根本就不是问题。。。。
光看代码看不出这个函数怎么来的,文档里写了接收成功就返回SUCCESS给微信就行了,其他不用管了。
能不能把这个思路或者代码让我看看呢 谢谢
请问一下这文件的内容是什么呢 includes/website/jntoo.php
站内搜索一下,我记得有补这个文件的文章。
请问上面那段代码是放在哪里的呢?
includes/payment/下。
不对吧,不是这个目录下吧
请问一下微信的相关文件哪里找官网我看了 没有,我想知道dirname(__FILE__).’/oath2.class.php’和includes/website/jntoo.php这个文件是从哪里找的 方便能发个看看吗
看看自己的ecshop里有木有了。
没有怎么办 我看了一下没有
真的找不到哟,文件能提供下吗
楼主,这个插件能否完整的提供,给报酬。
ecshop和wp不同,不是真正的插件,所有的EC插件都是代码,需要自己整合的,除非是那EC的标准版来做。
恩,这个我明白的,能否给一份做参考呢
这两篇文章看懂就OK了啊,没有其它的了。
不错的说,不过微信这个东西,我始终不认为会长久