我下载了paypalplatform.PHP,不记得从哪里来,但它给了我一个很好的小功能,它允许我检查付款的状态:
CallPaymentDetails( $payKey, $transactionId, $trackingId );
这会返回许多有用的数据,如status和paymentInfoList.paymentInfo(0).transactionStatus等等.
我知道我可以编写很多if语句来尝试解释当我调用CallPaymentDetails时返回给我的所有值,我觉得这可能非常容易出错,或者它可能导致我过度查看场景.
所以我的问题是,是否存在一个考虑所有值的样本模板,即所以我不必重新发明轮子,它会处理所有场景?
例如,目前我有:
$resArray = CallPaymentDetails( $payKey, $transactionId, $trackingId );
if(strtoupper($resArray["responseEnvelope.ack"]) == "SUCCESS") {
if(strtoupper($resArray["status"]) == "CREATED") {
// do something
} elseif(strtoupper($resArray["status"]) == "EXPIRED") {
// do something
} elseif(strtoupper($resArray["status"]) == "COMPLETED") {
// do something
if(strtoupper($resArray["paymentInfoList.paymentInfo(0).transactionStatus"]) == "PENDING") {
// do something
} elseif(strtoupper($resArray["paymentInfoList.paymentInfo(0).transactionStatus"]) == "Failed") {
// do something
} else {
// what other value could be returned
}
} else {
// what other value could be returned
}
} else {
// what other value could be returned
}
如果我尝试做所有变量,我可能会永远尝试捕获所有场景,这就是为什么我想知道这样的模板是否已经存在,它通过if语句满足所有场景? 解决方法: 首先,你不应该像在paypalplatform.PHP上那样在互联网上获取文件.
Paypal use Github很多共享所有不同语言的API.我真的建议你看看一些存储库,例如:
> merchant-sqk-php > sdk-core-php > codesample-php > adaptivepayments-sdk-php
最后两个对你很有意思.它们都为您的案例提供了有用的代码示例.
codesamples的PHP
它为您提到的功能提供了simple call,并描述了使用一个变量$response->状态可以找到的所有返回消息.评论揭示了此变量可以具有的所有情况:
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);
}
adaptivepayments-SDK-PHP
它介绍了a more detailed example如何使用您的功能.它从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));
}
(编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|