php - Paypal API,Curl 不返回任何输出

标签 php api curl paypal call

我正在尝试找出 Paypal API,我有以下代码,它应该进行调用、获取访问 token ,然后进行 API 调用。第一部分有效(直到 $accesstoken 行),并正确返回访问 token ,但第二部分不返回任何内容。可以在此处找到应该模仿的代码:Make Your First Call

$url = "https://api.sandbox.paypal.com/v1/oauth2/token";
$headers = array(
    'Accept' => 'application/json',
    'Accept-Language' => 'en_US',
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'grant_type=client_credentials');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERPWD, $clientID . ':' . $clientSecret);
$curl = curl_exec($ch);

$x = json_decode($curl, TRUE);
print_r($x);
$accesstoken = $x['access_token'];


$headers2 = array(
    'Content-Type' => 'application/json',
    'Authorization' => 'Bearer' . $accesstoken
);

$data = array(
    "intent" => "sale",
    "redirect_urls" => array(
        "return_url" => "http://example.com/your_redirect_url/",
        "cancel_url" => "http://example.com/your_cancel_url/"
    ),
    "payer" => array(
        "payment_method" => "paypal"
    ),
    "transactions" => array(
        "transactions" => array(
            "total" => ".99",
            "currency" => "USD"
        )
    )
);

$saleurl = "https://api.sandbox.paypal.com/v1/payments/payment";

$sale = curl_init();
curl_setopt($sale, CURLOPT_URL, $saleurl);
curl_setopt($sale, CURLOPT_VERBOSE, TRUE);
curl_setopt($sale, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($sale, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($sale, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($sale, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($sale, CURLOPT_HTTPHEADER, $headers2);
$finalsale = curl_exec($sale);

$verb = json_decode($finalsale, TRUE);
print_r($verb);

Curl 对我来说没有任何意义,我们将不胜感激。

更新: 我将标题的格式更改为:

$headers2 = array(
    'Content-Type: application/json',
    'Authorization: Bearer ' . $accesstoken
);

根据其中一个答案。现在显示:

[name] => MALFORMED_REQUEST
[message] => Incoming JSON request does not map to API request
[information_link] => https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST
[debug_id] => f53a882702a04

最佳答案

您没有正确设置 header ...

$headers = array(
    'Accept: application/json',
    'Accept-Language: en_US'
);

$headers2 = array(
    'Content-Type: application/json',
    'Authorization: Bearer ' . $accesstoken
);

是正确的格式。

还要注意 $accesstoken 之间 Bearer 之后的(空格)

编辑:更新您的 JSON(我认为这是正确的,但回显出来并对照引用检查它,我可能有一对多数组()

$data = array(
    "intent" => "sale",
    "redirect_urls" => array(
        "return_url" => "http://example.com/your_redirect_url/",
        "cancel_url" => "http://example.com/your_cancel_url/"
    ),
    "payer" => array(
        "payment_method" => "paypal"
    ),
    "transactions" => array(array(
            "amount" => array(
                "total" => ".99",
                "currency" => "USD"
            )
        )
    )
);

关于php - Paypal API,Curl 不返回任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231625/

相关文章:

php - 产品价格在 MYSQL 数据库中以 PHP 显示为 69 英镑,而不是 69.00 英镑

php - 使用 Laravel 5.5 极其简单的查询得到错误结果

php - 使用prestashop在mysql中显示订单摘要的引用

api - WSO2 Identity Server 通过 API 管理用户和角色

php - 设置elasticsearch php客户端的connect_timeout

php、curl、标题和内容类型

php - 需要 mysql 查询帮助 - 按父级分组

php - 使用 post PHP 将图像上传到服务器

java - Jira 6.1.6 Java REST api - 无法设置自定义下拉值

linux - 使用 cURL 命令从 SFTP 服务器获取 .listing 文件的命令是什么