php - paypal rest api支付调用使用php返回401

标签 php curl paypal paypal-sandbox

我正在尝试将 Paypal 添加到我的网站。我一直在按照 https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/ 上的说明进行操作,但它不起作用。我已成功发送访问 token 请求并获得响应。响应中的信息存储在一个名为 $accessToken 的对象中。问题出在我尝试从上面列出的站点在步骤 3 中进行 API 调用时。我收到从请求发回的 401 错误。我很确定请求作为函数参数发送到的 $url 是正确的。是https://api.sandbox.paypal.com/v1/payments/payment .过去一个半星期我一直在网上求助,但我没有任何进展。任何帮助将不胜感激。谢谢!

function MakePaymentAPICall($accessToken, $sale, $url, $url_success, $url_cancel){

// Create cURL resource
$ch = curl_init();

// Set url
curl_setopt($ch, CURLOPT_URL, $url);

$tokenType = $accessToken->GetTokenType();
$token = $accessToken->GetAccessToken();
$auth = "Authorization:" . $tokenType . " " . $token;
$saleTotal = $sale->GetTotal();

$header = array(
'Content-Type' => 'application/json',
'Authorization' => $tokenType . ' ' . $token
);


$dataArray = array(
    'intent' => 'sale',
    'redirect_urls' => array(
            'return_url' => $url_success,
            'cancel_url' => $url_cancel
        ),
    'payer' => array(
            'payment_method' => 'paypal'
        ),
    'transactions' => array(
            'amount' => array(
                    'total' => $saleTotal,
                    'currency' => 'USD'
                ),
            'description' => 'Test payment.'
        )
);


curl_setopt($ch, CURLOPT_HEADER, http_build_query($header));


// set data to post
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($dataArray));


curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);


// Execute curl command
$output = curl_exec($ch);


// Get info about request
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);


// Close cURL resource to free up system resources
curl_close($ch);

return $output;

}//MakePaymentAPICall函数

最佳答案

@Jason247

http://php.net/manual/en/function.curl-setopt.php

我认为 CURLOPT_HEADER 需要一个 int 或 bool,1 或 TRUE 来发送 header 。

我确实相信 CURLOP_HTTPHEADER 是您想要的,您可以将数组直接传递给它而无需编码为查询字符串。

例如

curl_setopt($curlHandle, CURLOPT_HEADER, 1);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $curlHeaders);

关于php - paypal rest api支付调用使用php返回401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18500318/

相关文章:

java - Java 中的 Apache httpclient 带有 fastbill.api

php - PHP curl 方法可以在同一个请求中上传一个文件和一个带有前导@字符的字符串吗?

SaaS 订阅的 PayPal 解决方案?

php - 如何从当前页面打印另一页?

php - Zend Framework 2 - 如何对自己的 session 服务进行单元测试?

php - 使用 REST API 的 PayPal 订单摘要 - - cURL 或 PHP

node.js - 使用 Paypal rest API 未显示付款详细信息

paypal - 我如何模拟来自 paypal IPN 的 PENDING 响应以进行测试?

PHP 启动 : Unable to load dynamic library 'sqlsrv'

如果没有图像上传到数据库,php设置默认图像