Piattaforma di nuova generazione

Acquisizione del pagamento

Come negozio associato, è possibile acquisire i pagamenti per un ordine prima di confermarlo. È possibile selezionare i metodi di pagamento e confermare l'ordine pagando con uno o più metodi di pagamento. Questa sezione descrive le API, i servizi, le uscite utente e altri componenti utilizzati per implementare l'acquisizione del pagamento.

La conferma di pagamento è l'ultima fase dell'acquisizione dell'ordine. Per impostazione predefinita, Sterling Store Engagement supporta metodi di pagamento come contanti, carte regalo e carte di credito. Le implementazioni di uscite utente fittizie vengono utilizzate per supportare l'autorizzazione e la liquidazione del pagamento rispetto ai metodi di pagamento con carta di credito e carta regalo. Ulteriori tipi di pagamento sono supportati nella pagina Acquisisci pagamento tramite personalizzazione.

Le seguenti API vengono richiamate dalla pagina Acquisisci pagamento :
  • L'API getCompleteOrderDetails viene richiamata per richiamare l'importo che il cliente deve pagare per effettuare l'ordine e i metodi di pagamento utilizzati se è già stato effettuato un pagamento.
  • L'API getPaymentTypeList viene richiamata per richiamare i metodi di pagamento consentiti dalla tua azienda. Da questo elenco, è possibile selezionare un metodo di pagamento da aggiungere all'ordine.
    Nota: in questa pagina vengono visualizzati solo i tipi di pagamento supportati tramite la personalizzazione.
  • L'API getRuleDetails viene richiamata con RuleSetFieldName="ISF_STORE_ALLOW_ADDR_CAP_FOR_CC" per controllare se è richiesta l'acquisizione dell'indirizzo durante l'acquisizione delle informazioni sulla carta di credito per il pagamento.
  • L'API capturePayment viene richiamata per aggiungere i metodi di pagamento all'ordine, a seconda del tipo di informazioni sul metodo di pagamento inoltrato.
  • L'API processOrderPayments viene richiamata per richiamare le API requestCollection() e executeCollection() all'interno di una singola API. Viene richiamato dopo ogni chiamata API capturePayment riuscita.
  • L'API confirmDraftOrder conferma il completamento di un ordine provvisorio e lo sposta nello stato Creato. Viene richiamato solo dopo la prima chiamata API processOrderPayments eseguita correttamente.
  • L'API changeOrderStatus viene richiamata alla fine per modificare lo stato delle linee d'ordine Carry da Creato a Trasportato.

Presupposti / Limitazioni

  • Una volta effettuato il pagamento parziale per un ordine, non è possibile tornare alla pagina Visualizza carrello .
  • L'ordine provvisorio viene confermato non appena si effettua un pagamento sull'ordine. Le linee di ordine di trasporto vengono spostate nello stato Carried una volta che l'importo dell'ordine viene pagato completamente.

Aggiunta di metodi di pagamento a un ordine

L'API getPaymentTypeList richiama i metodi di pagamento consentiti dalla tua azienda.

È possibile selezionare un metodo di pagamento facendo clic sull'icona + accanto ad un metodo di pagamento. Il cliente può utilizzare uno o più metodi di pagamento per effettuare il pagamento. Dopo aver scelto un modo di pagamento, è possibile aggiungere l'importo da pagare utilizzando il metodo di pagamento selezionato.

L'API capturePayment salva il metodo di pagamento per l'ordine e gestisce i tipi di pagamento esterno. L'API processOrderPayment viene richiamata immediatamente dopo l'API capturePayment per gestire l'autorizzazione e la raccolta dell'importo pagato utilizzando il metodo di pagamento selezionato.

Una volta effettuato un pagamento parziale per un ordine provvisorio, viene richiamata l'API confirmDraftOrder per confermare l'ordine. Tuttavia, il processo di acquisizione dell'ordine non viene completato fino a quando non viene pagato l'intero importo dell'ordine. Viene visualizzato un messaggio di intestazione delle informazioni per indicare l'importo del saldo da raccogliere per l'ordine.

Il cliente può scegliere di pagare utilizzando più metodi di pagamento e distribuire le spese tra carte di credito, contanti o carte regalo. Dopo aver effettuato il pagamento parziale o completo sull'ordine, viene calcolato l'importo in sospeso sull'ordine. Nel caso in cui vi sia un importo in sospeso da raccogliere sull'ordine, viene visualizzato un banner informativo per assistere l'associato del negozio a raccogliere lo stesso.

Quando viene pagato l'importo totale dovuto sull'ordine, l'API changeOrderStatus viene richiamata per modificare lo stato delle linee d'ordine di trasporto da CREATED a CARRIED . Questa API viene richiamata solo se l'ordine contiene linee di trasporto. L'API changeOrderStatus ricerca la configurazione dei tipi di inventario di stato e adegua di conseguenza la fornitura di inventario per le linee di trasporto.

Inoltre, gli ascoltatori di commit (OMPSIMChangeOrderStatusRestCommitListener) sono registrati con l'API changeOrderStatus per pubblicare gli aggiornamenti dell'inventario al servizio Store Inventory Management. La classe OMPSIMChangeOrderStatusRestCommitListener è responsabile della pubblicazione degli aggiornamenti dell'inventario a Store Inventory Management, invocando l'API di rimozione dell'inventario in modo sincrono a Store Inventory Management.

L'API changeOrderStatus legge l'indirizzo ShipNode dalle righe dell'ordine di trasporto, se presente, e controlla se il nodo è abilitato alla gestione dell'inventario del negozio (SIM). Se sì, il sito OMPSIMChangeOrderStatusRestCommitListener è registrato per pubblicare gli aggiornamenti dell'inventario in Gestione inventario negozi. Gli adeguamenti dell'inventario alla gestione dell'inventario del negozio avvengono in tempo reale. Eventuali errori durante la regolazione dell'inventario in Gestione inventario del negozio comporteranno un fallimento nel processo di acquisizione degli ordini.

La sequenza di addebito configurata in Sterling Business Center ha la priorità. La sequenza nell'API capturePayment viene considerata se esiste un legame nei numeri di sequenza. Ad esempio, se si dispone di più metodi di pagamento dello stesso tipo o se più metodi di pagamento hanno lo stesso numero di sequenza. L'API capturePayment considera fundsAvailable, RemainingAmountToAuthe altre variabili per calcolare il limite di addebito massimo di un metodo di pagamento.

Se il cliente desidera modificare l'importo addebitato rispetto a un metodo di pagamento esistente, l'attributo RequestedAmount viene aggiornato automaticamente. L'API capturePayment viene richiamata per considerare la correzione e aggiornare di conseguenza gli attributi MaxChargeLimits e RemainingAmountToAuth.

Dopo aver effettuato un pagamento parziale sull'ordine, il cliente può scegliere di annullare l'ordine. In questo caso, come associato di un negozio, è possibile annullare l'ordine scegliendo un motivo di cancellazione appropriato. L'API changeOrder viene richiamata per annullare l'ordine e l'API processOrderPayments viene richiamata per elaborare il rimborso del pagamento parziale. È possibile visualizzare il riepilogo del rimborso dopo il corretto annullamento dell'ordine. Il riepilogo del rimborso fornisce un elenco dei metodi di pagamento utilizzati per pagare l'ordine ed elenca anche il metodo di pagamento utilizzato per il rimborso in base alla configurazione del rimborso. Se il rimborso avviene in contanti, è necessario consegnare l'importo specificato nel riepilogo del rimborso come contante al cliente.

Contanti

Gli associati del negozio possono aggiungere l'importo che il cliente desidera pagare utilizzando il metodo di pagamento in contanti nel campo Importo e confermare il pagamento. L'API capturePayment viene richiamata con l'input come mostrato nel seguente esempio:
{
   "Order":{
      "OrderHeaderKey":"order_id",
      "EnterpriseCode":"enterprise_code",
      "PaymentMethods":{
         "PaymentMethod":[
            {
               "PaymentType":"CASH",
               "PaymentTypeGroup":"OTHER",
               "RequestedAmount":"100.00",
               "PaymentReference1":"Cash for Charge",
               "Operation":"Collect"
            }
         ]
      }
   }
}
  • Se l'importo ricevuto è uguale al totale dell'ordine, l'ordine viene confermato e viene aperta la pagina Riepilogo ordine.
  • Se l'importo ricevuto è inferiore al totale dell'ordine, l'importo dovuto viene aggiornato per visualizzare l'importo del saldo. Viene visualizzato un messaggio di avviso per mostrare l'importo dovuto. È ora possibile selezionare un nuovo metodo di pagamento per pagare l'importo dovuto.
  • Non è possibile immettere un importo maggiore del totale dell'ordine.
  • Se l'importo ricevuto deve essere addebitato e autorizzato, ovvero se viene utilizzato per pagare linee d'ordine di trasporto e spedizione o ritiro, il pagamento viene suddiviso in due oggetti e la seguente voce viene aggiunta all'array Payment method :
    {               
    "PaymentType":"CASH",               
    "PaymentTypeGroup":"OTHER",               
    "RequestedAmount":"100.00",               
    "PaymentReference1":"Cash for Charge",               
    "Operation":"Collect"            
    }

Gift card

Come associato di un negozio, è necessario verificare il saldo della carta regalo immettendo il numero della carta regalo. Utilizza l'API invokeUE con l'uscita utente YFSGetFundsAvailableUE . In base alla risposta ricevuta, vengono effettuate le azioni riportate di seguito:
  • Se l'importo del saldo disponibile nella carta regalo è maggiore di 0, vengono abilitati il campo Importo e il pulsante Conferma .
  • Se l'importo del saldo disponibile nella carta regalo è uguale a 0, viene visualizzato un messaggio di errore appropriato.
  • Se l'importo del saldo disponibile nella carta regalo è inferiore all'importo dovuto, un importo pari all'importo disponibile nella carta regalo viene aggiornato automaticamente nel campo Importo ed è possibile confermare il pagamento.
  • Viene visualizzato un messaggio di errore se si immette un importo maggiore dell'importo disponibile nella carta regalo o nell'importo dovuto, a seconda di quale valore è minore.
  • Se l'importo ricevuto deve essere addebitato e autorizzato, ovvero se viene utilizzato per pagare sia le linee d'ordine di trasporto che di spedizione o ritiro, il pagamento viene suddiviso in due oggetti e la seguente voce viene aggiunta all'array Payment method :
    {  
    "Order":{  
    "OrderHeaderKey":"order_id",      
    "EnterpriseCode":"enterprise_code",      
    "PaymentMethods":{         
    "PaymentMethod":[            
    {               
    "PaymentType":"GIFT_CARD",               
    "PaymentTypeGroup":"OTHER",              
     "RequestedAmount":"100.00",               
     "PaymentReference1": giftCardNumber + 'ForCharge',
     "PrimaryAccountNo": giftCardNumber,
     "Operation":"Collect"            
    },
    {               
    "PaymentType":"GIFT_CARD",               
    "PaymentTypeGroup":"OTHER",              
     "RequestedAmount":"100.00",               
     "PaymentReference1": giftCardNumber + 'ForAuth',
     "PrimaryAccountNo": giftCardNumber,
     "Operation":"Manage"            
    }
     ]     
    }   
    }
    }

Carte di credito

Come associato del negozio, è possibile selezionare la carta di credito come metodo di pagamento, aggiungere l'importo da pagare e fare clic su Conferma. Viene visualizzato un messaggio che richiede di scorrere la carta di credito. Facendo clic su OK, vengono richiamati i dettagli della carta swiped e viene creata una richiesta di conferma del metodo di pagamento come mostrato nel seguente esempio:
{
        PaymentType: 'CREDIT_CARD',
 Operation: (this.orderDetails.RemainingFinancialTotals.RemainingToCharge > 0) ? 'Collect' : 'Manage'
        RequestedAmount: 100,
        CreditCardExpDate: '',
        CreditCardNo: '1234', (random 4 digits)
        CreditCardType: '',
        FirstName: '',
 MiddleName: '',
        LastName: '',
        SecureAuthenticationCode: '',
        PaymentReference1: '',
        PaymentReference2: '',
        PaymentReference3: '',
 PaymentReference4: '',
 PaymentReference5: '',
 PaymentReference6: '',
 PaymentReference7: '',
 PaymentReference8: '',
 PaymentReference9: '',
 DisplayPaymentReference1: ''
 };
  • Se l'importo ricevuto deve essere addebitato e autorizzato, ovvero, se viene utilizzato per pagare le linee di trasporto e spedizione o ritiro, vengono aggiunti RequestedAmount = charged amount e SecondaryAmount = (RequestedAmount - RemainingToCharge) .
  • Il servizio credit-card-data.service.ts viene aggiunto al componente della carta di credito. Questo servizio viene utilizzato per trasmettere i dettagli della carta di credito al componente principale della carta di credito. Per impostazione predefinita, i dati fittizi vengono trasmessi da tale servizio. Tuttavia, questo può essere esteso per restituire i dati da un'API e i dati restituiti vengono aggiunti all'oggetto PaymentMethod .
Se la regola WSC_STORE_ALLOW_ADDR_CAP_FOR_CC è impostata su true, l'acquisizione dell'indirizzo è obbligatoria per i pagamenti con carta di credito.
  • Se un indirizzo di fatturazione (PersonInfoBillTo) è disponibile nell'ordine, viene utilizzato l'indirizzo di fatturazione.
  • Se il cliente è identificato e l'indirizzo di fatturazione è impostato come predefinito (isDefaultBillTo=true), questo indirizzo viene utilizzato come indirizzo di fatturazione. Ovvero, se l'ordine contiene PersonInfoBillTo, vengono utilizzate queste informazioni.
  • Se un indirizzo di spedizione (PersonInfoShipTo) è disponibile per l'ordine, questo indirizzo viene utilizzato come indirizzo di fatturazione se è selezionato billToSameAsShipTo .

    Se billToSameAsShipTo non è selezionato, viene visualizzata un'opzione per aggiungere un indirizzo di fatturazione e viene acquisito un nuovo indirizzo di fatturazione per il metodo di pagamento.

Elaborazione del pagamento

L'API processOrderPayments gestisce tutte le autorizzazioni e calcola l'importo effettivo da raccogliere in qualsiasi momento durante l'elaborazione dell'ordine. Tutti i metodi di pagamento autorizzati con successo vengono immediatamente considerati per i pagamenti.

Se un metodo di pagamento non supera l'autorizzazione, viene richiesto di correggere il metodo di pagamento o di utilizzare un altro metodo di pagamento. Se il sistema di verifica del pagamento è in acconto, il metodo di pagamento viene ancora considerato. Tuttavia, l'autorizzazione si verifica successivamente tramite gli agenti di elaborazione dei pagamenti.

In base ai risultati dell'API processOrderPayments , se tutti i metodi di pagamento vengono elaborati correttamente, il valore dell'attributo PaymentTransactionSuccessful è impostato su Y e l'ordine viene confermato.

Se uno dei metodi di pagamento ha esito negativo, il valore dell'attributo PaymentTransactionSuccessful è impostato su N. Viene visualizzato un messaggio appropriato per indicare che il pagamento non è stato elaborato correttamente. Viene visualizzato il messaggio restituito nell'elemento PaymentTransactionError per indicare il motivo per cui il metodo di pagamento viene revocato. A seconda del motivo, le informazioni rilevanti possono essere modificate, ad esempio, la data di scadenza della carta, l'indirizzo di fatturazione o i riferimenti di pagamento.

Non è possibile modificare gli identificativi univoci. Ad esempio, se il numero della carta di credito non viene immesso correttamente, il metodo di pagamento viene rimosso o sospeso e deve essere aggiunto un nuovo metodo di pagamento.

L'API executeCollection richiama una delle seguenti uscite utente per ogni metodo di pagamento sull'ordine basato sull'attributo PaymentTypeGroup del metodo.
  • YFSCollectionCreditCardUE
  • YFSCollectionCustomerAccountUE
  • YFSCollectionOthersUE
  • YFSCollectionStoredValueCardUE
Queste uscite utente forniscono la possibilità di aggiungere la logica personalizzata per autorizzare e addebitare i pagamenti. Per ulteriori informazioni sulle uscite dell'utente, consultare il sistema IBM® Sterling Order Management : Javadoc™.

Gestione errori di pagamento

Quando i pagamenti vengono confermati per la prima volta per un ordine, l'API processOrderPayments gestisce tutte le autorizzazioni e calcola l'importo effettivo da raccogliere in qualsiasi momento durante l'elaborazione dell'ordine. L'API, a sua volta, richiama le uscite utente che convalidano i metodi di pagamento e restituiscono errori, se la convalida dei pagamenti non riesce.

L'elemento PaymentTransactionError nell'output dell'API contiene gli errori. Tutti i metodi di pagamento autorizzati con successo vengono immediatamente considerati per i pagamenti. Se un metodo di pagamento non supera l'autorizzazione, viene richiesto di correggere il metodo di pagamento o di utilizzare un altro metodo di pagamento.

Se il sistema di verifica del pagamento è in acconto, il metodo di pagamento viene ancora considerato. Tuttavia, l'autorizzazione si verifica successivamente tramite gli agenti di elaborazione dei pagamenti. Quando la pagina Acquisisci pagamento viene caricata nuovamente, i metodi di pagamento che hanno restituito errori nella precedente transazione vengono richiamati in base allo stato impostato per ciascuno dei metodi di pagamento.

L'API processOrderPayments non viene richiamata nuovamente per convalidare i metodi di pagamento esistenti nell'ordine. Tuttavia, quando correggi i metodi di pagamento errati e applichi le modifiche, viene richiamata l'API processOrderPayments per convalidare i pagamenti.

Acquisizione ed elaborazione di pagamenti in diversi scenari

Ordina solo con linee d'ordine Carry

Negli ordini di trasporto, i clienti ordinano articoli in un negozio e lasciano il negozio con gli articoli. In questi casi, c'è un accordo immediato sulle linee d'ordine. L'importo pagabile per le linee d'ordine Carry viene addebitato al momento dell'acquisto. I clienti possono utilizzare i metodi di pagamento disponibili per completare il pagamento per le linee d'ordine Carry.

  • Il totale dell'ordine deve essere saldato, ritirato o addebitato per confermare l'ordine.
    • L'attributo RemainingFinancialTotals.RemainingToCharge viene utilizzato per l'importo da addebitare.
    • Operation=Collect viene passato durante l'acquisizione del pagamento indipendentemente dal metodo di pagamento utilizzato.
    • L'acquisizione del pagamento è contrassegnata come non riuscita in caso di errori di pagamento.
  • L'importo della linea d'ordine di trasporto può essere suddiviso tra più metodi di pagamento e ciascun metodo di pagamento viene addebitato.
  • Le spese, gli sconti e le tasse della linea d'ordine vengono automaticamente adeguati al totale parziale della linea. Il totale della linea d'ordine è una parte dell'attributo InPerson=Y bucket of RemainingFinancialTotals e la quantità è popolata in RemainingToCharge .
  • Gli addebiti dell'intestazione dell'ordine applicati all'ordine vengono presi come parte del bucket InPerson=N di RemainingFinancialTotals e la quantità viene popolata nell'attributo RemainingToAuthorize . Questo importo viene addebitato anche sul metodo di pagamento selezionato in caso di ordine con solo linee di trasporto.
Ordine con linee d'ordine miste
  • In caso di linee miste, l'importo della linea Carry viene addebitato, riscosso o saldato al momento dell'acquisto per il metodo di pagamento selezionato passando l'operazione come Collect.
  • Per il resto delle linee d'ordine, ovvero ritiro e spedizione, l'importo corrispondente fornito dall'attributo RemainingFinancialTotals.RemainingToAuthroize viene utilizzato per l'autorizzazione passando l'operazione come Manage.
  • A seconda della configurazione del tipo di pagamento, questo importo può essere addebitato o utilizzato per scopi di autorizzazione. L'API capturePayment e processOrderPayments vengono richiamate per elaborare il pagamento basato sulla configurazione del tipo di pagamento.
  • Le spese, gli sconti e le tasse della linea d'ordine vengono automaticamente adeguati al subtotale della linea d'ordine. Per le linee d'ordine di ritiro e spedizione, il totale della linea è una parte del InPerson=N bucket di RemainingFinancialTotals e la quantità viene popolata nell'attributo RemainingToAuthrorize .
  • Le spese di intestazione dell'ordine applicate all'ordine fanno parte del bucket InPerson=N di RemainingFinancialTotals e la quantità viene popolata nell'attributo RemainingToAuthorize .
Annullamento dell'ordine dopo pagamento parziale
  • Dopo aver effettuato un pagamento parziale sull'ordine, il cliente può scegliere di annullare l'ordine.
  • Alla chiusura della pagina Acquisizione pagamento , viene visualizzato un messaggio. Il cliente ha la possibilità di continuare a completare il pagamento o annullare l'ordine.
  • Se l'opzione di annullamento è selezionata, l'API CommonCodeList viene utilizzata con CodeType="YCD_CANCEL_REASON" per recuperare i motivi di annullamento.
  • Dopo aver scelto un'opzione, l'API changeOrder viene utilizzata per annullare l'ordine e l'API processOrderPayments viene richiamata per elaborare i rimborsi e visualizzare il riepilogo del rimborso.
  • L'associato del negozio può consegnare il rimborso in contanti al cliente.
Completare l'acquisizione dell'ordine per un ordine abbandonato con pagamento parziale
Un ordine viene considerato come abbandonato se viene effettuato un pagamento parziale per un ordine e quindi chiuso il flusso di acquisizione dell'ordine chiudendo il browser o a causa di vari motivi, ad esempio un errore di sistema. Poiché viene effettuato un pagamento parziale, l'ordine è già confermato. Tuttavia, alcuni pagamenti sono ancora in sospeso.

In tali casi, è possibile ricercare questo ordine dal portlet Trova ordine utilizzando il numero dell'ordine o altri criteri di ricerca. In alternativa, se il cliente è identificato per l'ordine, è possibile esaminare la cronologia dell'ordine dalla pagina Profilo cliente . Facendo clic sull'ordine pertinente si apre la pagina Riepilogo ordine . Qui, viene visualizzato un banner di notifica per completare il pagamento. L'acquisizione del pagamento viene aperta ed è possibile aiutare il cliente a pagare l'importo rimanente e completare il processo di acquisizione dell'ordine.