function getPaymentFormFields()
    {
        $site_currency = Payment::site_currency();
        $paymentsList = '<div id="SecurePayTechCardsAvailable">';
        $count = 0;
        foreach (self::$credit_cards as $name => $image) {
            $count++;
            $class = '';
            if ($count == 1) {
                $class = "first";
            }
            if ($count % 2) {
                $class .= " even";
            } else {
                $class .= " odd";
            }
            $paymentsList .= '<img src="' . $image . '" alt="' . $name . '" class="SecurePayTechCardImage' . $count . '" />';
        }
        Requirements::customScript('
			function paymark_verify(merchant) {
				window.open ("http://www.paymark.co.nz/dart/darthttp.dll?etsl&tn=verify&merchantid=" + merchant, "verify", "scrollbars=yes, width=400, height=400");
			}
		', 'paymark_verify');
        $paymentsList .= '
			<img height="30" src="payment_securatech/images/paymark_small.png" alt="Paymark Certified" onclick="paymark_verify (' . "'" . self::get_spt_merchant_id() . "'" . ')" class="last" />
			</div>';
        $fieldSet = new FieldSet();
        $fieldSet->push(new LiteralField('SPTInfo', $paymentsList));
        return $fieldSet;
    }
 function accept()
 {
     $status = $_REQUEST['STATUS'];
     switch ($status) {
         case 5:
         case 9:
             if (!isset($_REQUEST["amount"]) && isset($_REQUEST["AMOUNT"])) {
                 $_REQUEST["amount"] = $_REQUEST["AMOUNT"];
             }
             if (!isset($_REQUEST["amount"]) && isset($_REQUEST["Amount"])) {
                 $_REQUEST["amount"] = $_REQUEST["Amount"];
             }
             if (!isset($_REQUEST["amount"])) {
                 $_REQUEST["amount"] = 0;
             }
             $money = DBField::create('Money', array("Amount" => floatval($_REQUEST["amount"]), "Currency" => Payment::site_currency()));
             $this->payment->Amount = $money;
             $this->payment->Status = 'Success';
             break;
         case 51:
         case 91:
             $this->payment->Status = 'Pending';
             break;
         case 52:
         case 92:
             $this->payment->Status = 'Failure';
             break;
     }
     $this->payment->write();
     $this->checkShaOut();
     $this->payment->redirectToOrder();
 }
 function populateDefaults()
 {
     parent::populateDefaults();
     $this->Amount->Currency = Payment::site_currency();
     $this->setClientIP();
 }
 protected function addOtherValuesToConfigs()
 {
     $this->definitions["Payment"]["site_currency"] = "Default currency for the site. <br />SET USING Payment::set_site_currency(\"NZD\") in the _config.php FILES";
     $this->configs["Payment"]["site_currency"] = Payment::site_currency() . " ";
     $this->defaults["Payment"]["site_currency"] = "[no default set]";
     $this->definitions["Geoip"]["default_country_code"] = "Default currency for the site. <br />SET USING Geoip::\$default_country_code in the _config.php FILES";
     $this->configs["Geoip"]["default_country_code"] = Geoip::$default_country_code;
     $this->defaults["Geoip"]["default_country_code"] = "[no default set]";
     $this->definitions["Email"]["admin_email_address"] = "Default administrator email. <br />SET USING Email::\$admin_email_address = \"bla@ta.com\" in the _config.php FILES";
     $this->configs["Email"]["admin_email_address"] = Email::$admin_email_address;
     $this->defaults["Email"]["admin_email_address"] = "[no default set]";
     $siteConfig = SiteConfig::current_site_config();
     $this->definitions["SiteConfig"]["website_title"] = "The name of the website. <br />This is set in the <a href=\"/admin/show/root\">site configuration</a>.";
     $this->configs["SiteConfig"]["website_title"] = $siteConfig->Title;
     $this->defaults["SiteConfig"]["website_title"] = "[no default set]";
     $this->definitions["SiteConfig"]["website_tagline"] = "The subtitle or tagline of the website. <br />This is set in the <a href=\"/admin/show/root\">site configuration</a>.";
     $this->configs["SiteConfig"]["website_tagline"] = $siteConfig->Tagline;
     $this->defaults["SiteConfig"]["website_tagline"] = "[no default set]";
 }
Exemplo n.º 5
0
 /**
  * Return the currency being used on the site.
  * @return string Currency code, e.g. "NZD" or "USD"
  */
 function Currency()
 {
     if (class_exists('Payment')) {
         return Payment::site_currency();
     }
 }
 /**
  * Set the currency for all products. Must match site curency.
  * TODO set currency for entire site in central location
  * 
  * @param Array $currency
  */
 public static function set_allowed_currency(array $currency)
 {
     if (count($currency) && array_key_exists(Payment::site_currency(), $currency)) {
         self::$allowed_currency = $currency;
     } else {
         user_error("Cannot set allowed currency. Currency must match: " . Payment::site_currency(), E_USER_WARNING);
         //TODO return meaningful error to browser in case error not shown
         return;
     }
 }
 /**
  * Process payment using HTTPS POST
  */
 function processPayment($data, $form)
 {
     $data = Convert::raw2sql($data);
     $realPayment = $this->Amount->Amount;
     if (Director::isDev()) {
         if (isset($data["SecurePayTechTestAmountValue"])) {
             if ($data["SecurePayTechTestAmountValue"] !== "") {
                 if ($data["SecurePayTechTestAmountValue"] == 0) {
                     $numberString = "99";
                 } else {
                     $numberString = "0." . $data["SecurePayTechTestAmountValue"];
                 }
                 $nicelyFormatted = number_format($numberString, 2);
                 $this->Amount->Amount = floatval($nicelyFormatted);
                 $this->Amount->Currency = Payment::site_currency();
             }
         }
         if (isset($data["SecurePayTechCardsToUse"])) {
             if ($data["SecurePayTechCardsToUse"] !== "") {
                 $cardArray = explode(",", $this->getCardData($data["SecurePayTechCardsToUse"]));
                 $data['SecurePayTechCreditCardNumber'] = trim($cardArray[1]);
                 $data['SecurePayTechCardExpiry'] = trim($cardArray[2]) . trim($cardArray[3]);
             }
         }
     }
     $orderRef = $this->ID;
     $cardNo = $data['SecurePayTechCreditCardNumber'];
     $cardExp = $data['SecurePayTechCardExpiry'];
     $cardHolder = $data['SecurePayTechCardHolderName'];
     $cardType = 0;
     $amt = $this->Amount->Amount;
     $currency = $this->Amount->Currency;
     $postvars = array('OrderReference' => $orderRef, 'CardNumber' => $cardNo, 'CardExpiry' => $cardExp, 'CardHolderName' => $cardHolder, 'CardType' => $cardType, 'MerchantID' => self::get_spt_merchant_id(), 'MerchantKey' => self::$spt_merchant_key, 'Amount' => $amt, 'Currency' => $currency);
     $this->Amount->setAmount($realPayment);
     $response = $this->http_post('https', 'tx.securepaytech.com', 8443, '/web/HttpPostPurchase', $postvars);
     if (!$response) {
         $this->Status = 'Failure';
         $this->Message = "Communication Failure";
         if (Director::isDev()) {
             $this->Message .= " (" . curl_error($ch) . ")";
         }
         $this->write();
         $result = new Payment_Failure();
         return $result;
     }
     $responses = explode(',', $response);
     //var_dump ($responses);
     if (!isset($responses[0])) {
         $responses[0] = 0;
     }
     $ok = false;
     if ($responses[0] == 1) {
         $ok = true;
     }
     if ($ok) {
         $this->Status = 'Success';
         $result = new Payment_Success();
     } else {
         $this->Status = 'Failure';
         $this->Message = $this->getResponseMessage($responses[0]);
         $result = new Payment_Failure();
     }
     $this->write();
     return $result;
 }
 /**
  * @return Money
  */
 public function PromoSavings()
 {
     $currency = method_exists('ShopConfig', 'get_site_currency') ? ShopConfig::get_site_currency() : Payment::site_currency();
     $field = new Money("PromoSavings");
     $field->setAmount($this->calculatePromoSavings());
     $field->setCurrency($currency);
     return $field;
 }
 /**
  * Standard SS Method
  * Adds the default currency
  */
 function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $defaultCurrencyCode = Payment::site_currency();
     if (!DataObject::get_one("EcommerceCurrency", "\"Code\" = '{$defaultCurrencyCode}'")) {
         $obj = new EcommerceCurrency();
         $obj->Code = $defaultCurrencyCode;
         $obj->Name = $defaultCurrencyCode;
         $obj->InUse = 1;
         $obj->write();
     }
 }
 function getUCurrency()
 {
     $currency = $this->owner->CurrencyUsed();
     if ($currency->exists() && !empty($currency->Code)) {
         return $currency->Code;
     }
     return Payment::site_currency();
 }
Exemplo n.º 11
0
 function updateForAjax(array &$js)
 {
     $subTotal = DBField::create('Currency', $this->SubTotal())->Nice();
     $total = DBField::create('Currency', $this->Total())->Nice() . ' ' . Payment::site_currency();
     $js[] = array('id' => $this->TableSubTotalID(), 'parameter' => 'innerHTML', 'value' => $subTotal);
     $js[] = array('id' => $this->TableTotalID(), 'parameter' => 'innerHTML', 'value' => $total);
     $js[] = array('id' => $this->OrderForm_OrderForm_AmountID(), 'parameter' => 'innerHTML', 'value' => $total);
     $js[] = array('id' => $this->CartSubTotalID(), 'parameter' => 'innerHTML', 'value' => $subTotal);
     $js[] = array('id' => $this->CartTotalID(), 'parameter' => 'innerHTML', 'value' => $total);
 }
Exemplo n.º 12
0
 /**
  * Go through items and modifiers and update cart total
  * 
  * Had to use DataObject::get() to retrieve Items because
  * $this->Items() was not returning any items after first call
  * to $this->addItem().
  */
 public function updateTotal()
 {
     $total = 0;
     $subTotal = 0;
     $items = DataObject::get('Item', 'OrderID = ' . $this->ID);
     $modifications = DataObject::get('Modification', 'OrderID = ' . $this->ID);
     if ($items) {
         foreach ($items as $item) {
             $total += $item->Total()->Amount;
             $subTotal += $item->Total()->Amount;
         }
     }
     if ($modifications) {
         foreach ($modifications as $modification) {
             if ($modification->SubTotalModifier) {
                 $total += $modification->Amount->getAmount();
                 $subTotal += $modification->Amount->getAmount();
             } else {
                 $total += $modification->Amount->getAmount();
             }
         }
     }
     $this->SubTotal->setAmount($subTotal);
     $this->SubTotal->setCurrency(Payment::site_currency());
     $this->Total->setAmount($total);
     $this->Total->setCurrency(Payment::site_currency());
     $this->write();
 }