我收到了“tokenSecret”和“响应令牌”。
$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用于生成signautre。这个电话是正确的吗?
要从“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);
响应结果为“错误”
{"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
答案 0 :(得分:1)
您忘记要求用户获取其个人数据。
我们假设您想要他的许可才能发出退款,您的请求应如下所示:
$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
)
);
然后您将获得正确的访问令牌和令牌密钥。
如果您仍然卡住了,请索取完整的代码。