J'ai besoin d'intégrer une nouvelle passerelle de paiement de notre site web d'entreprise, qui est fondée sur le Moteur. Il y a une extension pour cette CMS
appelé Advanced Passerelles de Paiement qui permet l'intégration de nouvelles passerelles. En fait, il devient de votre nom de passerelle et génère un squelette de la structure zippée dans un fichier de sorte que vous pouvez décompresser et de télécharger à votre serveur et donc de fusionner avec le répertoire de l'application.
Je vais vous expliquer comment je mettre en œuvre ma passerelle sans Moteur, et j'espère que quelqu'un peut me dire comment je peux l'intégrer dans Sociale du Moteur.
-
J'ai d'abord se connecter à mon
PSP
service:$client = new nusoap_client('https://example.com/pgwchannel/services/pgw?wsdl');
-
Je prépare les paramètres suivants dans un tableau à envoyer à l'
bpPayRequest
:$parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'amount' => $amount, 'localDate' => $localDate, 'localTime' => $localTime, 'additionalData' => $additionalData, 'callBackUrl' => $callBackUrl, 'payerId' => $payerId); // Call the SOAP method $result = $client->call('bpPayRequest', $parameters, $namespace);
-
Si la demande de paiement est accepté, le résultat est une chaîne séparée par des virgules, avec le premier élément à 0.
Ensuite, nous pouvons envoyer le deuxième élément (id de référence) pour le paiement passerelle comme suit viaPOST
méthode:echo "<script language='javascript' type='text/javascript'>postRefId('" . $res[1] . "');</script>"; <script language="javascript" type="text/javascript"> function postRefId (refIdValue) { var form = document.createElement("form"); form.setAttribute("method", "POST"); form.setAttribute("action", "https://example.com/pgwchannel/startpay"); form.setAttribute("target", "_self"); var hiddenField = document.createElement("input"); hiddenField.setAttribute("name", "RefId"); hiddenField.setAttribute("value", refIdValue); form.appendChild(hiddenField); document.body.appendChild(form); form.submit(); document.body.removeChild(form); } </script>
La passerelle sera de retour les paramètres suivants via
POST
méthode pour le retour d'appelURL
que nous avons fournis dans la demande de paiement:RefId
(référence id de produit dans les étapes précédentes)ResCode
(Résultat de paiement: 0 dénote succès)saleOrderId
(numéro de commande, tel qu'adopté lors de la demande de paiement)SaleReferenceId
(vente code de référence est donnée par la PSP pour le marchand)-
Si
ResCode
dans l'étape précédente a été de 0, alors que nous aurions besoin de passer l'appelbpVerifyRequest
avec les paramètres suivants afin de vérifier le paiement, sinon le paiement sera annulé.$parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'saleOrderId' => $verifySaleOrderId, 'saleReferenceId' => $verifySaleReferenceId); // Call the SOAP method $result = $client->call('bpVerifyRequest', $parameters, $namespace);
Dans le cas où le résultat de l'
bpVerifyRequest
est égal à zéro, le paiement est certain, et le marchand doit fournir des biens ou des services achetés. Toutefois, il existe une méthode facultativebpSettleRequest
, qui est utilisé pour la demande de règlement. Il est appelé comme suit:
$parameters = array(
'terminalId' => $terminalId,
'userName' => $userName,
'userPassword' => $userPassword,
'orderId' => $orderId,
'saleOrderId' => $settleSaleOrderId,
'saleReferenceId' => $settleSaleReferenceId);
// Call the SOAP method
$result = $client->call('bpSettleRequest', $parameters, $namespace);
Je m'embrouille en regardant les passerelles par défaut dans les Passerelles de Paiement plugin par exemple PayPal, Stripe, 2Checkout, etc. Comment suis-je intégrer cette logique de code dans le nouvellement créé passerelle squelette? (la structure est représentée ci-dessous):
Vous pouvez consulter le code source complet ici:
default.php
callback.php