在Symfony4上实现PayBox

时间:2019-07-17 09:32:30

标签: symfony4

我想以一种干净的方式对薪金箱实施symfony4,但是我不确定它最适合什么。目前,我实现了一项服务, 这是服务:

    public static function paymentPaybox($parameters)
    {
        $secretKeyTest = getenv('PBX_hmac');
        $PAYBOX_DOMAIN_SERVER = "preprod-tpeweb.paybox.com";
        $dateTime = date("c");

        $PBX_SITE = getenv('PBX_site');
        $PBX_RANG = getenv('PBX_rang');;
        $PBX_IDENTIFIANT = getenv('PBX_identifiant');
        $PBX_TOTAL = $parameters->getPriceTaxIncl() * 100;
        $PBX_DEVISE = 978;
        $PBX_CMD = "Réservation N° " . $parameters->getId();
        $PBX_PORTEUR = $parameters->getUser()->getEmail();
        $PBX_RETOUR = "Mt:M;Ref:R;Auto:A;Erreur:E";
        $PBX_HASH = "SHA512";
        $PBX_TIME = $dateTime;

        $msg =
            "PBX_SITE=$PBX_SITE" .
            "&PBX_RANG=$PBX_RANG" .
            "&PBX_IDENTIFIANT=$PBX_IDENTIFIANT" .
            "&PBX_TOTAL=$PBX_TOTAL" .
            "&PBX_DEVISE=$PBX_DEVISE" .
            "&PBX_CMD=$PBX_CMD" .
            "&PBX_PORTEUR=$PBX_PORTEUR" .
            "&PBX_RETOUR=$PBX_RETOUR" .
            "&PBX_HASH=$PBX_HASH" .
            "&PBX_TIME=$PBX_TIME";

        $binKey = pack("H*", $secretKeyTest);
        $hmac = strtoupper(hash_hmac('sha512', $msg, $binKey));

        $serveurs = array(
            'tpeweb.paybox.com',
            'tpeweb1.paybox.com'
        );

        $serveurOK = "";
        foreach ($serveurs as $serveur) {
            $doc = new \DOMDocument();
            $doc->loadHTMLFile('https://' . $serveur . '/load.html');
            $server_status = "";
            $element = $doc->getElementById('server_status');
            if ($element) {
                $server_status = $element->textContent;
            }
            if ($server_status == "OK") {
                $serveurOK = $serveur;
                break;
            }
        }
        if (!$serveurOK) {
            die("Erreur : Aucun serveur n'a été trouvé");
        }
        ?>

        <form method="POST" action="https://<?php echo $PAYBOX_DOMAIN_SERVER; ?>/cgi/MYchoix_pagepaiement.cgi">
            <input type="hidden" name="PBX_SITE" value="<?php echo $PBX_SITE; ?>">
            <input type="hidden" name="PBX_RANG" value="<?php echo $PBX_RANG; ?>">
            <input type="hidden" name="PBX_IDENTIFIANT" value="<?php echo $PBX_IDENTIFIANT; ?>">
            <input type="hidden" name="PBX_TOTAL" value="<?php echo $PBX_TOTAL; ?>">
            <input type="hidden" name="PBX_DEVISE" value="<?php echo $PBX_DEVISE; ?>">
            <input type="hidden" name="PBX_CMD" value="<?php echo $PBX_CMD; ?>">
            <input type="hidden" name="PBX_PORTEUR" value="<?php echo $PBX_PORTEUR; ?>">
            <input type="hidden" name="PBX_RETOUR" value="<?php echo $PBX_RETOUR; ?>">
            <input type="hidden" name="PBX_HASH" value="<?php echo $PBX_HASH; ?>">
            <input type="hidden" name="PBX_TIME" value="<?php echo $PBX_TIME; ?>">
            <input type="hidden" name="PBX_HMAC" value="<?php echo $hmac; ?>">
            <input type="submit" value="Payer">
        </form>

<?php
        return true;
    }

,但服务中带有付款箱形式。但是,我觉得它不干净。一个人是否在symfony4上有自己的代码示例,其中有关于该主题的建议?

谢谢您的答复。

0 个答案:

没有答案