web-dev-qa-db-fra.com

Comment créer des paramètres de page avec WorldPay?

Les docs pour WorldPay sont vraiment difficiles à comprendre pour moi après les avoir lus et relus pendant des heures }. (En fait, beaucoup de documents m'ont donné la mauvaise URL en direct et je devais regarder sur le Web et essayer quelque chose avec essai/erreur afin de trouver l'URL en direct, par exemple.)

Comment créer un retour de page avec WorldPay? Je veux dire par là, quand quelqu'un poste le paiement et paye ensuite sur le site WorldPay, WorldPay redirige automatiquement le client vers une page de mon site en cas de succès. Je veux savoir comment faire ça. Je pense que je l'ai deviné ci-dessous, mais je ne suis pas certain que cela fonctionne?

<?php ?>
<html><head><title></title></head><body>
<form action="https://secure.wp3.rbsworldpay.com/wcc/purchase" method="post">
    <input type="hidden" name="testMode" value="0">
    <input type="hidden" name="instId" value="<?= $this->INST_ID ?>">
    <input type="hidden" name="cartId" value="<?= $this->CART_ID ?>">
    <input type="hidden" name="amount" value="<?= $this->AMOUNT ?>">
    <input type="hidden" name="currency" value="<?= $this->CURRENCY_CODE ?>">
    <input type="hidden" name="desc" value="Photos">
    <input type="hidden" name="MC_success" value="<?= $this->RETURNING_PAGE_ON_MY_SITE ?>">
    <input type="submit" value="Click here for the secure payment form">
</form>
</body></html>

EDIT: le support technique WorldPay a déclaré que l'action devait désormais être " https://secure.worldpay.com/wcc/purchase } _" et que le paramètre MC_success ne fonctionnerait pas. Il m'a conseillé d'utiliser un paramètre wpdisplay dans la publication de formulaire afin que nous disions à la page de résultat de permuter l'en-tête et d'effectuer une redirection méta vers une page de notre site. J'ai demandé un exemple et il m'a répondu qu'il n'y en avait pas. Tout ce qu'il pouvait faire, c'était de m'indiquer cette documentation déroutante qui ne décrit pas vraiment cela du tout. (Je ne fais pas de reproches au responsable de l'assistance technique - il ne fait que son travail avec les faibles outils qu'il a fournis.)

21
Volomike

Après avoir passé 3-4 jours et lu toute la documentation déroutante et médiocre de Worldpay, j’ai trouvé comment revenir à une page et traiter la réponse renvoyée par Worldpay. Je voulais insérer un enregistrement dans une base de données avec les détails de la transaction. Je cherchais donc une solution. Eh bien, voici la solution qui a fonctionné pour moi:

  1. connectez-vous à Worldpay, ouvrez l’installation désirée pour la modifier
  2. Cochez la case "Réponse au paiement activée?" 
  3. Indiquez "URL de réponse au paiement" à la page qui recevra/traitera les données POST de worldpay. 
  4. Entrez la même URL dans "URL de redirection du client"
  5. Cochez la case "Bouton de redirection d'acheteur activé"
  6. Cochez "Activer la réponse de l'acheteur" 
  7. Si vous utilisez print_r ($ _ POST) (pour les utilisateurs php) sur l'URL entrée dans "URL de réponse au paiement", vous pouvez voir tous les détails renvoyés par Worldpay. 
  8. Après le traitement, vous pouvez utiliser la technique de méta-actualisation pour rediriger l'utilisateur vers une autre page ou vous pouvez imprimer le message de remerciement à l'utilisateur sur la même page.

Je sais que ce fil a 1 an ou plus, mais si quelqu'un trouve cela utile, je poste ma solution ici. 

Edit: "Guide de réponse au paiement WorldPay" documentation

Edit: Voici une capture d'écran de mes paramètres qui a fonctionné pour moi screenshot of my settings

31
www.amitpatil.me

Peut totalement supporter, c’était un peu un cauchemar à installer pour moi aussi. Je n'ai pas utilisé le paramètre MC_success auparavant, mais pour autant que je sache, vous ne pouvez pas effectuer de redirection directe. Il doit afficher une page Worldpay après le paiement, mais vous pouvez personnaliser cette page.

Une fois le paiement effectué (ou non), Worldpay affiche une page HTML à l'utilisateur. Ces pages HTML sont stockées dans votre panneau de configuration Worldpay et si vous souhaitez les personnaliser, vous devez télécharger un nouveau fichier ici. Les fichiers affichés en cas de succès et d’échec de la transaction sont respectivement resultY.html et resultC.html.

Vous devez consulter le Guide de personnalisation avancé et rechercher resultY.html en haut à droite de ce guide, cela vous donnera une aide.

Dans ces fichiers, Worldpay substitue automatiquement certaines balises telles que <wpdisplay item=cartId> et <wpdisplay item=banner default=""> aux données réelles. Je voudrais me connecter à votre panneau de contrôle Worldpay et télécharger les fichiers qu’il utilise actuellement, puis personnaliser à partir de là.

Dans une installation, je viens d'inclure une ligne dans ma page resultY.html comme suit ...

<p><a href="http://example.com/worldpay/cartid/<wpdisplay item=cartId>">Redirect back to my shop</a></p>

... qui ramènera l'utilisateur sur mon site avec son identifiant cartId dans l'URL, à partir duquel je vais extraire les détails de sa commande et lui montrer une page de réussite. Mais vous pouvez créer vos propres balises en envoyant des champs post supplémentaires dans votre exemple de formulaire ci-dessus. Les noms des variables doivent porter le préfixe MC_, mais vous pouvez ensuite les inclure dans votre fichier resultY.html. C'est à dire.

<form action="https://secure.wp3.rbsworldpay.com/wcc/purchase" method="post">
    <input type="hidden" name="testMode" value="0">
    <input type="hidden" name="instId" value="<?= $this->INST_ID ?>">
    <input type="hidden" name="cartId" value="<?= $this->CART_ID ?>">
    <input type="hidden" name="amount" value="<?= $this->AMOUNT ?>">
    <input type="hidden" name="currency" value="<?= $this->CURRENCY_CODE ?>">
    <input type="hidden" name="desc" value="Photos">

    <input type="hidden" name="MC_myText" value="This is my custom text">

    <input type="submit" value="Click here for the secure payment form">
</form>

Et dans votre fichier resultY.html, incluez simplement la balise <WPDISPLAY ITEM=MC_myText>. Vous devez être conscient du fait que tous les champs de votre formulaire sont visibles pour un utilisateur s’il affiche la source de vos pages de paiement. Il est donc mauvais de donner un MC_downloadLink valide à un téléchargement précieux.

Consultez ces pages, elles sont les plus utiles du guide de personnalisation:

J'espère que cela vous a été utile. Si vous avez des questions, ajoutez simplement un commentaire. Bonne chance!!

15
Chris

Editer resultY.html n'est pas strictement nécessaire, vous pouvez passer à l'aide de l'éditeur de page de paiement à l'aide de la fonction "Réponse au paiement".

Dans les paramètres d'installation, indiquez l'URL d'un script sur votre serveur. WorldPay POST lui donnera les paramètres suivants une fois le paiement autorisé (ou l'acheteur cliquera sur Annuler sur la page de paiement): http://www.worldpay.com/support/kb/bg/paymentresponse/pr5201.html

Si vous activez également le paramètre "Activer la réponse de l'acheteur", WorldPay téléchargera tout script HTML généré par le script et l'utilisera comme page de résultat (hébergée sur son propre serveur). (Si vous souhaitez que des images soient hébergées de manière sécurisée, elles devront être téléchargées dans l'éditeur de page de paiement.)

Cela vous permet de créer une page de résultats dynamique sans avoir besoin d'utiliser resultY.html (OSCommerce et d'autres paniers d'achat utilisent cette méthode pour personnaliser la page de résultats).

Je pense que l’utilisation d’une actualisation META sur votre page de résultats ne pose aucun problème, à condition que cela ne soit en aucun cas trompeur (vous devez indiquer au client le résultat du paiement et ne pas l’envoyer immédiatement sur votre page d’accueil, par exemple).

6
TehInvisibleHand

Je pense que worldpay a finalement autorisé Réponse de l'acheteur à rediriger vers votre site via Meta refresh.

Tout ce que vous avez à faire est de générer la réponse HTML à partir de votre rappel côté serveur.

1
Sxc

@Chris a vraiment répondu à cette question, mais voici ce que j'ai fini par faire. J'ai effectivement utilisé le paramètre MC_success, mais je l'ai défini comme suit:

<input type="hidden" name="MC_success" value="Click here to return to the merchant: <?= $this->RETURNING_PAGE_ON_MY_SITE ?>">

Ensuite, le marchand doit éditer sa page resultY.html sur WorldPay et insérer ce paramètre quelque part dans la section body de celui-ci:

<div><strong><WPDISPLAY ITEM=success></strong></div>

La page de réponse au paiement hébergée sur WorldPay, qui contient des informations relatives au paiement, affiche alors le résultat suivant:

Cliquez ici pour retourner chez le marchand: http://example.com/my-success-return-link-here

Désormais, tous les clients ne sauront pas comment faire cela. Par conséquent, dans ma passerelle de paiement que je construisais, je lui ai envoyé un email avec l’administrateur qu’une personne payée par WorldPay lui a envoyé manuellement les photos au client via l’interface d’administration de notre produit.

De plus, il faut poster cela sur l'URL d'action appropriée, que j'ai corrigée dans mon message d'origine dans la sectionEDITci-dessus.

Dernier point mais non le moindre, notez que nous ne pouvons pas effectuer de redirection automatique. En fait, WorldPay a une politique l'interdisant strictement, qui est en rouge sur cette page: 

http://www.worldpay.com/support/kb/bg/paymentresponse/pr5402.html

"Avertissement: la redirection automatique à l'aide de la fonction de réponse du client est interdite et entraînera un échec de la journalisation et une suspension éventuelle de la fonction."

0
Volomike