70 votes

Magento flux de Paiement

Je suis en train de travailler sur la mise en œuvre de nouveaux systèmes de paiement module pour Magento et que vous voulez comprendre le concept de base derrière cette logique. Je sais que j'ai d'étendre à partir de Mage_Payment_Model_Method_Abstract ou l'une de ses classes d'enfants, mais mon problème est de savoir quand les utiliser et comment les utiliser de capture et d'autoriser les méthodes de mon modèle. Par exemple si je divise l'ensemble du processus en étapes comme ceci:

1. Utilisateur vient sur le panier d'achat et les choses disons que certains de la méthode de paiement qui est de la passerelle.
2. Le système intercepte la demande, recueille toutes les données et les envoie à l'utilisateur pour la passerelle de l'url. 3. L'utilisateur passe sa commande (ou annule) au niveau de la passerelle du site qui envoie des informations à ce sujet dans mon magasin.
4. Mon magasin fait un peu plus de modifications de la commande avec les données reçues et enregistre la commande avec le statut terminé ou annulé.

Là où, dans ces étapes, je vais avoir à utiliser d'autoriser et de méthodes de capture et grandement apprécié sera si quelqu'un pouvait m'expliquer ce qu'il autorise et ce qui ne capture signifie?

150voto

Alan Storm Points 82442

Voici la façon dont je l'ai toujours compris les concepts, et ce que vous aurez besoin pour mettre en place un module de paiement en Magento. Des réponses à vos "où cela se passe" sont en caractères gras ci-dessous, bien que ce n'est pas tout à fait aussi simple que vous espérez pour.

Pré-internet, de la brique et de mortier de transactions de carte de crédit ont été un processus en deux étapes.

Au moment de la vente, lorsque le marchand a pris une carte de crédit du consommateur lors d'un achat qu'ils avaient faites-le glisser à travers un point de vente de l'appareil qui ferait la carte de crédit du bureau central et de demander "est-ce la carte autorisé pour ce type de réseau, et est-ce particulier à la consommation de la ligne de crédit disponible est assez importante pour permettre cet achat".

Si l'achat a été acceptée (par opposition à diminué, la charge a été dit d'être autorisé. Le consommateur serait prendre leur produit, et le système de point de vente/caisse à noter que la transaction a été autorisée. Puis, à la fin de la journée, ou à la fin de la semaine, à certains autres prédéterminé horaires réguliers, ou lorsque le propriétaire a décidé d'arrêter de boire, le marchand doit aller même si tous leurs autorisées les recettes et envoyer une autre demande à l'office central pour la capture des fonds de l' autorisé la transaction. Capture le fonds est ce qui met de l'argent dans le compte du marchand.

C'est encore le modèle utilisé par la plupart des passerelles, et est le modèle de domaine que Magento Inc. choisi de mettre en œuvre pour leurs modules de paiement.

La façon dont les choses sont censées exécuter est, lorsqu'un consommateur a atteint la finale de la caisse des mesures dans un système comme Magento, Magento émet une demande d'autorisation de la passerelle API. Si la transaction est réussie, la commande est acceptée dans le système, et un ID unique à partir de la demande d'autorisation est stocké. Ensuite, lorsque la consommation des marchandises du navire, un propriétaire de magasin utilise l'administration Magento pour créer une facture. La création de cette facture questions une capture de la demande (à l'aide d'un id de magasin retourné à partir de la demande d'autorisation). C'est là que ces appels de méthode sont émis dans Magento.

Cependant, les choses se sont compliqué parce que chaque passerelle de paiement interprète ces concepts un peu différemment, et tous les marchands interprétation de leurs "ne pas capturer jusqu'à ce que nous avons livré" responsabilités différemment. En plus le scénario décrit ci-dessus, les modules de paiement ont un système de configuration de la valeur connue comme un Paiement d'Action. Ceci peut être fixé à n'Autoriser qu'à mettre en œuvre les flux décrits ci-dessus. Il peut également être configuré pour Autoriser et de Capture, qui sera à la fois autoriser et de capturer un paiement au moment de la commande. Il devient encore plus confus parce que même si la méthode est appelée à Autoriser et de Capturer, les versions actuelles de Magento sera uniquement question de la capture de la demande lorsqu'elle est définie dans ce mode (au moins pour Authorize.net), et Authorize.net la volonté, en interne, laisser capturer les demandes dans un autorisées mais non capturés pour la plupart de la journée. Comment Magento gère des commandes et des paiements et des factures est une zone de la base de code qui change beaucoup d'une version à l'autre.

Ainsi, l'idée derrière le Magento module de paiement système est de vous protéger du groupe F--- ce qui est de la programmation de la Passerelle de paiement de la logique. Dans votre authorize méthode à mettre en œuvre un appel à votre passerelle de paiement de l'autoriser l'API (ou effectuer que les contrôles et la logique que vous voulez arriver à ce point). Cette méthode est passé d'un objet du paiement et le montant. Si vous faites vous demande/effectuer votre logique et de déterminer qu'il est invalide pour quelque raison que ce soit, vous jetez une Exception avec

Mage::throwException('...');

Cela dit Magento l'échec de l'autorisation, et il agira en conséquence (afficher un message d'erreur, etc.). Sinon, vous définissez les données membres de l'objet du Paiement et d'émettre un

return $this;

Les données membres sont des choses que vous aurez besoin plus tard, lors de la capture de paiement. Ce qui nous amène à l' capture méthode de votre module de Paiement. Cette méthode est également envoyé un paiement de l'objet et un montant. Dans cette méthode, vous émettez votre demande. L'objet du paiement devront cc_trans_id membre de données

$payment->getCcTransId()

ce qui vous permettra d'émettre une capture à l'encontre de votre passerelle. C'est l'un des membres de données, vous êtes responsable de l'enregistrement dans authorize. Encore une fois, si votre code détermine la capture a échoué, vous lancer une exception. Sinon, vous return $this.

L'authorize.net module de paiement présente de bons exemples de la façon dont cela est fait.

app/code/core/Mage/Paygate/Model/Authorizenet.php

Par exemple, considérons que cela fait partie de l' capture méthode

public function capture(Varien_Object $payment, $amount)
{
    if ($payment->getCcTransId()) {
        $payment->setAnetTransType(self::REQUEST_TYPE_PRIOR_AUTH_CAPTURE);
    } else {
        $payment->setAnetTransType(self::REQUEST_TYPE_AUTH_CAPTURE);
    }   

    $payment->setAmount($amount);
    $request= $this->_buildRequest($payment);
    $result = $this->_postRequest($request);
    //...

Ici, la méthode de capture est de vérifier si le paiement a cc_trans_id. Selon le résultat, il définit anet_trans_type soit:

self::REQUEST_TYPE_PRIOR_AUTH_CAPTURE
self::REQUEST_TYPE_AUTH_CAPTURE

Cette valeur est ensuite utilisée par l'API objet de demande d'envoyer un appel d'API, soit

  1. La capture d'un pré-opération de paiement autorisée
  2. Saisie immédiate

Espère que ça aide, et bonne chance!

7voto

Oğuz Çelikdemir Points 3505

Je peux proposer un lien pour voir ce que vous pouvez faire.

La Création De Votre Propre Passerelle De Paiement Pour Magento

4voto

kristianva Points 11

Ce tutoriel peut vous aider après la création personnalisée de module de paiement. Ici vous pouvez voir autoriser, de capture et de méthodes de remboursement. magento-créer-custom-mode de paiement-api à base de

-1voto

lrkwz Points 1536

Je vous suggère de vérifier Magento découvrez panier de flux de

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X