iwebshop商城,微信小程序插件,登录、注册、支付等,兼容支持原生小程序和web-view组件

名字:iwebshop微信小程序 V2.0

说明:小程序登录、注册、支付等,兼容支持原生小程序和web-view组件;

兼容性:适用于iwebshop 4.7以上所有版本

安装过程

  1. 安装时向payment数据表,添加微信小程序支付参数;

  2. 安装时创建plugins/payments/pay_mini_wechat/mini_wechat.php,微信小程序支付类;


插件开启

  1. 全局增加插件类:wechatMini,其他地方可以判断:

  2. if(class_exists('wechatMini',false)){
        return true;
    }else{
        return false;
    }
  3. 注册的拦截器:

大卫博客


拦截方式

提供header头和_skey参数两种拦截方式,关键拦截代码:

public function reg()
{
	//全局登陆拦截
	plugin::reg("onBeforeCreateAction",$this,'miniProgam');
	//小程序web-view内挂载sdk
	plugin::reg("onFinishView@simple@login",$this,"miniProgramEnv");
	if(IClient::isMini()){
		plugin::reg("onFinishView",$this,"onShareUrl");
	}
	//小程序登陆接口
	plugin::reg("onBeforeCreateAction@simple@wxlogin",function(){ $this->WxLogin(); });
}

/**
 * @作用:拦截小程序登陆参数,用户数据初始化给控制器(原生小程序、web-view皆可)
 * @说明:提供header头和_skey参数两种拦截方式
 */
public function miniProgam(){
	$controller = self::controller();
	$skey = IFilter::act(IReq::get('_skey'));	//小程序网页内携带过来的参数
	if(empty($skey)){
		//原生小程序header头
		$header = self::getHeader();
		if( isset($header['miniprogram-token']) && $header['miniprogram-token'] ){
			$skey = $header['miniprogram-token'];
		}else{
			return;
		}
	}else{
		//web-view内嵌网页
		ISession::set('_from','miniProgram');	//设置小程序环境,兼容官方IClient::isMini(),用以挂载sdk,在小程序网页内登陆和支付。
		if($skey =='miniProgram'){
			plugin::trigger('clearUser');	//登陆过期,清理用户登陆状态(用以处理,客户端cookie与服务器登陆不同步,造成的session内openid不存在 支付失败)
			return;
		}
	}
	//取缓存内登陆数据
	$data = self::getSkey($skey);
	if(isset($data['session_key']) && $data['session_key'] && isset($data['openid']) && $data['openid']){
		$unId = $data['openid'];	//openid 用户唯一标识
		if( isset($data['unionid']) && $data['unionid'] ){
			//用户在开放平台的唯一标识符,在满足UnionID下发条件的情况下会返回 [注意字母大小写]
			$unId = $data['unionid'];
		}
		self::setOpenId($unId);		//设置openid用于小程序web-view网页内支付
		if(isset($data['login']) && $data['login']){
			###此skey已经登录过,加入登陆凭证有效校验,防止凭证泄露引发的问题
			###return;
		}else{
			$data['login'] = 1;		//设置此skey已经登录标志
			self::setSkey($skey,$data,604800);		//skey凭证有效期秒,过期需重新登录
		}
		$userRow = self::login($unId);
		if(isset($userRow['id']) && isset($userRow['username']) && $userRow['id'] && $userRow['username']){
			$controller->user = $userRow;	//【小程序 唯一登陆点】
		}
	}else{
		plugin::trigger('clearUser');	//登陆过期,清理用户登陆状态(用以处理,客户端cookie与服务器登陆不同步,造成的session内openid不存在 支付失败)
	}
}


支持的登陆方式

  1. code静默登陆(用户无感知)

  2. 自定义登录态静默登陆(用户无感知)

  3. 用户授权登陆(弹出窗口需用户授权)


插件下载点此下载iwebshop微信小程序插件(含小程序支付)wechatMini.rar

小程序下载:miniProgram.rar

大卫博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论