Recommended PrestShop Version

Thanks for choosing Agile.
For customers using our Agile Multiple Seller module and its accessry modules, we highly recommend to use PrestaShop 1.6x or 1.7.5 or lower. PrestaShop has made some changes in versions higher than 1.7.6 that makes it possible or very difficult to implement some of features via hooks, or override, since required hooks or override is not available.

Sept. 05, 2019

Guida di integrazione del modulo di pagamento

Integrazione e modalità di raccolta di pagamento

Prima introduciamo l'integrazione del modulo di pagamento, abbiamo bisogno di capire cos'è la modalità di pagamento insieme in modul venditore più Agile. Quando si utilizza più Agile venditore ed i suoi moduli accessori come soluzione del mercato online, è necessario integrare/personalizzare il modulo di pagamento in agile ambiente venditore più. Dipende la modalità di pagamento del venditore più Agile si utilizza, i requisiti del modulo di pagamento sono un po' diverso.

Archivio raccoglie pagamento

Non è necessario integrare o personalizzare il modulo di pagamento, è possibile utilizzare qualsiasi 3 ° moduli di pagamento di terze parti per questa modalità di pagamento insieme. Ma il modulo di pagamento devono essere seguire seguendo passi per elaborare il pagamento e creare ordini
= > Pagamento proess prima (l'intero carrello della spesa)
= > Quindi creare ordini di chiamata valiateOrder() di PaymentModule classe o relativi override

Il venditore riscuote il pagamento
 

Sarà necessario integrare il modulo di pagamento .

Entrambi venditore e archivio di riscuotere il pagamento 

Bisogno di integrare /personalizzare il modulo di pagamento.


Condizioni del modulo di pagamento 3 ° partito per essere in grado di integrare con modulo venditore più Agile.

R. elaborazione dei pagamenti all'interno del negozio
Modulo di pagamento deve completare il processo di pagamento entro il PrestaShop senza reindirizzare gli utenti al sito Web di gateway di pagamento per autorizzare il pagamento. Questo tipo di modulo di pagamento di solito uso servizio API o web gateway di pagamento per inviare il pagamento dell'acquirente info per gateway di pagamento e restituire il risultato di pagamento al lato server, acquirente non dispone essere reindirizzati al sito Web aziendale di pagamento per autorizzare il pagamento. Maggior parte dei moduli di pagamento carta di credito utilizzano in questo modo.

B. elabori il pagamento prima prima creazione ordini
Il modulo di pagamento deve elaborare pagamento prima prima di creare gli ordini. È solo quando pagamento elaborato con successo, quindi, chiamare PaymentModule -> validateOrder() per creare ordine. Il validateOrder() potrebbe essere il metodo di override del modulo di pagamento.

PASSI per integrare il tuo modulo 3 ° partito con più venduti - venditore più Agile 3.2.0.1 o sopra
Per favore si concentrano le linee di codice in blu - codice per l'integrazione.

1. definire le modalità di raccolta di pagamento per sostenere
Aggiungere la seguente riga alla classe del modulo di pagamento per definire quali modalità di raccolta di pagamento si modulo sosterrà

Class AgilePaypalParallel extends PaymentModule
{
pubblico statico $PaymentCollectionMode = array (
1 = > true ///seller raccoglie il pagamento - pagamenti acquirente verranno suddiviso in account di venditori
, 2 = > true ///both negozio e venditore raccogliere pagamento - pagamento dell'acquirente verrà suddiviso in conto store(commission) e venditori
, 3 = > true ///store raccoglie il pagamento da parte degli acquirenti
   );
   ................
}

2. pagamento modulo disponibilità di controllo.
Aggiungere le seguenti righe di codice all'inizio del metodo hookDisplayPayment() per controllare le disponibilità di modulo

Se questo modulo di pagamento non supporta correnti multiple modalità di raccolta del pagamento venditore, quindi restituiscono false - non si presenta
$paymode = (int)Configuration::get('AGILE_MS_PAYMENT_MODE');
if(Module::IsInstalled('agilemultipleseller') & &! self:: $PaymentCollectionMode [$paymode]) return false;


3. registrare un gancio per informare più modulo di venditore di integrare
Metodo di installazione all'interno del modulo, l'aggiunta di una riga per registrare gancio actionAgilePaymentModuleIntegrate informare agile più modulo di venditore di integrare questo modulo di pagamento.


public void Uninstall)
{
if(!Parent::Uninstall()) return false
Se (! padre:: install)
O! $this -> registerHook('actionAgilePaymentModuleIntegrate')
OR! Configurazione:: updateValue ('AGILE_PAYPALPL_BUSINESS', '[email protected]')
OR! Configurazione:: updateValue ('AGILE_PAYPALPL_SANDBOX', 1)
O! $this -> registerHook('displayPayment')
O! $this -> registerHook('displayPaymentReturn')
) restituirà false;
    .............

}

4. preparare il metodo di gancio per restituire le informazioni di integrazione richiesto
Creare seguendo il metodo nella classe di nucleo del modulo di pagamento, quindi verrà chiamato dal modulo di venditore più per recuperare l'integrazione di informazioni correlate.

function hookActionAgilePaymentModuleIntegrate($params)
{
Return array (
'nome' = > $this -> nome,
'desc' = > $this -> displayName,
'modalità' = > self:: $PaymentCollectionMode,
'elinks' = > array (
Array (
'etichetta' = > $this -> l ('autorizzazione Stripe Connection')
, 'url' = > 'https://connect.stripe.com/oauth/authorize'
, 'tooltip' = > $this -> l ('Clicca qui per autorizzare o ri-autorizzare il tuo Account di striscia per connettersi con questa piattaforma di mercato')
             ),
      ),

'info1' = > array ('etichetta' = > $this -> l ('API Login ID'), 'is_unique' = > 1, 'is_readonly' = > 0, 'tooltip' = > $this -> l ('spiegazione dei campi')),
'info2' = > array ('etichetta' = > $this -> l ('chiave di transazione'), 'is_unique' = > 1, 'is_readonly' = > 1, 'tooltip' = > $this -> l ('spiegazione dei campi')),
'info3' = > array ('etichetta' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, 'tooltip' = > '),

'info4' = > array ('etichetta' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, 'tooltip' = > '),
'info5' = > array ('etichetta' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, 'tooltip' = > '),
'info6' = > array ('etichetta' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, 'tooltip' = > '),
'info7' = > array ('etichetta' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, 'tooltip' = > '),
'info8' = > array ('etichetta' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, 'tooltip' = > '),
    );
}

seller payment setting screen - integrated module

In sopra metodo gancio, fornirete seguenti informazioni per agile più modulo di venditore.
-nome del modulo (nome interno)
-Descrizione del modulo (nome visualizzato del modulo)
-modalità di pagamento disponibili raccolta sosterrà il vostro modulo
-informazioni di pagamento che il venditore deve fornire per riscuotere i pagamenti da acquirenti attraverso questo modulo. Questo di solito i campi di configurazione dei moduli. Sono disponibili per uso maximium 8 campi. Il numero di campi richiesti dipende dal tuo modulo di pagamento.

La maggior parte dei casi i campi di informazioni requited per negozio principale è diverso da venditori, ma a volte sono la stessa cosa. Ad esempio, Agile Authorize.NET modulo avrà seguito 2 campi come definito nel codice di esempio di cui sopra.
-API Log ID
-Chiave transazione

È necessario definire l'etichetta del campo e anche specificare se il campo fa parte di campi univoci da convalidare quando un venditore l'aggiunta di nuove informazioni di pagamento. Il modulo userà i campi con valore is_unique 1 per verificare se le informazioni di pagamento sono lo stesso con altri venditori per evitare la duplicazione.

Nota
Si prega di tenere il codice così che com'è, solo modificare il valore in modo che l'etichetta sarà in grado di supportare più lingue e sarete in grado di tradurre il nome del campo in diverse lingue a scheda di back-office - localizzazioni - transazioni

5. preparare il validator di pagamento info campo (opzionale)
Ogni venditore sarà necessario immettere le informazioni di pagamento per la ricezione del pagamento da parte degli acquirenti (o dal negozio). Si potrebbe bisogno di convalidare ogni campo entra quel venditore è dati validi. Ad esempio, se si tratta di un modulo di Paypal, si vuole convalidare il primo campo "info1" quel venditore immesso è un indirizzo email valido.

Ecco un esempio di convalida nel vostro modulo di pagamento

function validatePaymentInfoFields($paymentinfo)
{
$errors = Array ();
   
[] if(Empty($PaymentInfo)) $errors = $this -> l ('informazioni di pagamento non valido');

$info1 = (is_array($paymentinfo)? $paymentinfo ['info1']: $paymentinfo -> info1);
if (!. [] Validate::isEmail($info1)) $errors = $this -> nome. ":" . $this -> l ('indirizzo Email di Paypl'). $this -> l ('non è valido.');

ritorno $errors;
}


6. processo di pagamento e validateOrder() - creare ordine
Al fine di integrare il modulo di pagamento, il tuo modulo di pagamento deve seguire la procedura standard di PrestaShop checkout e procedura relazionato al pagamento di elaborazione degli ordini. Qui è il processo che è legato al pagamento dell'ordine.

= = > A. recuperare pagamento info = = > B. eseguire pagamento = = > C. ValidateOrder(Create Order data)

Recuperare i dati di pagamento

Sarà necessario chiamare seguendo il metodo del modulo di Agiile diversi venditore per ricevere i dati di pagamento.

$payments = AgileMultipleSeller::get_payment_info_from_cart();

Il modulo restituirà una matrice con informazioni di dati di pagamento basati sulla modalità di pagamento. Ogni elemento della matrice conterrà seguenti informazioni.

-$id_seller come chiave dell'array
-"e-mail": e-mail destinatario (venditore) indirizzo (venditore o negozio), ad esempio, [email protected]
-«importo»: l'importo del destinatario deve ricevere, per esempio, $230,00
-«Commissione»: la Commissione del venditore a pagare o negozio per ricevere

Nota
: l'importo è in valuta del carrello di acquisto, sarà necessario convertire la valuta computo del modulo di pagamento prima di inviare al pagamento getway.

Di seguito è riportato il codice di esempio per visualizzare i dati di pagamento per il modulo di pagamento.

$payments = AgileMultipleSeller::get_payment_info_from_cart();
foreach ($payments $id_seller = > $payment)
{
... codice di elaborazione dei pagamenti
}

$this -> validateOrder(...)
 

Il codice per l'elaborazione dei pagamenti sarà diverso per i moduli di pagamento differenti. Lasciamo per determinare come implementare il pagamento. Lasceremo l'errore di pagamento gestione per voi da gestire. Ad esempio, se ci sono più venditore in un carrello della spesa, dovrete gestire se qualche pagamento del venditore non è riuscito. Qualche credito carrello pagamento supporta 2 passi - autorizzare il pagamento prima poi catturare la quantità per finire uno dei pagamenti, suggeriamo che si autorizza il pagamento di tutti i venditori in primo luogo e poi validateOrder() e quindi chiamata "cattura" per finalizzare i pagamenti.

Nota:

A seconda del gateway di pagamento, potrebbe essere necessario informazioni di pagamento del venditore ad esempio le credenziali API invece del tuo negozio se il beneficiario del pagamento è il venditore. È possibile utilizzare il seguente codice per ottenere il pagamento del venditore informazioni (quali le credenziali API) per il modulo di pagamento.

include_once (_PS_ROOT_DIR_. "/ modules/agilemultipleseller/AgileSellerPaymentInfo.php");
$paymentinfo = AgileSellerPaymentInfo::getForSellerByModuleName ($this -> nome, $id_seller);




Buon divertimento con l'integrazione.