首先,您不应该在互联网上抓取文件,例如paypalplatform.php
.
Paypal大量使用 Github 来共享所有不同语言的所有 API。我真的建议您查看一些存储库,例如:
最后两个对你来说很有趣。它们都为您的案例提供了有用的代码示例。
代码示例-php
它提供了对您提到的函数的简单调用,并描述了可以使用一个变量找到的所有返回消息$response->status
。评论揭示了这个变量可以有的所有情况:
if ($response->responseEnvelope->ack == "Success")
{
// The status of the payment. Possible values are:
//
// * CREATED - The payment request was received; funds will be
// transferred once the payment is approved
// * COMPLETED - The payment was successful
// * INCOMPLETE - Some transfers succeeded and some failed for a
// parallel payment or, for a delayed chained payment, secondary
// receivers have not been paid
// * ERROR - The payment failed and all attempted transfers failed
// or all completed transfers were successfully reversed
// * REVERSALERROR - One or more transfers failed when attempting
// to reverse a payment
// * PROCESSING - The payment is in progress
// * PENDING - The payment is awaiting processing
$logger->log("Payment Status : ".$response->status);
}
自适应支付-sdk-php
它提供了有关如何使用函数的更详细示例。它从 html 表单中获取值,更容易对其进行测试。与前面的示例一样,我们可以看到 API 返回的相同状态:
$ack = strtoupper($response->responseEnvelope->ack);
if($ack != "SUCCESS"){
echo "<b>Error </b>";
echo "<pre>";
print_r($response);
echo "</pre>";
} else {
/*
* The status of the payment. Possible values are:
* CREATED - The payment request was received; funds will be
transferred once the payment is approved
* COMPLETED - The payment was successful
* INCOMPLETE - Some transfers succeeded and some failed for a
parallel payment or, for a delayed chained payment, secondary
receivers have not been paid
* ERROR - The payment failed and all attempted transfers failed
or all completed transfers were successfully reversed
* REVERSALERROR - One or more transfers failed when attempting
to reverse a payment
* PROCESSING - The payment is in progress
* PENDING - The payment is awaiting processing
*/
echo "<table>";
echo "<tr><td>Ack :</td><td><div id='Ack'>$ack</div> </td></tr>";
echo "<tr><td>PayKey :</td><td><div id='PayKey'>$response->payKey</div> </td></tr>";
echo "<tr><td>Status :</td><td><div id='Status'>$response->status</div> </td></tr>";
echo "</table>";
echo "<pre>";
print_r($response);
echo "</pre>";
}
在这两种情况下,您只需要一个简单的开关/案例来处理响应状态。像这样的东西:
switch ($status)
{
case 'CREATED':
// handle CREATED state
break;
case 'COMPLETED':
// handle COMPLETED state
break;
case 'INCOMPLETE':
// handle INCOMPLETE state
break;
case 'ERROR':
// handle ERROR state
break;
case 'REVERSALERROR':
// handle REVERSALERROR state
break;
case 'PROCESSING':
// handle PROCESSING state
break;
case 'PENDING':
// handle PENDING state
break;
default:
throw new Exception(sprintf("State '%s' isn't handle.", $status));
}