ajax 获取微信openid 一直走error函数

夜雨Z1 夜雨Z1 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在弄一个微信端调用jssdk支付接口的功能,在用ajax获取接口必要的参数时总是走error,用的是tp框架,现在在ajax url路径直接 $this->ajaxReturn($openid,'JSON'); 但是还是走error函数 alert下XMLHttpRequest.status为0,而如果直接$this->ajaxReturn('hhhh'); 是可以正常走success函数的,说明js是没错的,很是郁闷,而且如果不用ajax 直接在微信点开url 是可以看到输出我的openid的,说明程序是没错的啊 但是一用ajax就出错了
大家看下代码 我把get_openid()函数整个都复制过来了

/**
* Jsapi调用H5支付
*/
public function jsapi(){
//自定义订单号
// $this->ajaxReturn('hhhh');
$openid = get_openid();
$this->ajaxReturn($openid,'JSON');


// 获取当前用户的OpenId
function get_openid() {
// $openid = session('openid_');
$isWeixinBrowser = isWeixinBrowser();
if ($isWeixinBrowser) {
$callback = GetCurUrl();
$openid = OAuthWeixin($callback);
// session('openid_', $openid);
}
if (empty($openid)) {
return '-1';
// exit ( 'openid获取失败error' );
}
return $openid;
}
// php获取当前访问的完整url地址
function GetCurUrl() {
$url = 'http://';
if (isset($_SERVER ['HTTPS']) && $_SERVER ['HTTPS'] == 'on') {
$url = 'https://';
}
if ($_SERVER ['SERVER_PORT'] != '80') {
$url .= $_SERVER ['HTTP_HOST'] . ':' . $_SERVER ['SERVER_PORT'] . $_SERVER ['REQUEST_URI'];
} else {
$url .= $_SERVER ['HTTP_HOST'] . $_SERVER ['REQUEST_URI'];
}
// 兼容后面的参数组装
if (stripos($url, '?') === false) {
$url .= '?t=' . time();
}
return $url;
}
// 判断是否是在微信浏览器里
function isWeixinBrowser($from = 0) {
if ((!$from && defined('IN_WEIXIN') && IN_WEIXIN) || isset($_GET ['is_stree']))
return true;

$agent = $_SERVER ['HTTP_USER_AGENT'];
if (!strpos($agent, "icroMessenger")) {
return false;
}
return true;
}


function OAuthWeixin($callback) { // echo '444';

$callback = urldecode($callback);

vendor('WxPayPubHelper.WxPayPubHelper');
$info = array(
'appid' => \WxPayConf_pub::APPID,
'secret' => \WxPayConf_pub::APPSECRET
);

// if (strpos($callback, '?') === false) {
// $callback .= '?';
// } else {
// $callback .= '&';
// }
F('url',$callback);
$param ['appid'] = $info ['appid'];
if (!isset($_GET ['getOpenId'])) {
$param ['redirect_uri'] = $callback . '/getOpenId/1';
$param ['response_type'] = 'code';
$param ['scope'] = 'snsapi_base';
$param ['state'] = 123;

$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' . http_build_query($param) . '#wechat_redirect';
F('get_code_url',$url);
redirect($url);
} else if ($_GET ['state']) {
$param ['secret'] = $info ['secret'];
$param ['code'] = I('code');
$param ['grant_type'] = 'authorization_code';

$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . http_build_query($param);
$content = file_get_contents($url);
$content = json_decode($content, true);

F('openid',$content);
return $content ['openid'];
}

}


/**
* 微信支付
*/
function pay(price){
var url = "{:U('Wxpay/jsapi','','')}";
var price = 0.01;
if (!price) {
price = 0.01;
}
//alert(url+"--"+"price="+price+"&orderid="+orderid);
$.ajax({
url : url,
type : "post",
dataType : "json",
data : {price:price},
success : function(data){
alert(data);
/* var json_str = data;
var json_obj = JSON.parse(json_str);
callpay(json_obj,params,payokFunc,paycancelFunc,payfailFunc); */
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert('error');
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
}
});
}
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
夜雨Z1
基础编程 21,889 成员 140,329 内容