在 PHP 中与 PayPal 连接以进行用户身份验证

去噪

我正在尝试使用 PHP 和 CURL 在我的网站上实现“与 PayPal 连接”按钮。我已经设法接收到一个授权码,并使用此码获得一个访问令牌,但我无法接收用户数据。我的 REST 应用程序已获批准,我应该能够收到用户电子邮件。我不想使用 PayPal PHP SDK,因为现在已弃用。

这是我的代码:

$pp_client_id = {my client id};
$pp_secret = {my secret};

$code = $_GET['code'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.paypal.com/v1/oauth2/token');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $pp_client_id.':'.$pp_secret);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
   'grant_type'=>'authorization_code',
   'code'=> $code
)));

$res_authcode = curl_exec($ch);

if (empty($res_authcode)) {
   // print error
} else {
   $json_authcode = json_decode($res_authcode);
   $refresh_token = $json_authcode->refresh_token;
   curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
      'grant_type'=>'refresh_token',
      'refresh_token'=> $refresh_token
   )));

   $res_token = curl_exec($ch);

   if(empty($res_token)) {
      // print error
   } else {
     $json_token = json_decode($res_token);
     $access_token = $json_authcode->access_token;

     curl_setopt($ch, CURLOPT_URL, 'https://api.paypal.com/v1/oauth2/userinfo/?schema=paypalv1.1');
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
       'access_token'=> $access_token
     )));

     $res_userinfo = curl_exec($ch);
 
     if(empty($res_userinfo)) {
       // print error
     } else {
       $json_userinfo = json_decode($res_userinfo);
       print_r($json_userinfo);
     }
   }
}

curl_close($ch);

我收到一条 RESOURCE_NOT_FOUND 消息。我应该更改我的代码以获取用户信息?

去噪

我终于设法解决了我的问题并通过 cURL 从 PayPal 接收用户信息。

我将连接 URL 和标题更改为:

curl_setopt($ch, CURLOPT_URL, 'https://api.paypal.com/v1/oauth2/token/userinfo?schema=openid');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'authorization: Bearer '.$access_token,
  'content-type: application/json'
));

$res_userinfo = curl_exec($ch);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PHP- 没有选项可以在 firebase-php 中对用户进行身份验证

使用令牌身份验证时如何在Django通道中的Websocket连接中对用户进行身份验证

通过Windows身份验证在Laravel中对用户进行身份验证

在ASP.NET中对Oracle用户进行身份验证

确保在Angular中对用户进行身份验证

在Django中重置密码后对用户进行身份验证

在Microsoft Bot框架中对用户进行身份验证

PHP中的ldap身份验证品种

PayPal PHP SDK:由于身份验证凭据无效或授权标头丢失,身份验证失败

在Web应用程序中对用户进行身份验证时,对用户进行身份验证以使用Azure功能

使用集成身份验证连接到PHP中的MSSQL Server

无法在PHP中设置用于用户身份验证的Soap标头

检查经过身份验证的用户是否在会话php中处于活动状态

在Cake PHP中创建用户类型级别的身份验证

如何在Laravel 5.3上的route.php中检索经过身份验证的用户

仅使用密码中的 3 个随机字符进行 PHP AD 身份验证

使用官方文档中的PHP代码进行HTTP身份验证无法正常工作

在 PHP 中对从 .NET 加密的 SHA512 密码进行身份验证

PHP验证Paypal Webhook签名

检查用户是否使用 PHP 在服务器上通过 Firebase 身份验证进行身份验证?

在dotnetcore 2.0中的“使用”中的用户界面中似乎未对用户进行身份验证

在Rails中通过SAML对用户进行身份验证时,如何发送经过身份验证的响应?

如何获取在 Firebase Authentication for Web 中对当前用户进行身份验证的身份验证提供程序?

在laravel 5.2中使用默认身份验证路由对用户进行身份验证后设置会话数据

[Authorize]属性如何知道用户在ASP.NET MVC中已通过身份验证令牌进行身份验证?

如何在AWS中对Facebook用户进行身份验证亚马逊身份池ID

使用身份对ASP.NET MVC中的用户进行身份验证

使用PHP进行LDAP身份验证

我应该存储信息以在用户会话中对用户进行身份验证吗?