2010-05-18 8 views
0

Je suis en train de mettre en œuvre un script de traitement de carte de crédit, la plupart fournis par la passerelle marchande. Le code appelle des fonctions dans une classe et renvoie une chaîne basée sur la réponse. La fin du code php J'utilise (détails retiré bien sûr) avec des informations exemple:Assistance avec le script de traitement CC

<?php 
$gw = new gwapi; 
$gw->setLogin("username", "password"); 
$gw->setBilling("John","Smith","Acme, Inc.","888","Suite 200", "Beverly Hills", 
     "CA","77777","US","555-555-5555","555-555-5556","[email protected]", 
     "www.example.com"); 
//  "CA","90210","US","[email protected]"); 
$gw->setOrder("1234","Big Order",1, 2, "PO1234","65.192.14.10"); 

$r = $gw->doSale("1.00","4111111111111111","1010"); 
print $gw->responses['responsetext']; 

?> 

où setlogin me permet de vous connecter, setbilling prend l'échantillon information des consommateurs, pour définir prend le numéro de commande et la description, dosale prend le montant facturé, le numéro de cc et la date d'expiration.

lorsque toutes les variables sont envoyés validé puis envoyés pour traitement, une chaîne est retournée dans le format suivant:

réponse = 1 & responseText = SUCCESS & Authcode = 123456 & TransactionID = 23456 & avsresponse = M = & orderid & type = vente & RESPONSE_CODE = 100

où:

  • réponse = transaction approuvée ou refusé
  • texte de réponse = réponse textuelle
  • Authcode = autorisation de transaction Code
  • TransactionID = passerelle de paiement tran id
  • avsresponse = avs code de réponse
  • orderid = ID de la commande d'origine transmis demande de transit
  • RESPONSE_CODE = cartographie numérique de réponse processeur

Je suis en train de résoudre les cas suivants:

  1. Comment puis-je prendre les données qui sont passé en arrière et l'afficher correctement sur la page - Si la transaction a échoué ou si le code AVS ne correspond pas à mon goût ou si quelque chose de est faux, une erreur est affichée à le consommateur; si la transaction traitée, ils sont à une page d'achèvement et la transaction id est envoyé en session en tant que sortie pour le consommateur
  2. Si la valeur RESPONSE_CODE correspond à une table des valeurs, certaines actions sont prises, à savoir si le code = 100, prendre à page succès, si le code = 300 impression erreur spécifique à la page originale client, etc.
+2

Je suis un peu terrifié qu'un programmeur qui ne peut pas comprendre comment analyser une chaîne gère les informations de carte de crédit. –

+0

@Matti - merci pour la confiance. Je travaille pour une organisation que j'ai aidé à obtenir la conformité PCI et a travaillé dans la gestion de projet/développement de produits pour les 3 dernières années. Nous avons laissé une partie de notre équipe de programmation partir et j'ai pris la balle pour aider à faire fonctionner un de nos sites partenaires. Peut-être qu'au lieu de m'insulter, vous pourriez fournir des conseils sur les meilleures pratiques ou toute expérience antérieure, car votre commentaire ne fait rien pour cette question – JM4

+0

Et à ce titre - l'une des questions les plus populaires sur S.O. C'est pourquoi les programmeurs «novices» ont peur de faire avancer leurs techniques et c'est à cause de réponses comme ça. Les programmeurs avancés traitent les nouveaux venus comme s'ils étaient stupides. Si ce forum était seulement pour les niveaux avancés de questions, ils auraient dû en faire un critère dès le début. – JM4

Répondre

2

Utilisez parse_str()avec l'argument de tableau (n'utilisez jamais without) pour obtenir un tableau avec des paires clé/valeur hors de la chaîne. Vous pouvez ensuite accéder facilement aux valeurs séparées et implémenter votre logique.

0

Je voudrais utiliser la fonction explode sur toute la chaîne, la séparation sur le signe & , à obtenir un premier tableau. Je puis alors itérer sur le résultat avec un autre explode, en séparant sur le signe = pour obtenir une paire clé-valeur. De là, vous pouvez travailler avec lui comme vous le feriez pour tout autre tableau.