湖北元润科技有限公司 微信支付开发 内部由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“青岛微润科技有限公司”。
湖北元润科技有限公司 微信支付开发 内部
更新内容:自动获取openid,只在微信浏览器下 获取openid。到这里大家还不能搞定那实在是没天赋了。
/**
* 获取当前页面完整URL地址
*/
functionget_url(){ $sys_protocal= iet($_SERVER['SERVER_PORT'])&&$_SERVER['SERVER_PORT'] == '443'? 'https://': 'http://';$php_self= $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$path_info= iet($_SERVER['PATH_INFO'])? $_SERVER['PATH_INFO'] : '';$relate_url= iet($_SERVER['REQUEST_URI'])? $_SERVER['REQUEST_URI'] : $php_self.(iet($_SERVER['QUERY_STRING'])? '?'.$_SERVER['QUERY_STRING'] : $path_info);return$sys_protocal.(iet($_SERVER['HTTP_HOST'])? $_SERVER['HTTP_HOST'] : '').$relate_url;}
//include_once(ROOT_PATH.'includes/modules/payment/wxpay.php');
$openid=@$_COOKIE['sopenid'];
if(!$openid&&strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMeenger')!== false){
//使用jsapi接口
//$jsApi = new JsApi_pub();
if(!iet($_GET['code'])){ //=========步骤1:网页授权获取用户openid============
//通过code获得openid
//触发微信返回code码
$backurl= get_url();//$url = $jsApi->createOauthUrlForCode($backurl);$url= “https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=”.urlencode($backurl).“&response_type=code&scope=snsapi_base&state=123#wechat_redirect”;//echo $url;
Header(“Location: $url”);}else { //获取code码,以获取openid
$code= $_GET['code'];
$url= “https://api.weixin.qq.com/sns/oauth2/acce_token?appid=APPID&secret=SCRETID&code=”.$code.“&grant_type=authorization_code”;$re= file_get_contents($url);$rearr= json_decode($re,true);$openid= $rearr['openid'];//var_dump($code);
//$jsApi->setCode($code);
//$openid = $jsApi->getOpenid();
setcookie(“sopenid”,$openid,time()+864000,'/');} } //var_dump($openid);
——————————–
没有研究过ecshop插件,也不知道ecshop插件的制作流程。我就用现有插件修改了一番,让ecshop手机端支持微信支付。
1.安装:覆盖到网站根目录。注意备份原来的网站
2.配置:后台开启微信支付功能,填入相应的参数 appi,mchid , key, appsecret,支付通知url,支付成功跳转url 3.说明:
2个back 文件为备份文件不用理会,备份之前需要修改配置文件才可以成功支付,现在只要在后台安装配置参数即可开通微信支付V3。其中 mobileincludes 文件夹下的init.php文件是为了获取到微信用户openid,如果你已经获取到openid就不用覆盖整个文件。然后修改includesmodulespaymentwxpay.php大 概第168行 @$openid=$_COOKIE['sopenid'];改成你得到的openid.4.关于测试:
目前微世界商城可以正常下单支付。1.需要在微世界服务号内打开商城链接。2.需要在公众号后台添加支付人员测试白名单。满足以上两个条件才可以发起支付,支付成功后 wxpaydemonotify_url.php 会接受到通知,并改变订单状态。————————-附:获取当前页面完整URL地址
/**
* 获取当前页面完整URL地址
*/
functionget_url(){ $sys_protocal= iet($_SERVER['SERVER_PORT'])&&$_SERVER['SERVER_PORT'] == '443'? 'https://': 'http://';$php_self= $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$path_info= iet($_SERVER['PATH_INFO'])? $_SERVER['PATH_INFO'] : '';$relate_url= iet($_SERVER['REQUEST_URI'])? $_SERVER['REQUEST_URI'] : $php_self.(iet($_SERVER['QUERY_STRING'])? '?'.$_SERVER['QUERY_STRING'] : $path_info);return$sys_protocal.(iet($_SERVER['HTTP_HOST'])? $_SERVER['HTTP_HOST'] : '').$relate_url;}
微信获取昵称自动登录
经过反复几次验证,发现我这个方法有缺陷: 微信内 未关注进入网站,无法获得昵称。关注后用我这个方法可以获得昵称。
是否是因为第一次生成openid 所以还未生成昵称?待测试。
/**
* 获取当前页面完整URL地址 */
functionget_url(){ $sys_protocal= iet($_SERVER['SERVER_PORT'])&&$_SERVER['SERVER_PORT'] == '443'? 'https://': 'http://';$php_self= $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$path_info= iet($_SERVER['PATH_INFO'])? $_SERVER['PATH_INFO'] : '';$relate_url= iet($_SERVER['REQUEST_URI'])? $_SERVER['REQUEST_URI'] : $php_self.(iet($_SERVER['QUERY_STRING'])? '?'.$_SERVER['QUERY_STRING'] : $path_info);return$sys_protocal.(iet($_SERVER['HTTP_HOST'])? $_SERVER['HTTP_HOST'] : '').$relate_url;}
$wxch_config= $db-> getRow(“SELECT * FROM `ecs_weixin_config` WHERE `id` = 1”);$appid= $wxch_config['appid'];$appsecret= $wxch_config['appsecret'];
$APPID= $appid;$SCRETID=$appsecret;
if(!$_SESSION['user_id'] &&strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMeenger')!== false){
if(!iet($_GET['code'])){
$backurl= get_url();//$url = $jsApi->createOauthUrlForCode($backurl);$url= “https://open.weixin.qq.com/connect/oauth2/authorize?appid=”.$APPID.“&redirect_uri=”.urlencode($backurl).“&response_type=code&scope=snsapi_base&state=123#wechat_redirect”;//echo $url;
Header(“Location: $url”);}else { //获取code码,以获取openid $code= $_GET['code'];
$url= “https://api.weixin.qq.com/sns/oauth2/acce_token?appid=”.$APPID.“&secret=”.$SCRETID.“&code=”.$code.“&grant_type=authorization_code”;$re= curl_get_contents1($url);$rearr= json_decode($re,true);$openid= $rearr['openid'];
//var_dump($rearr);
//$jsApi->setCode($code);
//$openid = $jsApi->getOpenid();
$user_name= $db->getOne(“select uname from ecs_weixin_user where wxid = '{$openid}'”);
if($openid&&!$user_name){ //注册进入
$paw= md5('shanmao.me'.rand(1,***));$wxch_user_sql= “INSERT INTO `ecs_weixin_user`(`wxid`,`setp`)VALUES('$openid','3')”;$db-> query($wxch_user_sql);$ecs_user_id= $db-> insert_id();if($ecs_user_id
$uc_username= $rearr2['nickname']?$rearr2['nickname']: 'doubag'.$ecs_user_id;$time= gmtime();$user_sql= “INSERT INTO `ecs_users`(`user_name`,`paword`,`reg_time`)VALUES('$uc_username','$paw','$time')”;$db-> query($user_sql);$uc_update= “UPDATE ecs_weixin_user SET `uname` = '$uc_username' WHERE `uid` = '$ecs_user_id'”;$db-> query($uc_update);$user->set_seion($uc_username);$user->set_cookie($uc_username,1);update_user_info();/*
$up_uid = get_affiliate();if($up_uid>0){
$sql = 'UPDATE ecs_users SET parent_id = '.$up_uid.' WHERE user_id = '.$ecs_user_id;$db->query($sql);
header('Location: user.php?newuser=1');}*/
}else{ $user->set_seion($user_name);$user->set_cookie($user_name,1);update_user_info();}
//setcookie(“sopenid”,$openid,time()+864000,'/');} } //var_dump($openid);
functioncurl_get_contents1($url){ $ch= curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_TIMEOUT, 2);curl_setopt($ch, CURLOPT_USERAGENT, “IE 6.0”);curl_setopt($ch, CURLOPT_REFERER, “”);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);$r= curl_exec($ch);curl_close($ch);return$r;}