当前位置: 首页 > 知识库问答 >
问题:

PayPal REST API通过PHP SDK返回“传入的JSON请求未映射到API请求”

訾旭
2023-03-14

我试图通过PHP SDK(沙箱环境)创建并执行一个与PayPal REST API的支付,如下所示。支付创建($payment->create)工作良好,但支付执行($payment->execute)返回“Incoming JSON request do not map to API request”。JSON请求是由SDK创建的,那么会有什么问题呢?提前道谢。

$payer = new Payer();
$payer->setPaymentMethod("paypal");

$item = new Item();
$item->setName('Any name')
     ->setCurrency('EUR')
     ->setQuantity(1)
     ->setPrice(0.99);

$itemList = new ItemList();
$itemList->setItems(array($item));

$details = new Details();
$details->setTax(0)
        ->setSubtotal(0.99);

$amount = new Amount();
$amount->setCurrency('EUR')
       ->setTotal(0.99)
       ->setDetails($details);

$transaction = new Transaction();
$transaction->setAmount($amount)
            ->setItemList($itemList)
            ->setDescription('Any description')
            ->setInvoiceNumber(uniqid());

$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl(BASE_URL.'/payment/?success=true')
             ->setCancelUrl(BASE_URL.'/payment/?success=false');

$payment = new Payment();
$payment->setIntent('sale')
        ->setPayer($payer)
        ->setRedirectUrls($redirectUrls)
        ->setTransactions(array($transaction));

try {
    $payment->create($apiContext);

    $execution = new PaymentExecution();
    $result = $payment->execute($execution, $apiContext);

} catch (Exception $ex) {
    //Function for extract the error message,
    //the error message can be showing with
    //a simple var_dump($ex)
    $exception = self::getException($ex); 
}

共有1个答案

吕承福
2023-03-14

我不是一个PHP开发人员(.NET),所以在阅读上面的内容的基础上,请查看代码中的这一节:

$execution = new PaymentExecution();
$result = $payment->execute($execution, $apiContext);

您正在发送一个新的paymentexecution,而不包含payer_idPayment.id,在用户批准您创建的Paypal支付请求后,您将获得这些文件。

这就是说,我没有看到那部分(尽管如上所述,不是PHP开发人员),所以我可能是错的。这些步骤是:

b.paymentId也将在此过程中的querystring中

在用户从PayPal重定向回您的站点(您的ReturnURL)-Execute一个新的Payment之后,将其ID设置为您获得的一个(#2B),发送PaymentExecution及其PayerID设置为您获得的一个(#2a)

在C#中(您需要将其转换为PHP):

    var _payment = new Payment { id = the_payment_id_you_obtained };
    var _payExec = new PaymentExecution { payer_id = the_payer_id_you_obtained };

    var _response = _payment.Execute(context, _payExec);

他...

 类似资料:
  • 带有消息“访问https://api.sandbox.paypal.com/v1/payments/payments/payment时获得Http响应代码400”的异常“PayPal\exception\PaypalConnectionException”。“在/var/www/html/vendor/paypal/rest-api-sdk-php/lib/paypal/core/paypalht

  • 我用的是PHP Paypal SDK:https://github.com/paypal/PayPal-PHP-SDK 通过PHP SDK引用PayPal REST API返回“传入JSON请求未映射到API请求” 继续https://stackoverflow.com/questions/39827032/paypal-how-to-get-payment-id-on-basis-of-tran

  • 这是我的控制器,它将请求映射到以下url

  • 我正在使用Spring实现一个RESTful web服务。其中一个endpoint接收JSON字符串作为请求体,我希望将其映射到POJO。然而,现在看来传入的JSON字符串并没有映射到POJO的属性。 这里是@RestController界面 数据模型 最后是我的发帖请求: 与内容类型指定为应用程序/json 但是,当我打印出对象值时,打印出的是默认值(“first”和“last”),而不是我传入

  • Web 容器需要本章描述的映射技术去映射客户端请求到 Servlet(该规范2.5以前的版本,使用这些映射技术是作为一个建议而不是要求,允许servlet 容器各有其不同的策略用于映射客户端请求到 servlet)。

  • 我能够使用Json输出运行Jersey,并且能够在没有任何问题的情况下使用Json映射获得“get”请求。 我也有一些JSON方法,它们是“post”方法,它们映射到Java类,如下面的方法- 供您参考,我在这里或这里遵循指南 在给出一个有效的post请求时,它们都开始抛出下面的错误-