php - Paypal 权限 API。在 php 中获取基本个人数据

标签 php paypal paypal-sandbox

我收到了“tokenSecret”和“响应 token ”。

    $apiCred_user = "XXXX.com";
    $apiCred_pass = "XXXX";
    $accessToken = "XXXXXXXXXXXXXXKl8OlQ";
    $tokenSecret = "XXXXXXXXXXXXXsRg6ULs";
    $url = "https://api.sandbox.paypal.com/nvp";

    $auth = new AuthSignature();
    $response = $auth->genSign($apiCred_user ,$apiCred_pass ,$accessToken,$tokenSecret,'POST',$url);

    $authString =
    "token=".$accessToken.
    ",signature=".$response['oauth_signature'].
    ",timestamp=".$response['oauth_timestamp'];

使用此调用,接收签名。我怀疑,给定的 url 用于生成签名。调用正确吗?

为了从“GetBasicPersonalData”获取结果,我使用了下面的代码

$headers = array(
"X-PAYPAL-REQUEST-DATA-FORMAT:NV",
"X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T",
"X-PP-AUTHORIZATION: " .$authString,
"X-PAYPAL-RESPONSE-DATA-FORMAT:json");

$url_api = "https://svcs.paypal.com/Permissions/GetBasicPersonalData";
$post_array = array(
    "attributeList"=>array("attribute"=>"http://axschema.org/contact/email"),
    "requestEnvelope.errorLanguage"=>"en_US");
$curl_session =  curl_init();
    curl_setopt($curl_session, CURLOPT_URL,$url_api );
    curl_setopt($curl_session, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl_session, CURLOPT_POST, 1);
    curl_setopt($curl_session, CURLOPT_POSTFIELDS, http_build_query($post_array));
    curl_setopt($curl_session, CURLOPT_CONNECTTIMEOUT,10); 
    curl_setopt($curl_session, CURLOPT_TIMEOUT, 10);                
    //curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_session, CURLOPT_SSL_VERIFYPEER, 0);
    $response = json_decode(curl_exec($curl_session));
    curl_close($curl_session);

响应结果为“Error”

{"responseEnvelope":

{"timestamp":"2015-02-05T09:26:53.053-08:00","ack":"Failure","correlationId":

"c74e091e7944e","build":"2210301"},"error":

[{"errorId":"560022","domain":"PLATFORM","subdomain":"Application","severity":"Error","category":"Application","message":"The X-PAYPAL-APPLICATION-ID header contains an invalid value","parameter":["X-PAYPAL-APPLICATION-ID"]}]}

谢谢! 123456

最佳答案

您忘记征求用户的许可以获取他的个人数据。

假设您想征求他的同意以发出退款,您的请求应如下所示:

$data = array(
    'scope' => array(
        '0' => 'REFUND',
        '1' => 'ACCESS_BASIC_PERSONAL_DATA'
    ),
    'callback' => 'http://yoursite.com/page.php',  // The success page
    'requestEnvelope' => array(
        'errorLanguage' => 'en_US'    // Language used to display errors
    )
);

然后您将获得正确的访问 token 和 token secret 。

如果你还是卡住了,请索要完整的代码。

关于php - Paypal 权限 API。在 php 中获取基本个人数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28350137/

相关文章:

php - 如何在 Laravel 7 中将注册服务单例传递给另一个注册服务的构造函数?

php - 本地主机,子域,使用 XAMPP

php - 固定 : PHP Session Store Error Using Memcached

php - 为什么 PHP(脚本)比 CGI(编译)提供更多的请求?

php - 在 php html javascript 中自定义 paypal 集成

尽管可用另一种货币的资金,但 PayPal 沙盒以一种货币的定期付款失败

paypal - 在 payflow pro 安全 token 请求中设置 returnurl

Paypal自适应支付(并行)550001错误

php - Paypal PHP SDK 支付状态

Paypal IPN 问题(与后端流程集成)