关于联合登录后购买产品价格为0的终极解决方案

2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家



可能很多人遇到拿联合登录插件登录后购买产品产品价格变为0了的情况,针对问此类问题人员过多,给出如下解决方案:
登录完成回调页面,有的接口叫Callback.php,登录鉴权后必须要做如下处理:
  1. update_user_info (); //ecshop内置方法,更新用户信息,建议加上
  2. recalculate_price ();//ecshop内置方法,更新购物车价格的,必加,否则价格为0
复制代码

问题解决,还有问题可以QQ:8441546
顺便给小站做个广告,http://www.517ld.com

回答:
qq登录就出现这样的问题,咱们是菜鸟,能否具体教咱们怎么操作


  1. <?php
  2. if (!function_exists('json_decode'))
  3. {
  4. throw new Exception('API needs the JSON PHP extension.');
  5. }
  6. define('IN_ECS', true);
  7. require('../../includes/init.php');
  8. include_once('../../includes/lib_transaction.php');
  9. include_once('../../includes/lib_passport.php');
  10. session_start();
  11. require_once('config.php');
  12. require_once('oauth.php');
  13. require_once('opent.php');
  14. require_once('json.class.php');

  15. $o = new MBOpenTOAuth( QQ_AKEY , QQ_SKEY , $_SESSION['keys']['oauth_token'] , $_SESSION['keys']['oauth_token_secret']);
  16. $last_key = $o->getAccessToken($_REQUEST['oauth_vericode'] ) ;
  17. $me=$o->getUserInfo($last_key['openid']);

  18. function check_user($username){
  19. $sql = "SELECT user_id, password, salt " .
  20. " FROM " . $GLOBALS['ecs']->table("users").
  21. " WHERE user_name='$username'";
  22. $row = $GLOBALS['db']->getRow($sql);
  23. if (!empty($row)){
  24. return true;
  25. }else{
  26. return false;
  27. }
  28. }
  29. if($me['nickname']!==""){
  30. $username=$me['nickname'];
  31. //$username=iconv('UTF-8','gb2312',$me['nickname']);

  32. $password=time();//随便弄个密码 反正没有用
  33. $email=$password.'@qq.com';//QQG开放平台没有返回邮箱 所以随便弄个 其他的可以根据返回情况而定
  34. $back_act ="/user.php";
  35. if (check_user($username)!==false){
  36. $GLOBALS['user']->set_session($username);
  37. $GLOBALS['user']->set_cookie($username);
  38. header("Location: /user.php\n");
  39. exit;
  40. }else{
  41. $reg_date = time();
  42. $password =md5($password);
  43. $ip=real_ip();
  44. $GLOBALS['db']->query('INSERT INTO ' . $GLOBALS['ecs']->table("users") . "(`email`, `user_name`, `password`, `reg_time`, `last_login`, `last_ip`) VALUES ('$email', '$username', '$password', '$reg_date', '$reg_date', '$ip')");
  45. $GLOBALS['user']->set_session($username);
  46. $GLOBALS['user']->set_cookie($username);
  47. header("Location: /user.php\n");
  48. exit;
  49. }
  50. }else{
  51. echo 'fail';
  52. exit;
  53. }

  54. ?>
复制代码


这个是callback.php文件源码

在这个 $GLOBALS['user']->set_cookie($username);下面增加

update_user_info (); //ecshop内置方法,更新用户信息,建议加上
recalculate_price ();//ecshop内置方法,更新购物车价格的,必加,否则价格为0