2011-07-25 6 views
0

Je suis en train de traiter les paiements récurrents par Authorize.Net avec les exigences suivantes:Comment traiter les transactions récurrentes avec Authorize.Net

  • Le traitement des paiements serait initié par nous

  • client serait entrer les données de la carte sur la première transaction seulement. Nous facturions la carte tous les mois, avec des montants potentiellement différents, mais les données de la carte ne seraient pas présentes.

  • Vous voulez demander le CVV lors de la première transaction. S'il réussit, lorsque nous facturerons la carte mensuellement, le CVV ne sera plus requis pour les transactions plus tard.

  • Nous ne voulons pas stocker d'informations sensibles comme les données de carte de crédit. utilisateur aurait l'option plus tard pour indiquer une autre carte ou mettre à jour leur profil (ce qui peut être fait par SOAP, XML ou tout couramment méthode disponible)

  • Cela inclut les transactions eCheck

efficacement , nous essayons de créer une expérience similaire à Amazon, où vous entrez les données de la carte une fois. Lorsque vous achetez dans le futur, vous sélectionnez uniquement votre profil/(carte et adresse de livraison) que vous souhaitez utiliser et le paiement est effectué, sans entrer de nouveau dans la carte ou CVV. La seule différence est que nous commençons les paiements dans le futur car nos services sont basés sur l'abonnement.

Ma pensée initiale utilisait CIM. Cependant, en raison de la troisième exigence, CIM peut ne pas fonctionner pour cela car il ne stocke pas le CVV. Quelle est la meilleure voie pour atteindre le résultat que nous recherchons?

Répondre

1

Vous n'avez pas besoin d'utiliser AIM pour le premier paiement. Utilisez simplement CIM et envoyez le code CVV avec le profil de paiement. Authorize.NET ne stockera pas le code CVV, mais il le vérifiera une fois et se souviendra que la carte est vérifiée pour les frais imputés au profil de paiement. Nous utilisons cette méthode depuis plus d'un an et n'avons eu aucun problème.

+0

Que faire si mon profil de compte nécessite CVV et moi envoyons un PaymentRequest à un profil existant sans cela? Sera-t-il rejeté? –

+1

Selon leur documentation, il ne devrait pas être rejeté. Ils indiquent que vous l'envoyez lors de la création/mise à jour du profil de paiement et qu'il est utilisé pour valider le profil. Une fois le profil validé, il n'est plus utilisé et ne devrait plus affecter les transactions suivantes. – Josh

+1

C'est plus compliqué que ça: le CVV n'est validé que lorsque validationMode est défini sur liveMode. Mais sachez que cela crée une transaction de test qui est immédiatement annulée mais vous devez quand même payer les frais de transaction (actuellement 0,10 $)! – alienhard

0

Vous devez utiliser une combinaison de l'API AIM (Advanced Integration Method) et de l'API CIM (Customer Information Manager) pour cela. Vous utiliseriez AIM pour traiter le premier paiement qui vous permettrait de vérifier que le numéro CVV fourni est valide. Si c'est le cas, vous pouvez configurer un profil de paiement sur CIM pour eux.

+0

Selon ce post, CIM ne stocke pas CVV et il l'exigera si un paiement est traité SI votre compte est configuré pour nécessiter CVV. Est-ce que c'est pas correct? (http://community.developer.authorize.net/t5/Integration-and-Testing/CIM-CCV-Code-Required-at-time-of-transaction/td-p/4511) –

0

Authorize.net vous permet de configurer le code de carte Paramètres de validation via l'interface Web comme suit:

Select the conditions for which the Payment Gateway should reject a transaction when 
the Card Code submitted does not match the value on file with the customer's credit 
card company. 

Reject Transaction If Card Code value... 
    _ Does NOT Match (N) 
    _ Is NOT Processed (P) 
    _ Should be on card, but is not indicated (S) 
    _ Issuer is not certified or has not provided encryption key (U) 

Code de vérification de la carte (comme la vérification d'adresse) ne se produit que fait si un code de carte est soumise. L'activation des filtres de vérification de code de carte n'affectera pas les transactions soumises sans code de carte.

Il existe également une page distincte intitulée «Formulaire de paiement - Champs» dans laquelle vous pouvez spécifier quels champs peuvent être affichés, modifiés et requis sur le formulaire de paiement. Si vous cochez que CVV2 est requis sur ce formulaire, il faudra également spécifier CVV2 chaque fois que vous utilisez AIM/CIM. Remarquez, il semble plus raisonnable de simplement implémenter cette exigence dans votre code, si vous le voulez, plutôt que de cocher la case sur Authorize.net et d'essayer ensuite de déboguer les erreurs.

Si vous gardez le CVV2 sur le « Formulaire de paiement - Champs » comme pas nécessaire, si vous avez un profil de paiement enregistré, vous pouvez soumettre une nouvelle demande d'opération sur le PaymentID sauvé sans CVV2 et il ne être rejeté. Maintenant, certains sites que je suis sûr que vous avez vu vont montrer la carte enregistrée à l'utilisateur (masqué bien sûr), et leur demander de taper à nouveau le CVV2 - juste le CVV2, sans entrer de nouveau dans une carte nombre.

Si vous souhaitez effectuer une nouvelle validation du CVV2 sur un profil de paiement existant dans Authorize.NET CIM, vous ne pouvez pas utiliser updateCustomerPaymentProfileRequest car il a besoin du numéro de carte.

Ce que vous faites est dans le TransactionRequest il y a un objet profileTransAuthCaptureType, qui prend le ProfileID et PaymentID. Il a aussi un champ pour cardCode où vous pouvez mettre le CVV2! Cela vous permet de revalider le CVV2 sans demander à nouveau le numéro de carte entier/la date d'expiration. Dans ce cas, même si 'N'est pas traité' est coché et que CVV2 est marqué comme requis sur votre 'Formulaire de paiement - Champs', vous n'obtiendrez pas de rejet.

Il existe une méthode à la folie, mais c'est certainement compliqué puisque vous contrôlez tous les paramètres, et ils doivent être synchronisés à plusieurs endroits pour que cela fonctionne comme vous le voulez.

Questions connexes