贝宝上的状态仍然是批准的
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
【讨论】:
以上是关于贝宝上的状态仍然是批准的的主要内容,如果未能解决你的问题,请参考以下文章