微信登录获取 openid 失败原因



 

 

今天再开发网站微信登录的时候,用 curl_init 无法获取 openid,代码如下

 

 $code = isset($_GET['code']) ? trim($_GET['code']) : '';
    $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.WX_APPID.'&secret='.WX_SECRET.'&code='.$code.'&grant_type=authorization_code';
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HEADER, 0);// 显示返回的Header区域内容   
    curl_setopt ($ch, CURLOPT_TIMEOUT, 30);// 设置超时限制
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);// 链接超时限制
    curl_setopt ($ch, CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));//设置 http 头信息
    curl_setopt ($ch, CURLOPT_ENCODING, 'gzip,deflate');//添加 gzip 解码的选项,即使网页没启用 gzip 也没关系 
    $content = curl_exec($ch);

 

 

 

后来发现跟 https 有关,加上下面这两个选项就可以了

 

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST,0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,0); 

 

 

 

由于 CURLOPT_SSL_VERIFYPEER 的预设值为 TRUE 是要验证伺服器凭证的,所以当拜访 https 网站时,若未做任何 SSL 相关设定,会出现以下错误。

Error Number: 60

Error Message: SSL certificate problem, verify that the CA cert is OK. Details:

error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

如果只是要拜访 https 网站,但不会来回传递敏感信息,可以把 CURLOPT_SSL_VERIFYPEER 设定为 FALSE,代表可以盲目接受任何伺服器凭证。

 

而当 CURLOPT_SSL_VERIFYPEER 为 FALSE 时,其他诸如 CURLOPT_SSL_VERIFYHOST, CURLOPT_CAINFO, CURLOPT_CAPATH 等设定,都不具任何意义。

 

 

原文链接:http://woqilin.blogspot.com/2016/04/openid.html

要在微信支付中获取用户的openid,您需要进行以下步骤: 1. 首先,您需要在微信公众平台设置获取openid的域名。只有被设置过的域名才是有效的获取openid的域名。如果没有设置过域名,获取openid的操作将会失败。\[2\] 2. 在您的开发中,您需要使用统一下单接口来进行支付。在统一下单接口中,需要传递用户的openid作为参数。\[2\] 3. 要获取用户的openid,您可以通过以下步骤: - 用户在微信客户端中打开您的网页或应用程序。 - 您需要在网页或应用程序中生成一个授权链接,链接中包含您的公众号的appid、secret和一个code参数。 - 用户点击授权链接后,会跳转到微信的授权页面,用户需要确认授权。 - 授权成功后,微信会将一个code参数返回给您的网页或应用程序。 - 您可以使用这个code参数,通过调用微信的接口来获取用户的openid。\[3\] 请注意,以上步骤仅适用于JSAPI支付方式。对于其他支付方式,例如扫码支付和非微信内置浏览器H5支付,可能会有不同的获取openid的方式。如果您对其他支付方式的获取openid有疑问,可以进一步咨询微信支付的官方文档或联系微信支付的技术支持。 #### 引用[.reference_title] - *1* [微信公众号支付 (一、获取openId)](https://blog.csdn.net/weixin_38941916/article/details/78013090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [微信公众号支付--1--获取openid](https://blog.csdn.net/hjfcgt123/article/details/104172909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值