Source of file AfterpayEcommercePaymentController.php
Size: 2,773 Bytes - Last Modified: 2021-12-23T10:38:49+00:00
/var/www/docs.ssmods.com/process/src/src/Control/AfterpayEcommercePaymentController.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | <?php namespace Sunnysideup\Afterpay\Control; use CultureKings\Afterpay\Model\Merchant\Payment; use SilverStripe\Control\Controller; use SilverStripe\Control\Director; use Sunnysideup\Afterpay\Factory\SilverstripeMerchantApi; use Sunnysideup\Afterpay\Model\AfterpayEcommercePayment; use Sunnysideup\Ecommerce\Config\EcommerceConfig; use Sunnysideup\Ecommerce\Model\Order; class AfterpayEcommercePaymentController extends Controller { private static $allowed_actions = [ 'confirm' => true, ]; public function index() { return $this->redirect('/'); } public function allowedActions($limitToClass = null) { return self::$allowed_actions; } public function confirm($request) { $orderID = (int) $request->param('ID'); $order = Order::get_order_cached((int) $orderID); $orderToken = $request->getVar('orderToken'); $success = 'SUCCESS' === $request->getVar('status'); $payment = AfterpayEcommercePayment::get()->filter( [ 'OrderID' => $orderID, 'AfterpayToken' => $orderToken, ] )->first(); if ($payment) { $payment->Status = 'Failure'; if ($success) { if ($order) { $api = $this->myAfterpayApi(); $response = $api->createPayment($orderToken, $order->ID); if ($response instanceof Payment) { $payment->AfterpayConfirmationToken = serialize($response); if ('APPROVED' === $response->getStatus()) { $payment->Status = 'Success'; } } } } else { $payment->Status = 'Failure'; } $payment->write(); } if ($order) { return $this->redirect($order->Link()); } return $this->redirect('/404-can-not-find-order'); } public function Link($action = null): string { return '/afterpaypayment/'; } public static function create_link($order): string { return Director::absoluteURL('afterpaypayment/confirm/' . $order->ID . '/'); } public function ShowAfterpay($total): bool { return $this->myAfterpayApi()->canProcessPayment(floatval($total)); } protected function capturePayment() { } protected function myAfterpayApi() { return SilverstripeMerchantApi::inst() ->setMinAndMaxPrice( EcommerceConfig::inst()->AfterpayMinValue, EcommerceConfig::inst()->AfterpayMaxValue ) ->setIsServerAvailable(true) ; } } |