jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/403745 )
Change subject: Add catch statement to processDonorReturn, use timeout status
......................................................................
Add catch statement to processDonorReturn, use timeout status
Bug: T184284
Change-Id: If2e801b4ed876564faf20060c975912657cbf8df
---
M paypal_gateway/express_checkout/paypal_express.adapter.php
M tests/phpunit/Adapter/PayPal/PayPalExpressTest.php
A
tests/phpunit/includes/Responses/paypal_ec/GetExpressCheckoutDetails_Timeout.testresponse
3 files changed, 33 insertions(+), 0 deletions(-)
Approvals:
jenkins-bot: Verified
Ejegg: Looks good to me, approved
diff --git a/paypal_gateway/express_checkout/paypal_express.adapter.php
b/paypal_gateway/express_checkout/paypal_express.adapter.php
index 5e79a63..87d1272 100644
--- a/paypal_gateway/express_checkout/paypal_express.adapter.php
+++ b/paypal_gateway/express_checkout/paypal_express.adapter.php
@@ -504,6 +504,12 @@
);
$fatal = false;
break;
+ case '10411':
+ if ( $this->isBatchProcessor()
) {
+
$this->finalizeInternalStatus( FinalStatus::TIMEOUT );
+ $fatal = false;
+ break;
+ }
default:
$this->transaction_response->addError( $error );
}
@@ -556,6 +562,10 @@
}
$this->addRequestData( $requestData );
$resultData = $this->do_transaction(
'GetExpressCheckoutDetails' );
+ // FixMe: What to do outside of batch processing?
+ if ( $this->isBatchProcessor() && $this->getFinalStatus() ==
FinalStatus::TIMEOUT ) {
+ return PaymentResult::newEmpty();
+ }
if ( !$resultData->getCommunicationStatus() ) {
throw new ResponseProcessingException( 'Failed to get
customer details',
ResponseCodes::UNKNOWN );
diff --git a/tests/phpunit/Adapter/PayPal/PayPalExpressTest.php
b/tests/phpunit/Adapter/PayPal/PayPalExpressTest.php
index c07050f..14d6443 100644
--- a/tests/phpunit/Adapter/PayPal/PayPalExpressTest.php
+++ b/tests/phpunit/Adapter/PayPal/PayPalExpressTest.php
@@ -431,6 +431,28 @@
$this->assertNull( $message, 'Should not queue a message' );
}
+ /*
+ * Check that it does not call doPayment when the token has timed out
+ */
+ public function testProcessDonorReturnTokenTimeout() {
+ $init = $this->getDonorTestData( 'US' );
+ $init['contribution_tracking_id'] = '45931210';
+ $options = array( 'batch_mode' => true );
+ $this->setUpRequest( $init, array( 'Donor' => $init ) );
+
+ $gateway = $this->getFreshGatewayObject( $init, $options );
+ $gateway::setDummyGatewayResponseCode( 'Timeout' );
+ $gateway->processDonorReturn( array(
+ 'token' => 'EC%2d4V987654XA123456V',
+ 'PayerID' => 'ASDASD',
+ ) );
+
+ $this->assertEquals( FinalStatus::TIMEOUT,
$gateway->getFinalStatus(), 'Should have Final Status Timeout' );
+ $this->assertEquals( 1, count( $gateway->curled ), 'Should only
call curl once' );
+ $message = QueueWrapper::getQueue( 'donations' )->pop();
+ $this->assertNull( $message, 'Should not queue a message' );
+ }
+
/**
* The result switcher should redirect the donor to the thank you page
and mark the token as
* processed.
diff --git
a/tests/phpunit/includes/Responses/paypal_ec/GetExpressCheckoutDetails_Timeout.testresponse
b/tests/phpunit/includes/Responses/paypal_ec/GetExpressCheckoutDetails_Timeout.testresponse
new file mode 100644
index 0000000..d1fed79
--- /dev/null
+++
b/tests/phpunit/includes/Responses/paypal_ec/GetExpressCheckoutDetails_Timeout.testresponse
@@ -0,0 +1 @@
+TOKEN=EC%2d50M26113274765456&BILLINGAGREEMENTACCEPTEDSTATUS=0&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2018%2d01%2d12T21%3a22%3a19Z&CORRELATIONID=97825e40f3857&ACK=Failure&VERSION=204&BUILD=40680762&L_ERRORCODE0=10411&L_SHORTMESSAGE0=This%20Express%20Checkout%20session%20has%20expired%2e&L_LONGMESSAGE0=This%20Express%20Checkout%20session%20has%20expired%2e%20%20Token%20value%20is%20no%20longer%20valid%2e&L_SEVERITYCODE0=Error&CURRENCYCODE=JPY&AMT=1000&ITEMAMT=1000&SHIPPINGAMT=0&HANDLINGAMT=0&TAXAMT=0&CUSTOM=56383531&DESC=Donation%20to%20the%20Wikimedia%20Foundation&INVNUM=56383531%2e1&INSURANCEAMT=0&SHIPDISCAMT=0&L_QTY0=1&L_TAXAMT0=0&L_AMT0=1000&L_DESC0=Donation%20to%20the%20Wikimedia%20Foundation&L_ITEMWEIGHTVALUE0=%20%20%200%2e00000&L_ITEMLENGTHVALUE0=%20%20%200%2e00000&L_ITEMWIDTHVALUE0=%20%20%200%2e00000&L_ITEMHEIGHTVALUE0=%20%20%200%2e00000&PAYMENTREQUEST_0_CURRENCYCODE=JPY&PAYMENTREQUEST_0_AMT=1000&PAYMENTREQUEST_0_ITEMAMT=1000&PAYMENTREQUEST_0_SHIPPINGAMT=0&PAYMENTREQUEST_0_HANDLINGAMT=0&PAYMENTREQUEST_0_TAXAMT=0&PAYMENTREQUEST_0_CUSTOM=56383531&PAYMENTREQUEST_0_DESC=Donation%20to%20the%20Wikimedia%20Foundation&PAYMENTREQUEST_0_INVNUM=56383531%2e1&PAYMENTREQUEST_0_INSURANCEAMT=0&PAYMENTREQUEST_0_SHIPDISCAMT=0&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_ADDRESSNORMALIZATIONSTATUS=None&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_TAXAMT0=0&L_PAYMENTREQUEST_0_AMT0=1000&L_PAYMENTREQUEST_0_DESC0=Donation%20to%20the%20Wikimedia%20Foundation&L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE0=%20%20%200%2e00000&L_PAYMENTREQUEST_0_ITEMLENGTHVALUE0=%20%20%200%2e00000&L_PAYMENTREQUEST_0_ITEMWIDTHVALUE0=%20%20%200%2e00000&L_PAYMENTREQUEST_0_ITEMHEIGHTVALUE0=%20%20%200%2e00000&PAYMENTREQUESTINFO_0_ERRORCODE=0
--
To view, visit https://gerrit.wikimedia.org/r/403745
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: If2e801b4ed876564faf20060c975912657cbf8df
Gerrit-PatchSet: 15
Gerrit-Project: mediawiki/extensions/DonationInterface
Gerrit-Branch: master
Gerrit-Owner: Mepps <[email protected]>
Gerrit-Reviewer: AndyRussG <[email protected]>
Gerrit-Reviewer: Ejegg <[email protected]>
Gerrit-Reviewer: Mepps <[email protected]>
Gerrit-Reviewer: XenoRyet <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits