贝宝上的状态仍然是批准的

Posted

技术标签:

【中文标题】贝宝上的状态仍然是批准的【英文标题】:Status on paypal is still APPROVED 【发布时间】:2020-11-25 21:05:12 【问题描述】:

我在与 PayPal 进行支付集成时遇到问题。 我正在使用 REST API,这是我创建订单的代码:

    $curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.sandbox.paypal.com/v2/checkout/orders",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => '
  "intent": "CAPTURE",
  "purchase_units": [
    
      "reference_id": "PUHF",
      "amount": 
        "currency_code": "PLN",
        "value": "100.00"
      
    
  ],
  "application_context": 
    "return_url": "http://www.mywebside.com",
    "cancel_url": ""
  
',
  CURLOPT_HTTPHEADER => array(
    'accept: application/json',
    'accept-language: en_US',
    'authorization: Bearer '.$access_token.'',
    'content-type: application/json'
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) 
  echo "cURL Error #:" . $err;
 else 
  echo $response;

我在沙盒环境中工作。我转到付款页面并转移虚拟货币。 当它将我重定向到我的网站时,我会检查订单状态。状态的值 =“已批准”而不是“已完成”,并且资金也不会记入帐户。这取决于什么?

【问题讨论】:

您设置了捕获的意图,但您从未进行实际捕获。 PayPal 是一个幕后的 3 步过程: 1:创建订单,附上详细信息,将用户发送到带有令牌的 paypal。 2:从返回用户那里获取返回令牌并检查他们是否批准它。 3:使用返回值在最终操作中捕获资金。 您还可以使用 php 的 PayPal REST API SDK 使代码中的事情变得更容易:github.com/paypal/Checkout-PHP-SDK ...我说得更容易一些,但考虑到膨胀和垃圾作曲家,它是主观的到处走走。 【参考方案1】:

您需要两个 API 调用,一个用于“设置交易”并创建订单,然后一个用于在批准后“捕获交易”,如下所述: https://developer.paypal.com/docs/checkout/reference/server-integration/

如果您未捕获订单,它将保持已批准状态。

为获得最佳用户体验,请勿使用任何重定向。完全没有。让您的网站在后台加载,并为用户提供现代的上下文登录以供批准。这是用于此的用户界面:https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

以上是关于贝宝上的状态仍然是批准的的主要内容,如果未能解决你的问题,请参考以下文章

如何更改贝宝上的“感谢您的订单”消息?

发生贝宝错误 550001

贝宝沙盒账户错误状态

无需创建帐户即可在贝宝上付款

在贝宝上延迟付款

在贝宝上显示信息