ECshop鸿宇小京东 - 二级域名切换跳转时session不同步,解决session无法共享同步导致无法登陆的问题
小京东 • 鸿宇 发表了文章 • 0 个评论 • 1165 次浏览 • 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 个评论 • 1993 次浏览 • 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)2. 打开文件 mobile/app/Plugins/payment/wxpay.php 约 365 行,修改getOpenid()函数代码:
{
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;
}
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. 代码修改重点
ECshop小京东 报错:Strict Standards: Only variables should be passed by reference in D:\www\includes\cls_template.php on line 422的原因及解决办法
小京东 • 鸿宇 发表了文章 • 0 个评论 • 2977 次浏览 • 2019-03-20 11:23
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
1.降低PHP版本到5.3。
2.按照错误信息中的路径找到并打开cls_template.php文件,把 $tag_sel = array_shift(explode(' ', $tag));改成:$tag_arr = explode(' ', $tag);
$tag_sel = array_shift($tag_arr);然后删除程序根目录下temp\caches下所有的文件或者通过后台清除缓存,之后刷新页面即可。
查看全部
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
1.降低PHP版本到5.3。
2.按照错误信息中的路径找到并打开cls_template.php文件,把
$tag_sel = array_shift(explode(' ', $tag));改成:
$tag_arr = explode(' ', $tag);然后删除程序根目录下temp\caches下所有的文件或者通过后台清除缓存,之后刷新页面即可。
$tag_sel = array_shift($tag_arr);
鸿宇小京东(HongYuJD-V8.0) - 免费开源 仅供技术学习交流使用
小京东 • 鸿宇 发表了文章 • 0 个评论 • 5134 次浏览 • 2019-03-20 07:52
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
获取方式:加入鸿宇QQ群,群文件下载
1、本着开源至上、用户为王、开放共赢、互利共生为核心价值观,现鸿宇科技对全网开放所有网络商城系统技术文档。
2、鸿宇论坛原所有用户账号均已恢复
3、鸿宇论坛目前论坛账号仅限原论坛用户和ebestmall系统用户,持有ebestmall系统用户可以联系管理员开通论坛账号
4、鸿宇论坛积极为广大电商系统使用者解决技术难题,原技术资料/文档/教程全部对外开放
5、鸿宇QQ群90664526可以任意交流电商软件使用/运营话题,请严格遵守国家法律规定
6、鸿宇论坛 - 免责声明及版权争议、隐私侵犯等投诉处理流程http://bbs.hongyuvip.com/?/article/340
查看全部
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
获取方式:加入鸿宇QQ群,群文件下载
1、本着开源至上、用户为王、开放共赢、互利共生为核心价值观,现鸿宇科技对全网开放所有网络商城系统技术文档。
2、鸿宇论坛原所有用户账号均已恢复
3、鸿宇论坛目前论坛账号仅限原论坛用户和ebestmall系统用户,持有ebestmall系统用户可以联系管理员开通论坛账号
4、鸿宇论坛积极为广大电商系统使用者解决技术难题,原技术资料/文档/教程全部对外开放
5、鸿宇QQ群90664526可以任意交流电商软件使用/运营话题,请严格遵守国家法律规定
6、鸿宇论坛 - 免责声明及版权争议、隐私侵犯等投诉处理流程http://bbs.hongyuvip.com/?/article/340
大商创 - 商品列表中商家名称鸿宇自营文字修改教程
鸿宇 发表了文章 • 0 个评论 • 2395 次浏览 • 2018-03-19 13:17
大商创忘记密码修改教程
郑不乖id 发表了文章 • 0 个评论 • 1661 次浏览 • 2018-03-19 09:44
SQL语句:(执行SQL语句之后 账号:admin 密码:hongyu888)
UPDATE dsc_admin_user SET user_name = 'admin', password =
'ba161cb27aa0da2de9c7d15ec311db83',ec_salt ='65' WHERE user_id = '1';
①执行SQL语句快速清空表:(PC后台管理 => 数据库管理 => SQL查询 => 提交上面SQL语句即可)
和小京东一样。只不过要注意表前缀名称!闲来无事扯蛋。感谢群主大大技术支持!
查看全部
SQL语句:(执行SQL语句之后 账号:admin 密码:hongyu888)
UPDATE dsc_admin_user SET user_name = 'admin', password =
'ba161cb27aa0da2de9c7d15ec311db83',ec_salt ='65' WHERE user_id = '1';
①执行SQL语句快速清空表:(PC后台管理 => 数据库管理 => SQL查询 => 提交上面SQL语句即可)
和小京东一样。只不过要注意表前缀名称!闲来无事扯蛋。感谢群主大大技术支持!
小京东V7.9.8 使用多用户商铺功能一定要注意服务器时间正确
小京东 • 奥兹图书店 发表了文章 • 0 个评论 • 1985 次浏览 • 2018-03-19 09:44
否则商铺后台统计“佣金管理”会出错,造成单据查不到,如果已有交易记录,改动服务器时钟后,要确保新订单是在改动之后的时间发生,否则会发生数据库错误,循环个几百万条数据到你的数据库。
如果一但发生这种事情,你只好还原备份数据库中的ecs_supplier_rebate的这个表,或者清除故障时间段之后的全部数据。清除后就可恢复正常了。 查看全部
否则商铺后台统计“佣金管理”会出错,造成单据查不到,如果已有交易记录,改动服务器时钟后,要确保新订单是在改动之后的时间发生,否则会发生数据库错误,循环个几百万条数据到你的数据库。
如果一但发生这种事情,你只好还原备份数据库中的ecs_supplier_rebate的这个表,或者清除故障时间段之后的全部数据。清除后就可恢复正常了。
大商创 - 淘宝采集使用教程
鸿宇 发表了文章 • 0 个评论 • 1873 次浏览 • 2018-03-19 09:30
大商创 - 修复系统日期显示不正确问题
鸿宇 发表了文章 • 0 个评论 • 1516 次浏览 • 2018-03-17 18:32
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
解决方案:下载附件,直接覆盖至网站根目录即可
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
解决方案:下载附件,直接覆盖至网站根目录即可
大商创 - 忘记管理员密码怎么办?
鸿宇 发表了文章 • 0 个评论 • 2473 次浏览 • 2018-03-14 16:42
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
SQL语句:(执行SQL语句之后 账号:admin 密码:hongyu888)UPDATE dsc_admin_user SET user_name = 'admin', password = 'ba161cb27aa0da2de9c7d15ec311db83',ec_salt ='65' WHERE user_id = '1';
①执行SQL语句快速清空表:(PC后台管理 => 数据库管理 => SQL查询 => 提交上面SQL语句即可)
②打开 Navicat 软件:
查看全部