我与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;
}
我在沙箱环境中工作。我转到支付页面并转移虚拟货币。当它将我重定向到我的网站时,我会检查订单状态。状态的值为";批准";而不是";"完成";并且钱也不记入该账户。它取决于什么?
您需要两个API调用,一个调用用于"设置事务"并创建订单,另一个调用在批准后用于"捕获事务",如本文所述:https://developer.paypal.com/docs/checkout/reference/server-integration/
如果您没有捕获订单,它将保持在已批准状态。
为了获得最佳用户体验,请不要使用任何重定向。完全让你的网站在后台加载,并向用户提供一个现代的上下文登录以供批准。以下是它的用户界面:https://developer.paypal.com/demo/checkout/#/pattern/server