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');
 }