新手必看

新手必看

常见问题必读帮助文件
鸿宇官网

鸿宇官网

鸿宇科技官方网站
鸿宇教程库

鸿宇教程库

鸿宇科技官方教程
功能反馈与建议

功能反馈与建议

BUG反馈问题建议
鸿宇淘宝店铺

鸿宇淘宝店铺

鸿宇官方唯一淘宝店铺
旺迈特官网

旺迈特官网

B2B2C新零售智慧生态电商系统
旺迈特演示站点

旺迈特演示站点

新零售智慧生态电商系统
获取论坛账号

获取论坛账号

点击免费开通论坛账号

Java Maven 源改为国内阿里云镜像

JavaShadow 发表了文章 • 0 个评论 • 74 次浏览 • 2020-06-25 16:31 • 来自相关话题

由于众所周知的原因,maven的库在中国大陆非常慢。我在百度上搜到的大部分文章都是直接在~/.m2/settings.xml 加入以下内容 <mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>其实这样设置,我发现其实镜像并没有改变,还是maven的中央库。在maven 库的官网上http://maven.apache.org/settings.html,是建议我们这样设置的(文章底部提供settings.xml文件下载压缩包)<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云谷歌仓库</name>
<url>https://maven.aliyun.com/repository/google</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云阿帕奇仓库</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring仓库</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring插件仓库</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror>
</mirrors>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>这样设置之后,我发现maven库确实改成了阿里云库。
 
转载出处: https://zhuanlan.zhihu.com/p/71998219

  查看全部
由于众所周知的原因,maven的库在中国大陆非常慢。我在百度上搜到的大部分文章都是直接在~/.m2/settings.xml 加入以下内容
  <mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
其实这样设置,我发现其实镜像并没有改变,还是maven的中央库。在maven 库的官网上http://maven.apache.org/settings.html,是建议我们这样设置的(文章底部提供settings.xml文件下载压缩包)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云谷歌仓库</name>
<url>https://maven.aliyun.com/repository/google</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云阿帕奇仓库</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring仓库</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring插件仓库</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror>
</mirrors>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>
这样设置之后,我发现maven库确实改成了阿里云库。
 
转载出处: https://zhuanlan.zhihu.com/p/71998219

 

ECshop鸿宇小京东 - 二级域名切换跳转时session不同步,解决session无法共享同步导致无法登陆的问题

小京东万华源码 发表了文章 • 0 个评论 • 104 次浏览 • 2020-06-19 23:45 • 来自相关话题

 
ecshop 二级域名切换时,比如你的域名是www.example.com  ,跳转到abc.example.com,那么会导致session无法获取到而无法登陆的问题。

解决方法,找到includes/init.php

1、在
@ini_set('session.cache_expire',  180);

前,添加如下代码,将.example.com换成你的域名,注意有一个“.”符号 ecshop模板
@ini_set("session.cookie_domain",'.example.com');

2、找到你data/config.php

将如下代码

$cookie_domain    = "";

替换为:

$cookie_domain    = ".example.com";

3、此时其实已经生效,但你的本地会有缓存,无法看到效果,清除一下浏览器缓存。此时问题已经解决! 查看全部
 
ecshop 二级域名切换时,比如你的域名是www.example.com  ,跳转到abc.example.com,那么会导致session无法获取到而无法登陆的问题。

解决方法,找到includes/init.php

1、在
@ini_set('session.cache_expire',  180);

前,添加如下代码,将.example.com换成你的域名,注意有一个“.”符号 ecshop模板
@ini_set("session.cookie_domain",'.example.com');

2、找到你data/config.php

将如下代码

$cookie_domain    = "";

替换为:

$cookie_domain    = ".example.com";

3、此时其实已经生效,但你的本地会有缓存,无法看到效果,清除一下浏览器缓存。此时问题已经解决!

大商创 - 微信支付在微信App内不显示按钮问题解决方案

大商创万华源码 发表了文章 • 0 个评论 • 139 次浏览 • 2020-06-17 18:13 • 来自相关话题

 
一、问题原因:
 
1. 无法获取微信openid:文件 mobile/app/Plugins/payment/wxpay.php 中 get_code() 函数无法正确获取 openid 造成按钮不显示问题。
2.生成订单号逻辑错误, 会造成微信接口返回订单号重复错误。

二、解决方案:
 
1. 打开文件 mobile/app/Plugins/payment/wxpay.php 约 55 行,修改get_code()函数代码:public function get_code($order, $payment)
{
include_once BASE_PATH . 'Helpers/payment_helper.php';
$this->payment = $payment;
$options = array('appid' => $this->payment['wxpay_appid'], 'mch_id' => $this->payment['wxpay_mchid'], 'key' => $this->payment['wxpay_key']);
if (isset($this->payment['wxpay_sub_mch_id']) && !empty($this->payment['wxpay_sub_mch_id'])) {
$options['sub_mch_id'] = $this->payment['wxpay_sub_mch_id'];
}

$weObj = new \App\Extensions\Wechat($options);
$order_amount = $order['order_amount'] * 100;

if (!is_wechat_browser()) {
$scene_info = json_encode(array(
'h5_info' => array('type' => 'Wap', 'wap_url' => __URL__, 'wap_name' => C('shop.shop_name'))
));
$this->setParameter('body', $order['order_sn']);
$this->setParameter('out_trade_no', $order['order_sn'] . time() . 'A' . $order['log_id']);
$this->setParameter('total_fee', $order_amount);
$this->setParameter('spbill_create_ip', $this->get_client_ip());
$this->setParameter('notify_url', notify_url(basename(__FILE__, '.php')));
$this->setParameter('trade_type', 'MWEB');
$this->setParameter('scene_info', $scene_info);
$respond = $weObj->PayUnifiedOrder($this->parameters);

if (isset($respond['mweb_url'])) {
if ($respond['result_code'] == 'SUCCESS') {
$redirect_url = __URL__ . '/respond.php?code=wxpay&type=wxh5&log_id=' . $order['log_id'];
}

$button = '<a class="box-flex btn-submit" type="button" onclick="window.open(\'' . $respond['mweb_url'] . '&redirect_url=' . urlencode($redirect_url) . '\')">微信支付</a>';
} else {
$button = '';
return false;
}
} else {
$openid = '';
if (isset($_SESSION['openid']) && !empty($_SESSION['openid'])) {
$openid = $_SESSION['openid'];
} else {
if (isset($_SESSION['openid_base']) && !empty($_SESSION['openid_base'])) {
$openid = $_SESSION['openid_base'];
} else {
//return false;
$openid = $this->getOpenid();
}
}

$this->setParameter('openid', $openid);
$this->setParameter('body', $order['order_sn']);
$this->setParameter('out_trade_no', $order['order_sn'] . time() . 'A' . $order['log_id']);
$this->setParameter('total_fee', $order_amount);
$this->setParameter('spbill_create_ip', $this->get_client_ip());
$this->setParameter('notify_url', notify_url(basename(__FILE__, '.php')));
$this->setParameter('trade_type', 'JSAPI');
$respond = $weObj->PayUnifiedOrder($this->parameters, true);
$jsApiParameters = json_encode($respond);
$js = "<script language=\"javascript\">\r\n function jsApiCall(){WeixinJSBridge.invoke(\"getBrandWCPayRequest\"," . $jsApiParameters . ',function(res){if(res.err_msg == "get_brand_wcpay_request:ok"){location.href="' . return_url(basename(__FILE__, '.php')) . '&status=1&log_id=' . $order['log_id'] . '"}else{location.href="' . return_url(basename(__FILE__, '.php')) . '&status=0&log_id=' . $order['log_id'] . "\"}})};function callpay(){if (typeof WeixinJSBridge == \"undefined\"){if( document.addEventListener ){document.addEventListener(\"WeixinJSBridgeReady\", jsApiCall, false);}else if (document.attachEvent){document.attachEvent(\"WeixinJSBridgeReady\", jsApiCall);document.attachEvent(\"onWeixinJSBridgeReady\", jsApiCall);}}else{jsApiCall();}}\r\n </script>";
$button = '<a class="box-flex btn-submit" type="button" onclick="callpay();">微信支付</a>' . $js;
}

return $button;
}2. 打开文件 mobile/app/Plugins/payment/wxpay.php 约 365 行,修改getOpenid()函数代码:private function getOpenid()
{
if (!isset($_GET['code'])) {
$redirectUrl = urlencode('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . (!empty($_SERVER['QUERY_STRING']) ? '?' : '') . $_SERVER['QUERY_STRING']);
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->payment['wxpay_appid'] . '&redirect_uri=' . $redirectUrl . '&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect';
header('Location: ' . $url);
exit();
} else {
$code = $_GET['code'];
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->payment['wxpay_appid'] . '&secret=' . $this->payment['wxpay_appsecret'] . '&code=' . $code . '&grant_type=authorization_code';

/*
$result = \App\Extensions\Http::doGet($url);

if ($result) {
$json = json_decode($result);
if (isset($json['errCode']) && $json['errCode']) {
return false;
}

$_SESSION['openid_base'] = $json['openid'];
return $json['openid'];
}

return false;
*/

$get_token_url = $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $get_token_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res, true);
$openid = $json_obj['openid'];
$_SESSION['openid'] = $openid;
return $openid;
}
}
 3. 代码修改重点











 
  查看全部
 
一、问题原因:
 
1. 无法获取微信openid:文件 mobile/app/Plugins/payment/wxpay.php 中 get_code() 函数无法正确获取 openid 造成按钮不显示问题。
2.生成订单号逻辑错误, 会造成微信接口返回订单号重复错误。

二、解决方案:
 
1. 打开文件 mobile/app/Plugins/payment/wxpay.php 约 55 行,修改get_code()函数代码:
public function get_code($order, $payment)
{
include_once BASE_PATH . 'Helpers/payment_helper.php';
$this->payment = $payment;
$options = array('appid' => $this->payment['wxpay_appid'], 'mch_id' => $this->payment['wxpay_mchid'], 'key' => $this->payment['wxpay_key']);
if (isset($this->payment['wxpay_sub_mch_id']) && !empty($this->payment['wxpay_sub_mch_id'])) {
$options['sub_mch_id'] = $this->payment['wxpay_sub_mch_id'];
}

$weObj = new \App\Extensions\Wechat($options);
$order_amount = $order['order_amount'] * 100;

if (!is_wechat_browser()) {
$scene_info = json_encode(array(
'h5_info' => array('type' => 'Wap', 'wap_url' => __URL__, 'wap_name' => C('shop.shop_name'))
));
$this->setParameter('body', $order['order_sn']);
$this->setParameter('out_trade_no', $order['order_sn'] . time() . 'A' . $order['log_id']);
$this->setParameter('total_fee', $order_amount);
$this->setParameter('spbill_create_ip', $this->get_client_ip());
$this->setParameter('notify_url', notify_url(basename(__FILE__, '.php')));
$this->setParameter('trade_type', 'MWEB');
$this->setParameter('scene_info', $scene_info);
$respond = $weObj->PayUnifiedOrder($this->parameters);

if (isset($respond['mweb_url'])) {
if ($respond['result_code'] == 'SUCCESS') {
$redirect_url = __URL__ . '/respond.php?code=wxpay&type=wxh5&log_id=' . $order['log_id'];
}

$button = '<a class="box-flex btn-submit" type="button" onclick="window.open(\'' . $respond['mweb_url'] . '&redirect_url=' . urlencode($redirect_url) . '\')">微信支付</a>';
} else {
$button = '';
return false;
}
} else {
$openid = '';
if (isset($_SESSION['openid']) && !empty($_SESSION['openid'])) {
$openid = $_SESSION['openid'];
} else {
if (isset($_SESSION['openid_base']) && !empty($_SESSION['openid_base'])) {
$openid = $_SESSION['openid_base'];
} else {
//return false;
$openid = $this->getOpenid();
}
}

$this->setParameter('openid', $openid);
$this->setParameter('body', $order['order_sn']);
$this->setParameter('out_trade_no', $order['order_sn'] . time() . 'A' . $order['log_id']);
$this->setParameter('total_fee', $order_amount);
$this->setParameter('spbill_create_ip', $this->get_client_ip());
$this->setParameter('notify_url', notify_url(basename(__FILE__, '.php')));
$this->setParameter('trade_type', 'JSAPI');
$respond = $weObj->PayUnifiedOrder($this->parameters, true);
$jsApiParameters = json_encode($respond);
$js = "<script language=\"javascript\">\r\n function jsApiCall(){WeixinJSBridge.invoke(\"getBrandWCPayRequest\"," . $jsApiParameters . ',function(res){if(res.err_msg == "get_brand_wcpay_request:ok"){location.href="' . return_url(basename(__FILE__, '.php')) . '&status=1&log_id=' . $order['log_id'] . '"}else{location.href="' . return_url(basename(__FILE__, '.php')) . '&status=0&log_id=' . $order['log_id'] . "\"}})};function callpay(){if (typeof WeixinJSBridge == \"undefined\"){if( document.addEventListener ){document.addEventListener(\"WeixinJSBridgeReady\", jsApiCall, false);}else if (document.attachEvent){document.attachEvent(\"WeixinJSBridgeReady\", jsApiCall);document.attachEvent(\"onWeixinJSBridgeReady\", jsApiCall);}}else{jsApiCall();}}\r\n </script>";
$button = '<a class="box-flex btn-submit" type="button" onclick="callpay();">微信支付</a>' . $js;
}

return $button;
}
2. 打开文件 mobile/app/Plugins/payment/wxpay.php 约 365 行,修改getOpenid()函数代码:
private function getOpenid()
{
if (!isset($_GET['code'])) {
$redirectUrl = urlencode('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . (!empty($_SERVER['QUERY_STRING']) ? '?' : '') . $_SERVER['QUERY_STRING']);
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->payment['wxpay_appid'] . '&redirect_uri=' . $redirectUrl . '&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect';
header('Location: ' . $url);
exit();
} else {
$code = $_GET['code'];
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->payment['wxpay_appid'] . '&secret=' . $this->payment['wxpay_appsecret'] . '&code=' . $code . '&grant_type=authorization_code';

/*
$result = \App\Extensions\Http::doGet($url);

if ($result) {
$json = json_decode($result);
if (isset($json['errCode']) && $json['errCode']) {
return false;
}

$_SESSION['openid_base'] = $json['openid'];
return $json['openid'];
}

return false;
*/

$get_token_url = $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $get_token_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res, true);
$openid = $json_obj['openid'];
$_SESSION['openid'] = $openid;
return $openid;
}
}

 3. 代码修改重点

Snipaste_2020-06-19_11-06-59.png


Snipaste_2020-06-19_11-07-42.png


 
 

App封装(手机端封装App)教程 - 鸿宇科技

鸿宇教程库Shadow 发表了文章 • 0 个评论 • 275 次浏览 • 2020-05-30 10:01 • 来自相关话题

官方出品:鸿宇科技
官方网址:hongyuvip.com
鸿宇论坛:bbs.hongyuvip.com
ebestmall会员QQ群:87516690
鸿宇普通QQ群:90664526

******************** 封装步骤 ********************

一、主要步骤:

1、首先打开网站 www.appcan.cn 注册一个会员并登陆

2、打开http://dashboard.appcan.cn/app/manage

3、点击创建应用 => 填写您app的名称跟描述 => 点击确认 => 详细步骤(参考二、详细步骤) => 然后点击应用打包

二、详细步骤:

1、第一步需要制作一张180*180的app按钮图片上传 点击保存(就是你APP软件的按钮了)

2、然后点击启动页设置,这里按照尺寸上传你APP的启动图片 点击保存

3、下面点击云端打包 ,勾选 web app模式 在网站地址中填上你 的手机版域名http://域名/mobile 然后在选择平台,安卓跟ios打钩,在下面的版本号随便写个数字点击生成安装包OK ,app就制作好了。

三、友情提醒

1、服务器存储地址 => (取消勾选)蓝汛服务器,即可免费封装。

2、该网站可以适用于各种wap网站的在线封装,还是不错的!想要那种带有独立功能的需要自己找个技术员做原生态开发啦!! 查看全部
官方出品:鸿宇科技
官方网址:hongyuvip.com
鸿宇论坛:bbs.hongyuvip.com
ebestmall会员QQ群:87516690
鸿宇普通QQ群:90664526

******************** 封装步骤 ********************

一、主要步骤:

1、首先打开网站 www.appcan.cn 注册一个会员并登陆

2、打开http://dashboard.appcan.cn/app/manage

3、点击创建应用 => 填写您app的名称跟描述 => 点击确认 => 详细步骤(参考二、详细步骤) => 然后点击应用打包

二、详细步骤:

1、第一步需要制作一张180*180的app按钮图片上传 点击保存(就是你APP软件的按钮了)

2、然后点击启动页设置,这里按照尺寸上传你APP的启动图片 点击保存

3、下面点击云端打包 ,勾选 web app模式 在网站地址中填上你 的手机版域名http://域名/mobile 然后在选择平台,安卓跟ios打钩,在下面的版本号随便写个数字点击生成安装包OK ,app就制作好了。

三、友情提醒

1、服务器存储地址 => (取消勾选)蓝汛服务器,即可免费封装。

2、该网站可以适用于各种wap网站的在线封装,还是不错的!想要那种带有独立功能的需要自己找个技术员做原生态开发啦!!

ECshop鸿宇小京东 - 商品批量设置:新品、热销、精选、并且首页显示商品

鸿宇教程库Shadow 发表了文章 • 0 个评论 • 332 次浏览 • 2020-05-22 14:37 • 来自相关话题

执行SQL语句快速设置:(PC后台管理 => 数据库管理 => SQL查询 => 提交下面语句即可)

UPDATE ecs_goods SET is_best=1,is_new=1,is_hot=1;

执行完成后,请点击依次网站右上角:更新首页静态、更新全部静态、清除缓存、手机缓存,网站才会显示修改后的数据! 查看全部
执行SQL语句快速设置:(PC后台管理 => 数据库管理 => SQL查询 => 提交下面语句即可)

UPDATE ecs_goods SET is_best=1,is_new=1,is_hot=1;

执行完成后,请点击依次网站右上角:更新首页静态、更新全部静态、清除缓存、手机缓存,网站才会显示修改后的数据!

MySQL5.7 执行sql语句报错 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause 解决方案

MySQLShadow 发表了文章 • 0 个评论 • 257 次浏览 • 2020-05-22 14:36 • 来自相关话题

一、执行sql 语句:select version(),
@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));二、重启MySQL服务
一、执行sql 语句:
select version(),
@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
二、重启MySQL服务

ECshop鸿宇小京东 - 分类id查看/分类链接地址获取

鸿宇教程库Shadow 发表了文章 • 0 个评论 • 313 次浏览 • 2020-05-21 13:33 • 来自相关话题

一、填写格式:
http://你的域名/category.php?id=[分类ID]二:分类ID获取方式:




 
一、填写格式:
http://你的域名/category.php?id=[分类ID]
二:分类ID获取方式:
Snipaste_2020-05-21_13-31-06.png

 

浏览器无法唤起QQ进行聊天解决方案

其它Shadow 发表了文章 • 0 个评论 • 306 次浏览 • 2020-05-12 19:52 • 来自相关话题

问题说明:从浏览器唤起QQ进行聊天,是很多公司或者企业会用到的一种客服方式,然而很多时候,一些手机端浏览器并不支持直接跳转到QQ,或者不支持从App内嵌的网页中跳转到QQ页面。
 
解决方案:
 
一、打开 https://shang.qq.com/v3/widget.html 登录你的QQ客服账号。
 
二、登录后会弹出QQ推广弹框,提示开通后立即体验通讯组件,请点击【立即免费开通】按钮,即可正常使用QQ客服外链功能了。





扩展介绍:
 
针对跳转唤起QQ,QQ推广的官方网站https://shang.qq.com/v3/index.html,只需要扫描登录需要被唤起的QQ号,就可以生成一段代码如下所示<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=123456789&site=qq&menu=yes">
<img border="0" src="http://wpa.qq.com/pa?p=2:123456789:52" alt="点击这里给我发消息" title="点击这里给我发消息"/>
</a>这里的数字“123456789”就是需要被唤起的QQ号码。

应用这种方式,可以在大部分的浏览器中唤起QQ客户端,并定位到聊天页面,只是以下几种情况中这种方式会失效:

苹果手机自带的 Safari 浏览器会提示是否在AppStore中打开链接,如果选择是就会直接跳转到App Store 中,然后才能跳转到QQ,但是两次跳转会丢失参数,导致不能打开需要聊天的对象。

在手机端Google浏览器中也会存在类似于 1 中的情况

网页内嵌到自开发的App中,需要唤起QQ时也会出现类似与 1 的情况。

由于Safari浏览器在苹果手机端使用率很高,应业务需求,就不得不为它找一种另外的方式。

通过了解,发现app之间的联系可以通过一种叫做深度链接的技术解决,所谓的深度链接就是绕过网站的首页直接链接道分页的一种链接技术,具体想要了解的可以看看LinkedMe上的一片博文https://www.linkedme.cc/blog/...。

深度链接中的一个解决方案就是定义一个新的URL Scheme ,这个URL Scheme可以通过特定的URI方式传递参数给另一个APP,从而改变App之间独立不通信的局面。

单独说倒唤起QQ,或者解决Safari浏览器不能唤起QQ的问题,可以使用如下的URI:mqqwpa://im/chat?chat_type=wpa&uin=123456789&version=1&src_type=web&web_src=oicqzone.com其中数字“123456789”同样的是需要被唤起的QQ。<a target="_blank" href="mqqwpa://im/chat?chat_type=wpa&uin=123456789&version=1&src_type=web&web_src=oicqzone.com">
123456789
</a>通过多次测试,我整理出如下手机端浏览器唤起QQ的各种不同情况(其中no代表测试不成功,ok代表测试成功):




这里需要提到一点,将URL Scheme 的方案用于电脑的各种浏览器从而去唤起QQ是不起任何效果,因为URL Scheme是专门为解决APP之间孤立的情况而提出来的,并不适用于电脑应用,但是在电脑端可以使用QQ推广给出的的方案。

知道了如何解决App跳转到QQ的方法,但是很多时候我们希望有一种通用的办法可以解决上述几种情况,保证在大多数浏览器(包括电脑浏览器)只需要一套代码就可以解决问题。

我个人通过判断浏览器的userAgent区分手机端浏览器还是电脑端浏览器,然后为它们分别提供不同的方案:
 
 
HTML代码<a href="javascript:void(0)" data-qq='qq'>111111111111</a>JavaScript代码window.onload = function () {

var as = document.getElementsByTagName('a');

var kefu101 = "http://wpa.qq.com/msgrd?v=3&uin=381232999&site=oicqzone.com&menu=yes";
var kefu102 = "mqqwpa://im/chat?chat_type=wpa&uin=381232999&version=1&src_type=web&web_src=oicqzone.com";

for (var i = 0, len = a.length; i < len; i++) {

if (as.hasAttribute('data-qq')) {

as.onclick = (function (i) {

return function (e) {

var kefu = e.target ? e.target.getAttribute('data-qq') : e.srcElement.getAttribute('data-qq');

if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) || /(Android)/i.test(navigator.userAgent)) {

window.open(kefu102);
}else {
window.open(kefu101);
}
}
})(i);
}
}
};
 这套方案中,手机端使用URL Scheme,电脑端使用QQ推广的方案。
  查看全部
问题说明:从浏览器唤起QQ进行聊天,是很多公司或者企业会用到的一种客服方式,然而很多时候,一些手机端浏览器并不支持直接跳转到QQ,或者不支持从App内嵌的网页中跳转到QQ页面。
 
解决方案
 
一、打开 https://shang.qq.com/v3/widget.html 登录你的QQ客服账号。
 
二、登录后会弹出QQ推广弹框,提示开通后立即体验通讯组件,请点击【立即免费开通】按钮,即可正常使用QQ客服外链功能了。
QQ图片20200512195316.png


扩展介绍
 
针对跳转唤起QQ,QQ推广的官方网站https://shang.qq.com/v3/index.html,只需要扫描登录需要被唤起的QQ号,就可以生成一段代码如下所示
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=123456789&site=qq&menu=yes">
<img border="0" src="http://wpa.qq.com/pa?p=2:123456789:52" alt="点击这里给我发消息" title="点击这里给我发消息"/>
</a>
这里的数字“123456789”就是需要被唤起的QQ号码。

应用这种方式,可以在大部分的浏览器中唤起QQ客户端,并定位到聊天页面,只是以下几种情况中这种方式会失效:

苹果手机自带的 Safari 浏览器会提示是否在AppStore中打开链接,如果选择是就会直接跳转到App Store 中,然后才能跳转到QQ,但是两次跳转会丢失参数,导致不能打开需要聊天的对象。

在手机端Google浏览器中也会存在类似于 1 中的情况

网页内嵌到自开发的App中,需要唤起QQ时也会出现类似与 1 的情况。

由于Safari浏览器在苹果手机端使用率很高,应业务需求,就不得不为它找一种另外的方式。

通过了解,发现app之间的联系可以通过一种叫做深度链接的技术解决,所谓的深度链接就是绕过网站的首页直接链接道分页的一种链接技术,具体想要了解的可以看看LinkedMe上的一片博文https://www.linkedme.cc/blog/...。

深度链接中的一个解决方案就是定义一个新的URL Scheme ,这个URL Scheme可以通过特定的URI方式传递参数给另一个APP,从而改变App之间独立不通信的局面。

单独说倒唤起QQ,或者解决Safari浏览器不能唤起QQ的问题,可以使用如下的URI:
mqqwpa://im/chat?chat_type=wpa&uin=123456789&version=1&src_type=web&web_src=oicqzone.com
其中数字“123456789”同样的是需要被唤起的QQ。
<a target="_blank" href="mqqwpa://im/chat?chat_type=wpa&uin=123456789&version=1&src_type=web&web_src=oicqzone.com">
123456789
</a>
通过多次测试,我整理出如下手机端浏览器唤起QQ的各种不同情况(其中no代表测试不成功,ok代表测试成功):
4081504051-57e66574e5c26_articlex.png

这里需要提到一点,将URL Scheme 的方案用于电脑的各种浏览器从而去唤起QQ是不起任何效果,因为URL Scheme是专门为解决APP之间孤立的情况而提出来的,并不适用于电脑应用,但是在电脑端可以使用QQ推广给出的的方案。

知道了如何解决App跳转到QQ的方法,但是很多时候我们希望有一种通用的办法可以解决上述几种情况,保证在大多数浏览器(包括电脑浏览器)只需要一套代码就可以解决问题。

我个人通过判断浏览器的userAgent区分手机端浏览器还是电脑端浏览器,然后为它们分别提供不同的方案:
 
 
HTML代码
<a href="javascript:void(0)" data-qq='qq'>111111111111</a>
JavaScript代码
window.onload = function () {

var as = document.getElementsByTagName('a');

var kefu101 = "http://wpa.qq.com/msgrd?v=3&uin=381232999&site=oicqzone.com&menu=yes";
var kefu102 = "mqqwpa://im/chat?chat_type=wpa&uin=381232999&version=1&src_type=web&web_src=oicqzone.com";

for (var i = 0, len = a.length; i < len; i++) {

if (as.hasAttribute('data-qq')) {

as.onclick = (function (i) {

return function (e) {

var kefu = e.target ? e.target.getAttribute('data-qq') : e.srcElement.getAttribute('data-qq');

if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) || /(Android)/i.test(navigator.userAgent)) {

window.open(kefu102);
}else {
window.open(kefu101);
}
}
})(i);
}
}
};

 这套方案中,手机端使用URL Scheme,电脑端使用QQ推广的方案。
 

CentOS7.*更新yum为阿里源,解决软件无法安装更新的问题

其它Shadow 发表了文章 • 0 个评论 • 313 次浏览 • 2020-05-09 11:00 • 来自相关话题

1.设置联网;2.更换镜像源为国内源,便于更新和下载软件。

Ubuntu方面很快解决,但是打开了里面的文件修改内容,换镜像源为阿里源;接着修改CentOS7.0时想更快的换镜像源,于是就直接用命令行解决问题,解决方案如下:
(我是用普通用户加sudo操作改的,你也可以直接切换到root权限用户进行修改,不过不推荐;)
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache命令行解释:
备份原始的镜像源:
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

下载并设置镜像源为aliyun:
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

下载并设置EPEL源,此源中包含较多软件:
sudo wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo

清理yum缓存:yum clean all

创建yum缓存: yum makecache

更新成功后,安装一个小火车软件秀起来吧: sudo yum install s
依次输入每个命令行并执行就可更新CentOS的镜像源,本设置基于CentOS7.0版本,对于相近的版本亦有效。

解释一下EPEL 源(Extra Packages for Enterprise Linux),为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS等,里面有1万多个软件,所以推荐大家安装。很多你发现无法安装的软件,都可以在EPEL里找到。
————————————————
版权声明:本文为CSDN博主「槿梓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41890971/article/details/86517304 查看全部
1.设置联网;2.更换镜像源为国内源,便于更新和下载软件。

Ubuntu方面很快解决,但是打开了里面的文件修改内容,换镜像源为阿里源;接着修改CentOS7.0时想更快的换镜像源,于是就直接用命令行解决问题,解决方案如下:
(我是用普通用户加sudo操作改的,你也可以直接切换到root权限用户进行修改,不过不推荐;)
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
命令行解释:
备份原始的镜像源:
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

下载并设置镜像源为aliyun:
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

下载并设置EPEL源,此源中包含较多软件:
sudo wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo

清理yum缓存:yum clean all

创建yum缓存: yum makecache

更新成功后,安装一个小火车软件秀起来吧: sudo yum install s

依次输入每个命令行并执行就可更新CentOS的镜像源,本设置基于CentOS7.0版本,对于相近的版本亦有效。

解释一下EPEL 源(Extra Packages for Enterprise Linux),为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS等,里面有1万多个软件,所以推荐大家安装。很多你发现无法安装的软件,都可以在EPEL里找到。
————————————————
版权声明:本文为CSDN博主「槿梓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41890971/article/details/86517304

阿里云apt-get安装包时Err:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git amd64 1:2.7.4-0ubuntu1.2 404 Not Found

其它Shadow 发表了文章 • 0 个评论 • 339 次浏览 • 2020-05-08 08:37 • 来自相关话题

新部署的云服务器出现如下错误:root@iZj6cbjalvhsw0fhndmm5xZ:~# apt-get install git
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
git-man liberror-perl
Suggested packages:
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn
The following NEW packages will be installed:
git git-man liberror-perl
upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,898 kB/3,918 kB of archives.
After this operation, 25.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Ign:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/main i386 git-man all 1:2.7.4-0ubuntu1.2
Ign:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git amd64 1:2.7.4-0ubuntu1.2
Ign:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git-man all 1:2.7.4-0ubuntu1.2
Err:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git amd64 1:2.7.4-0ubuntu1.2
Not Found
Err:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main i386 git-man all 1:2.7.4-0ubuntu1.2
Not Found
Err:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main i386 git-man all 1:2.7.4-0ubuntu1.2
Not Found
E: Failed to fetch http://mirrors.cloud.aliyuncs.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1.2_all.deb 404 Not Found

E: Failed to fetch http://mirrors.cloud.aliyuncs.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1.2_amd64.deb 404 Not Found

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?超简单,更新一下源就可以了。

Ubuntusudo apt-get update 
CentOSsudo yum update
* CentOS7.*更新yum为阿里源,解决软件无法安装更新的问题 查看全部
新部署的云服务器出现如下错误:
root@iZj6cbjalvhsw0fhndmm5xZ:~# apt-get install git
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
git-man liberror-perl
Suggested packages:
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn
The following NEW packages will be installed:
git git-man liberror-perl
upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,898 kB/3,918 kB of archives.
After this operation, 25.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Ign:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/main i386 git-man all 1:2.7.4-0ubuntu1.2
Ign:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git amd64 1:2.7.4-0ubuntu1.2
Ign:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git-man all 1:2.7.4-0ubuntu1.2
Err:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git amd64 1:2.7.4-0ubuntu1.2
Not Found
Err:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main i386 git-man all 1:2.7.4-0ubuntu1.2
Not Found
Err:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main i386 git-man all 1:2.7.4-0ubuntu1.2
Not Found
E: Failed to fetch http://mirrors.cloud.aliyuncs.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1.2_all.deb 404 Not Found

E: Failed to fetch http://mirrors.cloud.aliyuncs.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1.2_amd64.deb 404 Not Found

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
超简单,更新一下源就可以了。

Ubuntu
sudo apt-get update
 
CentOS
sudo yum update

CentOS7.*更新yum为阿里源,解决软件无法安装更新的问题