Skip to content

Commit 312474a

Browse files
committed
ACP2E-4064: PayflowPro saved card token failed on payment
1 parent ed50ddb commit 312474a

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

app/code/Magento/Paypal/Model/Payflow/Transparent.php

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,41 @@ protected function createPaymentToken(Payment $payment, $token)
268268
$paymentToken->setTokenDetails(
269269
json_encode($payment->getAdditionalInformation(Transparent::CC_DETAILS))
270270
);
271-
$expDate = new \DateTime('now', new \DateTimeZone('UTC'));
272-
$expDate->add(new \DateInterval('P1Y'));
273-
$paymentToken->setExpiresAt($expDate->format('Y-m-d 00:00:00'));
271+
$paymentToken->setExpiresAt(
272+
$this->getExpirationDate($payment)
273+
);
274274

275275
$this->getPaymentExtensionAttributes($payment)->setVaultPaymentToken($paymentToken);
276276
}
277277

278+
/**
279+
* Generates CC expiration date by year and month provided in payment.
280+
*
281+
* @param Payment $payment
282+
* @return string
283+
* @throws \Exception
284+
*/
285+
private function getExpirationDate(Payment $payment)
286+
{
287+
$cardExpDate = new \DateTime(
288+
$payment->getCcExpYear()
289+
. '-'
290+
. $payment->getCcExpMonth()
291+
. '-'
292+
. '01'
293+
. ' '
294+
. '00:00:00',
295+
new \DateTimeZone('UTC')
296+
);
297+
$cardExpDate->add(new \DateInterval('P1M'));
298+
$oneYearFromNow = new \DateTime('now', new \DateTimeZone('UTC'));
299+
$oneYearFromNow->add(new \DateInterval('P1Y'));
300+
if ($cardExpDate <= $oneYearFromNow) {
301+
return $cardExpDate->format('Y-m-d 00:00:00');
302+
}
303+
return $oneYearFromNow->format('Y-m-d 00:00:00');
304+
}
305+
278306
/**
279307
* Returns payment extension attributes instance.
280308
*

0 commit comments

Comments
 (0)