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.
- L'API
getCompleteOrderDetailsviene 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
getPaymentTypeListviene 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
getRuleDetailsviene richiamata conRuleSetFieldName="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
capturePaymentviene richiamata per aggiungere i metodi di pagamento all'ordine, a seconda del tipo di informazioni sul metodo di pagamento inoltrato. - L'API
processOrderPaymentsviene richiamata per richiamare le APIrequestCollection()eexecuteCollection()all'interno di una singola API. Viene richiamato dopo ogni chiamata APIcapturePaymentriuscita. - L'API
confirmDraftOrderconferma il completamento di un ordine provvisorio e lo sposta nello stato Creato. Viene richiamato solo dopo la prima chiamata APIprocessOrderPaymentseseguita correttamente. - L'API
changeOrderStatusviene 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
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
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
{
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 amounteSecondaryAmount = (RequestedAmount - RemainingToCharge). - Il servizio
credit-card-data.service.tsviene 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'oggettoPaymentMethod.
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 contienePersonInfoBillTo, vengono utilizzate queste informazioni. - Se un indirizzo di spedizione (
PersonInfoShipTo) è disponibile per l'ordine, questo indirizzo viene utilizzato come indirizzo di fatturazione se è selezionatobillToSameAsShipTo.Se
billToSameAsShipTonon è 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.
executeCollection richiama una
delle seguenti uscite utente per ogni metodo di pagamento sull'ordine
basato sull'attributo PaymentTypeGroup
del metodo.YFSCollectionCreditCardUEYFSCollectionCustomerAccountUEYFSCollectionOthersUEYFSCollectionStoredValueCardUE
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.RemainingToChargeviene utilizzato per l'importo da addebitare. Operation=Collectviene 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'attributo
- 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=Ybucket ofRemainingFinancialTotalse la quantità è popolata inRemainingToCharge. - Gli addebiti dell'intestazione dell'ordine applicati all'ordine vengono presi come parte del bucket
InPerson=NdiRemainingFinancialTotalse la quantità viene popolata nell'attributoRemainingToAuthorize. Questo importo viene addebitato anche sul metodo di pagamento selezionato in caso di ordine con solo linee di trasporto.
- Il totale dell'ordine deve essere saldato, ritirato o addebitato per confermare l'ordine.
- 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.RemainingToAuthroizeviene utilizzato per l'autorizzazione passando l'operazione comeManage. - A seconda della configurazione del tipo di pagamento, questo importo può essere addebitato o utilizzato per scopi di autorizzazione. L'API
capturePaymenteprocessOrderPaymentsvengono 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=Nbucket diRemainingFinancialTotalse la quantità viene popolata nell'attributoRemainingToAuthrorize. - Le spese di intestazione dell'ordine applicate all'ordine fanno parte del bucket
InPerson=NdiRemainingFinancialTotalse la quantità viene popolata nell'attributoRemainingToAuthorize.
- 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
- 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
CommonCodeListviene utilizzata conCodeType="YCD_CANCEL_REASON"per recuperare i motivi di annullamento. - Dopo aver scelto un'opzione, l'API
changeOrderviene utilizzata per annullare l'ordine e l'APIprocessOrderPaymentsviene 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.