在 Paypal 中部分退款授权订单

Partially refund the authorized order in Paypal

我试图在 PayPal v2 SDK 中进行部分退款,但每次都被捕获了全部金额。我只是捕获不同的数量,所以以这种方式应该删除剩余的数量,但无论我请求部分数量如何,都会捕获全部数量。工作流程是这样的:1) 我正在创建订单,2) 授权订单,3) 现在需要进行部分退款。我使用的代码如下所示:

class CaptureOrder
        {
            public static function buildRequestBody($new_Price_after_refund_requests)
            {
                return array(
                    'intent' => 'AUTHORIZE',
                    'application_context' =>
                        array(
                            'return_url' => 'https://example.com/return',
                            'cancel_url' => 'https://example.com/cancel'
                        ),
                    'purchase_units' =>
                        array(
                            0 =>
                                array(
                                    'amount' =>
                                        array(
                                            'currency_code' => 'USD',
                                            'value' =>  $new_Price_after_refund_requests
                                        )
                                )
                        )
                );
            }

            public static function orderCapture($authorizationId, $new_Price_after_refund_requests)
            {
                $request = new AuthorizationsCaptureRequest($authorizationId);
                $request->headers["prefer"] = "return=representation";
                $request->body = self::buildRequestBody($new_Price_after_refund_requests);
                $response = makeclient()->execute($request);
              if($response->status == "COMPLETED"){
                    //some codes here
            }
                echo json_encode($response->result, JSON_PRETTY_PRINT);
                return $response;
            }
        }

有什么办法可以对已授权的订单进行部分退款吗?也许这不应该是这样的。

您的请求 body 的字段不正确,因此无法识别。无法识别的字段将被忽略。由于有关您的 body 的所有内容都被忽略了,因此原始金额将被捕获。

要创建具有正确字段的 body,请参阅 the API reference for a v2/payments authorization request,其中有此示例 body(示例中还有其他字段,都是可选的):

{
  "amount": {
    "value": "10.99",
    "currency_code": "USD"
  }
}

将其转换为 PHP 数组语法,并使用您的变量作为值。


顺便说一句,您的函数名称有点误导。您没有获取 PayPal 订单(这样做没有授权步骤)。相反,您在上一步(结账时)授权 订单,现在正在捕获该授权