public function getFormFields(Order $order) { $gateway = Checkout::get($order)->getSelectedPaymentMethod(); $gatewayfieldsfactory = new GatewayFieldsFactory($gateway, array('Card')); $fields = $gatewayfieldsfactory->getCardFields(); if ($gateway === "Dummy") { $fields->unshift(LiteralField::create("dummypaymentmessage", "<p class=\"message good\">Dummy data has been added to the form for testing convenience.</p>")); } return $fields; }
/** * Get credit card fields for the given gateways * @param array $gateways * @return CompositeField|null */ protected function getCCFields(array $gateways) { $onsiteGateways = array(); $allRequired = array(); foreach ($gateways as $gateway => $title) { if (!GatewayInfo::isOffsite($gateway)) { $required = GatewayInfo::requiredFields($gateway); $onsiteGateways[$gateway] = $required; $allRequired += $required; } } $allRequired = array_unique($allRequired); if (empty($onsiteGateways)) { return null; } $factory = new GatewayFieldsFactory(null, array('Card')); $ccFields = $factory->getCardFields(); // Remove all the credit card fields that aren't required by any gateway foreach ($ccFields->dataFields() as $name => $field) { if ($name && !in_array($name, $allRequired)) { $ccFields->removeByName($name, true); } } $lookupField = LiteralField::create('_CCLookupField', sprintf('<span class="gateway-lookup" data-gateways=\'%s\'></span>', json_encode($onsiteGateways, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP))); $ccFields->push($lookupField); return CompositeField::create($ccFields)->setTag('fieldset')->addExtraClass('credit-card'); }