ajax 获取微信openid 一直走error函数
在弄一个微信端调用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()函数整个都复制过来了
大家看下代码 我把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);
}
});
}
...全文
相关推荐
ajax 实现微信网页授权登录的方法
主要介绍了ajax 实现微信网页授权登录的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
OpenClaw微信AI助理接入:轻量级Agent服务落地实践
AI Agent是将大语言模型能力封装为可编排、可审计、可复用技能服务的技术范式,其核心在于解耦模型调用与业务逻辑,实现意图理解→技能路由→外部系统协同的闭环。OpenClaw作为开源AI Agent框架,通过标准化Skill接口和OpenAI兼容API,显著降低Agent工程化门槛;结合微信服务号+Webview H5架构,无需小程序审核即可构建24小时在线、高触达、强合规的轻量级AI助理。该方案特别适合教育、电商、本地生活等需快速私有化部署的中小场景,支持Docker容器化、Railway云原生部署及R
h5和微信授权头像,jq封装ajax源码
h5和微信授权头像,jq封装ajax源码
ajax请求例子
ajax请求例子
科技成果进场交易前,评估备案环节需要准备哪些材料?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。


基础编程
