Configurer la Capture Différée sur SFCC
1 - Back-office
Après avoir installé la cartridge Alma, vous pouvez vous rendre dans votre back-office SFCC puis aller dans les "Custom Preferences" :
Merchant Tools > Site Preferences > Custom PreferencesDans le groupe “ALMA” vous pouvez voir le champ ALMA_Deferred_Capture_Activation que vous pouvez mettre à Yes pour activer la fonctionnalité de Capture Différée.
2 - Implémentation de la capture
À titre d’exemple, nous avons fait l’implémentation de la capture via un job qui se lance de manière manuelle.
Vous pouvez modifier cette implémentation afin que la capture se produise sur l’évènement que vous avez choisi.
Voici le code du job :
exports.execute = function () {
var orders = OrderMgr.searchOrders(
"custom.ALMA_Deferred_Capture='ToCapture' and status != {0} and status != {1}",
null,
Order.ORDER_STATUS_FAILED,
Order.ORDER_STATUS_CANCELLED
);
if (orders.count > 0) {
while (orders.hasNext()) {
var order = orders.next();
var params = { external_id: order.custom.almaPaymentId };
try {
var capture = almaPaymentHelper.capturePayment(params);
almaOrderHelper.setAlmaDeferredCapture(order, 'Captured');
Logger.info('Capture payment: order id: {0} - payment id: {1} - capture id : {2}', [order.orderNo, order.custom.almaPaymentId, capture.id]);
} catch (e) {
almaOrderHelper.setAlmaDeferredCapture(order, 'Failed');
Logger.warn('Unable to capture payment: order id: {0}, payment id: {1}', [order.orderNo, order.custom.almaPaymentId]);
}
}
}
return new Status(Status.OK);
};Les étapes importantes dans ce code sont :
- La récupération des commandes ("orders") dont l’attribut
ALMA_Deferred_Capturea pour valeurToCapture. - La méthode
almaPaymentHelper.capturePayment(). C’est cette méthode qui déclenche la capture via l’API Alma. - La méthode
almaOrderHelper.setAlmaDeferredCapture(). Cette méthode permet de changer la valeur de l’attributALMA_Deferred_Capturedans l’"order", afin de spécifier si la capture a réussi ou s’il y a eu une erreur.
Pour la réalisation de la capture via la méthode capturePayment(), il vous sera nécessaire de passer un objet en paramètre avec un seul attribut : external_id que vous pouvez retrouver dans l’objet "order", comme ceci order.custom.almaPaymentId.
3 - Fonctionnement dans le back-office
Avant d’être “capturée”, votre commande est à l’état "ToCapture".
Une fois le job de capture effectué ou toute autre tâche qui aura été configurée pour cela, deux statuts sont possibles : "Captured" et "Failed".
Si le statut est à l’état "Failed", il vous faudra vérifier pourquoi (dans vos logs par exemple, selon l’implémentation). Une fois corrigé, repassez le statut en "ToCapture" afin que la commande soit capturée à la prochaine exécution de votre job de capture.
Afin de vous assurer que vous n’avez pas de commandes à l’état de capture "Failed", vous pouvez filtrer vos commandes sur le champ “Capture Status”.
Fonctionnalité désactivée par défautPour pouvoir utiliser les paiement différés "sur événement", contactez notre support ou votre contact commercial Alma.
4 - Fonctionnement de la capture partielle
Vous avez la possibilité de ne capturer qu’une partie de la commande.
Pour cela, vous devez vous rendre dans
Merchant Tools > Ordering > OrdersSélectionnez la commande que vous souhaitez, puis, dans l’onglet Attributes, il vous faut remplir le champ Amount for partial capture avec le montant (en euros) que vous souhaitez capturer. Exemple:
Il faut bien laisser le Status en ToCapture et ne pas oublier de sauvegarder votre modification.
Une fois que le "job" de capture sera effectué, votre statut passera à PartialCaptured et le champ Amount captured prendra comme valeur le montant que vous avez saisi précédemment.
Nous ne prenons pas en charges le multi-captures.
Updated 21 days ago
