• Kontakt
  • O systemie
  • Strona główna
Pomoc
  • Założenia systemu
  • Praca z systemem
  • Opcje
    • Treść
    • Menu
    • Narzędzia
      • Menadżer ilustracji i mediów
      • Menadżer plików
      • Bazy
      • Formularze
      • Banery
      • Galeria zdjęć
      • Kreator banerów
      • Newsletter
      • Opisy parametryczne
      • Sonda
      • Sprzedaż on-line
        • Metody płatności
        • Metody dodstawy
        • Stawki dostawy
        • Rabaty warunkowe
        • Kupony rabatowe
      • Forum
    • Wygląd
    • Administracja
    • Zatwierdź zmiany
    • Podgląd
  • Szablony
  • Moduły
  • Edytor HTML
  • E-commerce - sprzedaż online
  • Inne zagadnienia
  • Przykłady rozwiązań

Metody płatności

Definiowanie płatności na przykładzie AllPay:

1. Narzędzia -> sprzedaż on-line -> Metody płatności -> dodaj nową
2. Wypełniamy formularz:

skrypt -> allpay,
nazwa -> Allpay
Nazwa dodatkowa:, np: Visa, MasterCard, American Express
dodatkowy opis: Obciążenie karty nastąpi w chwili wysłania zamówienia. Autoryzacja zostanie przeprowadzona on-line przez firmę AllPay.
Informacja - akceptacja: Proces płatności zakończył się sukcesem. Zamówienie zostanie zrealizowane.
Informacja - błąd: Proces płatności zakończył się błędem.

po zapisaniu wchodzimy w edycję jeszcze raz i wypełniamy dodatkowe opcje:

Numer ID w AllPay: [numer_applay]
Potwierdzenia URLC - PIN: w opcjach na stronie AllPay.pl należy zdefiniować dowolny PIN szesnastoznakowy, jako adres zwrotny nalezy podać: http://[adres_www]/allpay.php
Domyślny kanał (0-19): 0
---------------

Należy dodać moduł "Płatności"
W administracja -> ustawienia modułów -> dodaj nowy:

moduł: payments
Nazwa: Płatności
globalny: [NIE]
moduł obiektowy: [TAK]
status:: [TAK]
Szablon: payments.tpl

----------------

do menu - w głównej gałęzi należy dodać kategorię "płatności" ->
Uaktywnić w niej moduł "Płatności", wirtualny katalog ustawić na "payments"

Przykładowa klasa płatności w katalogu /payments
(nazwa skryptu zgodna z nazwą podaną w ustawieniu płatności - pole nazwa skrytu - z rozszerzeniem ".inc.php")

<?php

  class dotpay {
    var $code, $title, $description, $enabled, $type, $par;
    var $form_action_url = 'https://ssl.dotpay.eu/';
    var $order;
    var $params;
    var $payment_types = array();
    var $types = array (
        0 => 'karty płatnicze',
        1 => 'mTransfer (mBank)',
        2 => 'Płacę z Inteligo (Inteligo Bank PKO BP)',
        3 => 'MultiTransfer (MultiBank)',
        6 => 'Przelew24 (Bank Zachodni WBK)',
        7 => 'ING OnLine (ING Bank Śląski)',
        8 => 'Sez@m (Bank Przemysłowo-Handlowy S.A.)',
        9 => 'Pekao24 (Bank Pekao S.A.)',
        10 => 'MilleNet (Millennium Bank)',
        11 => 'przekaz/przelew - forma uniwersalna',
        13 => 'Deutsche Bank PBC S.A.',
        14 => 'Kredyt Bank S.A. KB24 Bankowośd Elektroniczna',
        15 => 'iPKO ( Bank PKO BP)',
        16 => 'Lukas Bank',
        17 => 'Nordea Bank Polska',
        18 => 'Bank BPH - usługa „Przelew z BPH”',
        19 => 'Citibank Handlowy',
        21 => 'Dotpay Moje Rachunki',
        22 => 'Ukash',
        23 => 'Moneybookers',
        24 => 'mPay',
        25 => 'Invest Bank',
        26 => 'Bank Ochrony Środowiska',
        27 => 'Bank Gospodarki Żywnościowej',
        31 => 'Zielone Okienko (Płatnośd w sklepach Żabka)',
        32 => 'Fortis Bank S.A.',
        33 => 'Volkswagen Bank Polska S.A.');
    
    function get_types() {
        foreach ($this->types as $k => $v) {
            if ($_SESSION['set']['charset'] != 'utf-8') $v = iconv('utf-8', 'iso-8859-2', $v);
            $this->payment_types[] = array(
                            'pay_type' => $k,
                            'enabled' => 1,
                            'title'    =>  $v
                    );
        }
    
    }
    
    function process_button() {
      global $_txt, $currencies, $currency, $languages_id, $customer_id, $osCsid, $instance;

         $my_order = $_txt['store_name']." - ". $this->order['id']."\n";
        $delivery_name = $this->order['firstname']." ".$this->order['lastname'];
        $delivery_addr = $order->delivery['street_address']."\n".
                          $order->delivery['city'].", ".$order->delivery['postcode']."\n".
                          $order->delivery['country'];

     
        if ($this->order['lastname']  == '' && strpos($this->order['firstname'],' ')) {
            list($this->order['firstname'],$this->order['lastname']) = explode(' ',$this->order['firstname']);
        }
      $process_button_string = tep_draw_hidden_field('session_id', session_id() ) .
                               tep_draw_hidden_field('lang', 'pl') .
                               tep_draw_hidden_field('pay', 'yes') .
                               tep_draw_hidden_field('waluta', $_SESSION['set']['currency_iso']) .
                               tep_draw_hidden_field('id', $this->params['dotpayid']) .
                               tep_draw_hidden_field('kanal', ($_POST['pay_type']?$_POST['pay_type']:$this->params['channel'])) .
                               tep_draw_hidden_field('onlinetransfer', $this->params['online']) .
                               tep_draw_hidden_field('kwota', round($this->order['total'], 2)) .
                               tep_draw_hidden_field('opis', $_txt['store_name'].' ' . $this->order['id'] . '-' . date('Ymdhis') ) .
                               tep_draw_hidden_field('forename', $this->order['firstname']) .
                               tep_draw_hidden_field('surname', $this->order['lastname']) .
                               tep_draw_hidden_field('oscdesc', $my_order) .
                               tep_draw_hidden_field('oscname', $delivery_name) .
                               tep_draw_hidden_field('deladdr', $delivery_addr) .
                               tep_draw_hidden_field('street', $this->order['street_address']) .
                               tep_draw_hidden_field('street_n1', '') .
                               tep_draw_hidden_field('city', $this->order['city']) .
                               tep_draw_hidden_field('bill_state', '') .
                               tep_draw_hidden_field('postcode', $this->order['postcode']) .
                               tep_draw_hidden_field('country', 'Polska') .
                               tep_draw_hidden_field('comments', $this->order['comments']) .
                               tep_draw_hidden_field('phone', $this->order['phone']) .
                               tep_draw_hidden_field('email', $this->order['email']) .
                               tep_draw_hidden_field('control', $this->order['uid']) .
                               tep_draw_hidden_field('vmodule', '1.0.0') .
                                        tep_draw_hidden_field('URLC', tep_href_link('dotpay.php','','SSL')) .
                               tep_draw_hidden_field('return_url', tep_href_link($instance['payments']->url_success, '', '')) .
                               tep_draw_hidden_field('cancel_return_url', tep_href_link($instance['payments']->url_fail, '', ''));#
      return $process_button_string;

    }

 
    function check() {

      return true;
    }

 

  }
?>

Opis metod:

  • check ()
    sprawdzanie czy metoda jest dostępna
    zwracane wartości - boolean
  • get_types()
    pobieranie typów płatności
    zwracane wartości - brak
    działanie: ustawienie parametru klasy payment_types - jako tablica, przykład:

    $this->payment_types =
             array (
                    array(
                                'pay_type' => 0,
                                'enabled' => 1,
                                'title'    =>  'karty płatnicze'
                        ),
                    array(
                                'pay_type' => 1,
                                'enabled' => 1,
                                'title'    =>  'mTransfer'
                        )

          );
  • process_button()
    wygenerowanie pól formularza z przekierowaniem do systemu płatności
    metoda powinna zawrócić jedynie pola - bez tagu <form>
    funkcja globalna tep_draw_hidden_field(nazwa, wartość)  generuje pola ukryte: <input type="hidden".... />

Skrypt użytkownika

  • w katalogu payments możemy umieścić plik "userscript.inc.php" który powinien zawierać funkcję:
    payment_status_update($order_id,$paystatus,$orders_base)
    której zadaniem będzie zmiana statusu zamówienia
    $paystatus == 2 oznacza poprawny odbiór płatności przez skrypt odbierający płatności z systemów płatności
    $orders_base  - to nazwa bazy zamówień, np: 'zamowienia'
    $order_id - ID zamówienia



Powered by Actualizer CMS