epay / website /user /openid.php
xxsxx's picture
Upload 1045 files
0d5b03e verified
<?php
$nosession=true;
include("../includes/common.php");
if(isset($_GET['sid'])){
$sid = trim(daddslashes($_GET['sid']));
if(!preg_match('/^(.[a-zA-Z0-9]+)$/',$sid))exit("Access Denied");
session_id($sid);
session_start();
}
@header('Content-Type: text/html; charset=UTF-8');
$is_alipay = false;
if(isset($_GET['wechatid'])){
$wechatid = intval($_GET['wechatid']);
}elseif(isset($_GET['channel'])){
$channelid = intval($_GET['channel']);
}else{
if(!$conf['transfer_wxpay'])sysmsg("未开启微信企业付款");
$channelid = $conf['transfer_wxpay'];
}
if($wechatid){
$wxinfo = \lib\Channel::getWeixin($wechatid);
if(!$wxinfo)sysmsg('该微信公众号不存在');
}else{
$channel = \lib\Channel::get($channelid);
if(!$channel)sysmsg('当前支付通道信息不存在');
if($channel['plugin'] == 'alipay' || $channel['plugin'] == 'alipaysl' || $channel['plugin'] == 'alipayd' || $channel['plugin'] == 'alipayrp'){
$is_alipay = true;
}else{
$wxinfo = \lib\Channel::getWeixin($channel['appwxmp']);
if(!$wxinfo)sysmsg('支付通道绑定的微信公众号不存在');
}
}
if($is_alipay){
$alipay_config = require(PLUGIN_ROOT.$channel['plugin'].'/inc/config.php');
$oauth = new \Alipay\AlipayOauthService($alipay_config);
$redirect_uri = $siteurl.'user/openid.php?channel='.$channelid;
if(isset($_GET['app_auth_code'])){
try{
$result = $oauth->getAppToken($_GET['app_auth_code']);
$_SESSION['alipay_app_token'] = $result['app_auth_token'];
$openid_name = 'AppAuthToken';
$openid_content = $result['app_auth_token'];
}catch(Exception $e){
sysmsg('支付宝获取授权Token失败!'.$e->getMessage());
}
}elseif(isset($_GET['auth_code'])){
try{
$result = $oauth->getToken($_GET['auth_code']);
if(!empty($result['user_id'])){
$user_id = $result['user_id'];
$openid_name = '支付宝UID';
}else{
$user_id = $result['open_id'];
$openid_name = '支付宝OpenId';
}
$_SESSION['alipay_user_id'] = $user_id;
$openid_content = $user_id;
}catch(Exception $e){
sysmsg('支付宝快捷登录失败!'.$e->getMessage());
}
}elseif(isset($_GET['act']) && $_GET['act']=='app_auth'){
$oauth->appOauth($redirect_uri);
}elseif(isset($_GET['act']) && $_GET['act']=='app_auth_assign'){
[$pc_url, $app_url] = $oauth->appOauthAssign($redirect_uri, ['MOBILEAPP','WEBAPP','PUBLICAPP','TINYAPP','BASEAPP']);
if(checkmobile()){
header("Location: $app_url");
}else{
header("Location: $pc_url");
}
exit;
}else{
$oauth->oauth($redirect_uri);
}
}else{
try{
$tools = new \WeChatPay\JsApiTool($wxinfo['appid'], $wxinfo['appsecret']);
$openId = $tools->GetOpenid();
}catch(Exception $e){
sysmsg($e->getMessage());
}
$_SESSION['openid'] = $openId;
$openid_name = 'OpenId';
$openid_content = $openId;
}
include PAYPAGE_ROOT.'openid.php';