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 Preferences
Dans 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_Capture
a 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_Capture
dans 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éfaut
Pour 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 > Orders
Sé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 11 months ago