PHP Paypal REST 创建付款错误的 JSON 响应

Posted

技术标签:

【中文标题】PHP Paypal REST 创建付款错误的 JSON 响应【英文标题】:PHP Paypal REST create payment malfromed JSON response 【发布时间】:2018-01-25 18:01:50 【问题描述】:

对此感到抱歉(最后的手段,没有朝自己的脑袋开枪;-);这显然是我的错,但我花了几天时间在这里和其他地方搜索,阅读文档,尝试各种事情等。但它仍然无法正常工作。

有人请指点我这里出了什么问题:

<?php

$data = array(
    "intent" => "sale",
    "redirect_urls" => array(
            "return_url" => "http://.../ok.html",
            "cancel_url" => "http://.../cancel.html"
        ),
    "payer" => array(
            "payment_method" => "paypal"
        ),
    "transactions" => array(
            "amount" => array(
                    "total" => "1.23",
                    "currency" => "GBP"
                )
        )
);

$ch = curl_init("https://api.sandbox.paypal.com/v1/payments/payment");

curl_setopt($ch, CURLOPT_VERBOSE, true);
$logfile = fopen("curl_log.txt", "w");
curl_setopt($ch, CURLOPT_STDERR, $logfile);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'Content-Type: application/json',
  'Authorization: Bearer <long token returned from REST call',
  ));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$res = curl_exec($ch);

curl_close($ch);
fclose($logfile);

?>

错误:

"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"developer.paypal.com/webapps/de‌​veloper/docs/api/…;

【问题讨论】:

错误信息或卷曲结果是什么? 你想达到什么目的?有什么错误吗?请解释您的问题。 使用curl error function 获取实际错误详情 对不起;它是:"name":"MALFORMED_REQUEST","message":"传入的 JSON 请求未映射到 API 请求"​​,"information_link":"developer.paypal.com/webapps/developer/docs/api/…" 我只是(我认为)试图“创建付款”;获得令牌是轻而易举的事。下一步是创建付款。 【参考方案1】:

更新您的 $data 数组,例如,

$data = array(
    "intent" => "sale",
    "payer" => array(
            "payment_method" => "paypal"
        ),
    "transactions" =>array( 
            array(
                "amount" => array(
                        "total" => "1.23",
                        "currency" => "GBP")
            )
        ),
    "redirect_urls" => array(
            "return_url" => "http://.../ok.html",
            "cancel_url" => "http://.../cancel.html"
     )
);

【讨论】:

不是复制粘贴,需要将交易数组再包装一个数组 如果它有效,那么就为答案投票,所以它对其他人也有帮助 它确实有效。恐怕我的赞成票并不重要,但我已尽我所能。 “交易”的 [array][array][array][array] 深度似乎是一个常见问题,在这里和其他地方有几个不正确的答案。再次感谢。

以上是关于PHP Paypal REST 创建付款错误的 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

paypal rest api执行错误

如何使用 PayPal REST API 和 PayPal PHP SDK 保存 PayPal 帐户以备将来付款

使用 paypal/rest-api-sdk-php 的 laravel paypal 集成错误

使用 Paypal REST API 创建付款

PayPal Rest API 创建付款不返回销售 ID

使用 rest api 捕获付款时发生 Paypal 内部服务器错误