Bei Payment API einbindung Hilfe benötigt...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bei Payment API einbindung Hilfe benötigt...

    Hallo liebe Community,

    ich würde wieder Profiunterstützung von euch benötigen, da ich bei dem oben genannten Vorhaben etwas anstehe.

    Ich habe eine bereits funktionierende Payment API Anbindung, möchte jedoch die Provider wechseln.
    Dazu muss ich eine neue Gateway hinzufügen. Ich habe zwar eine englische Beschreibung, jedoch stehe irgendwie auf der Leitung.

    Hier die Anleitung zur Einbindung:
    PHP-Code:
    Overview

    The Payment API attempts to provide a unified way of integration with different payment gateways
    .

    The API provides an abstract definition of payment gateway APIthis means it will not implement specific processing workflow – this is achieved by extending it.

    The API consists of:

        
    Library
        API allowing you to extend the functionality of the library

    Types of integrations

            Gateway Integration – all communication is done between SoftwareABC5 web server 
    and gatewaycustomer enters CC information on SoftwareABC5.
            
    Hosted Page – all payment (addressesitemsinformation transferred to gateway and transaction is completed there

    Workflow

        Create a 
    new php gateway class using the examples in this document
        Code any custom functionality required by payment gateway
        Place the 
    class in the gateway folder
        Open the admin 
    and configure and  enable offers for the new payment option

    As an exampleconsider a typical payment gatewayYou might need to:

        
    set up a merchant ID and a password
        add custom product codes 
    for each offer
        request users to write down their phone number before purchasing tokens

    All these can be accomplished with simple tasks
    :

        
    specify the 2 fieldsone for merchant IDone for the password in the generateAdminForm() metdodthey will automatically show up in admin edit screen
        specify the product code field in the generateAdminOffersForm
    () methodit will automatically show up in admin edit screen, for every system offer
        specify the phone 
    # field in the generatePaymentForm() method; it will automatically show up in front-end, on buy process page

    Conventions

    New gateways must extend the abstract gateway class:

    SoftwareABC_Payment_Gateway

    The naming convention 
    require SoftwareABC_Payment_Gateway_prefix being added to all new gateway class namesfollowed by a capitalized name of the payment gateway:

    SoftwareABC_Payment_Gateway_Demo

    Files must be placed in the gateway folder
    , for example:

    libs/
        
    classes/
            
    SoftwareABC/
                
    payment/
                    
    gateway/
                        
    Demo.class.php
                        Epoch
    .class.php
                        
    <- add new class here

    Following the convention will assure the 
    new gateway automatically shows up in adminwhere it can be enabled and set upNo more, and no lessis required.
    The Gateway class

    Now that we’ve discussed the minimum requirements for creating a new gateway and its structurelet’s discuss the minimum requirementthe Gateway class.

    The gateway class, as noted previouslyshould exist in the gateway’s folderBeyond thathoweverthere are no real requirementsother thatat a minimumit mus implement the following structure:

    class 
    SoftwareABC_Payment_Gateway_Demo extends SoftwareABC_Payment_Gateway
    {
        protected 
    $_gateway 'Demo';

        public function 
    generateAdminForm()
        {

        }
         public function 
    generatePaymentForm()
        {

        }
         public function 
    generateAdminOffersForm()
        {

        }
         public function 
    processOrder()
        {

        }
         public function 
    processTransaction(array $response)
        {

        }
    }

     

    Sowhat do gateway classes do, then?

    The gateway class fulfills three key purposes:

        
    It generates formseither for configuration or for payment
        It processes an order
        It processes a transaction

    Forms

    Most gateways 
    require some sort of configuration and parameters to be passed to each requestThis can be achieved by generating forms.

    There are 4 types of form elements that can be generatedeach of them supports labelscustom css class, custom ida chain of validators and other few specific options such as rows for testareasBelow are exampled for each type.
    Example of text input

    // set options
    $options = array(
        
    'label' => 'Text Input',
        
    '3' => 1,
        
    'id' => 'txt1',
        
    'class' => 'text',
        
    'size' => 28,
        
    'maxlength' => 24
    );

    // init element
    $element = new SoftwareABC_Form_Element_Text('text'$options);

    // get value, fallback to default
    $value $this->getOption('text''default text value');

    // set value, required, validator
    $element->setValue($value)
            ->
    setRequired(true)
            ->
    addValidator('alpha');

    // add element
    $this->getPaymentForm()->addElement($element);

    Example of textarea

    // set options
    $options = array(
        
    'label' => array('value'=>'Textarea''class'=>'textarea'),
        
    'id' => 'textarea1',
        
    'class' => 'text',
        
    'rows' => 5,
        
    'cols' => 20,
    );

    // init element
    $element = new SoftwareABC_Form_Element_Textarea('textarea'$options);

    // get value, fallback to default
    $value $this->getOption('textarea''default value for textarea');

    // set value, required, validator
    $element->setValue($value)
            ->
    setRequired(true)
            ->
    addValidator('alpha');

    // add element
    $this->getPaymentForm()->addElement($element);

    Example of select box

    // set options
    $options = array(
        
    'label' => array('value'=>'Select''class'=>'select'),
        
    'id' => 'select1',
        
    'class' => 'text',
        
    'options' => array(10=>'Option 10'20=>'Option 20'),
    );

    // init element
    $element = new SoftwareABC_Form_Element_Select('select'$options);

    // get value, fallback to default
    $value $this->getOption('select'20);

    // set value, required, validator
    $element->setValue($value)
            ->
    setRequired(true)
            ->
    addValidator('numeric');

    // add element
    $this->getPaymentForm()->addElement($element);

    Example of multi-select box

    // set options
    $options = array(
        
    'label' => array('value'=>'Multi Select''class'=>'multiselect'),
        
    'id' => 'multi1',
        
    'class' => 'text',
        
    'multiple' => true,
    );

    $opt = array(10=>'Option 10'20=>'Option 20'30=>'Option 30');

    // init element
    $element = new SoftwareABC_Form_Element_Multiselect('multiselect'$options);

    // get value, fallback to default
    $value $this->getOption('multiselect', array(1030));

    // set value, required, validator
    $element->setValue($value)
            ->
    setRequired(true)
            ->
    addValidator('numeric')
            ->
    setMultiOptions($opt);

    // add element
    $this->getPaymentForm()->addElement($element);

    Processing orders

    Different gateways 
    require different parameters for the orderThe implementation can follow two distinct directions:

        
    Compose a URL with gateway url and list of parametersthen redirect to gateway urlThe gateway will use a callback script (URL available in adminedit gateway screento respond with the transaction detailsBased on responsedisplay ok/error message.
        OR
        
    Compose an array of parameters and call the gatewayBased on responsedisplay ok/error message.

    Processing transactions

    Different gateways respond in specific formats after a transaction
    Based on the validity of response sourceof response parametersdisplay ok/error message

  • #2
    Und wo genau hapert es jetzt bei dir? Bekommst du Fehlermeldungen?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Ich versuche einmal meine Schritte zu erläutern, damit man evtl. nachvollziehen kann, wo der Fehler sein könnte.

      1. Zunächst habe ich eine leere "SoftwareABC_Payment_Gateway_Demo.class.php" erstellt und in folgenden Ordner gelegt:
      [COLOR=#000000][COLOR=#0000CC]libs[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]classes[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]SoftwareABC[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]payment[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]gateway[/COLOR][COLOR=#006600]/[/COLOR][/COLOR]
      2. Danach habe ich einen neuen Odner "demo" angelegt:
      [COLOR=#000000][COLOR=#0000CC]libs[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]classes[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]SoftwareABC[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]payment[/COLOR][COLOR=#006600]/[/COLOR][COLOR=#0000CC]gateway[/COLOR][COLOR=#006600]/demo[/COLOR][/COLOR]
      3. In diesen Ordner habe ich die Datei "SoftwareABC_Payment_Gateway_Demo.class.php" mit folgenden Inhalt:
      PHP-Code:
      class SoftwareABC_Payment_Gateway_Demo extends SoftwareABC_Payment_Gateway
      {
          protected 
      $_gateway 'Demo';

          public function 
      generateAdminForm()
          {

          }
           public function 
      generatePaymentForm()
          {

          }
           public function 
      generateAdminOffersForm()
          {

          }
           public function 
      processOrder()
          {

          }
           public function 
      processTransaction(array $response)
          {

          }

      4. Wenn ich danach die SoftwareABC_Payment_Gateway_Demo aufrufen möchte bekomme ich folgende Fehlermeldung:
      Gateway class is not defined: SoftwareABC_Payment_Gateway_Demo

      Kommentar

      Lädt...
      X