使用 PHP 通过 Mercanet 进行支付

发布于 2024-10-10 23:18:52 字数 142 浏览 3 评论 0 原文

在一家位于法国的公司的电子商务网站中,我们希望通过 Mercanet (BNP Paribas) 接受付款。我下载了 Linux 的 API,它只包含两个二进制文件(请求、响应),没有 PHP 示例。服务台也没有答复。我还下载了该网站的证书,但由于没有指导文件而卡住了。

In an e-commerce website for a company located in France we want to take payments through Mercanet (BNP Paribas). I downloaded API's for linux, it only contains two binary files (request, response) there are no PHP examples. No answer from helpdesk either. Also I downloaded the certificate for the website, but just stuck as there is no howto files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巴黎盛开的樱花 2024-10-17 23:18:52

对于那些使用 ATOS / Mercanet / Sips 支付系统的人来说,下面是他们发送给我的 PHP 文件的示例。
他们所有的帮助文档都是法语的。

请务必注意,有 32 位和 64 位版本 - 您必须使用正确的版本。我尝试了这里提到的技巧

https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http:// /www.developpez.net/forums/d599959/webmasters-developpement-web/general-conception-web/e-commerce/probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhj4iJ0kxEE9EoUbQTjq_0peu4_PSQ

FTP 技巧不起作用。

https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://www.developpez.net /probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhiEypDQCmEu5uVWD5uDpOChAAaNbQ

32位黑客不起作用

/forums/d1154720/webmasters-development-web/general-conception-web/e- commerce 给你很好的指示。翻译看起来足够好,可以理解它

https://translate.googleusercontent.com/translate_c?depth=1&hl= en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://thierry-godin.developpez.com/php/atos/&usg=ALkJrhjC12cJksMlauYxLvwnoxPV0G__9g

唯一的事情有效的是拥有正确的版本。

还要记住,如果您使用 git,推送可能会重置权限,那么每次推送时都必须 755 请求文件。

PHP 示例:

print ("<HTML><HEAD><TITLE>MERCANET - Paiement Securise sur Internet</TITLE></HEAD>");
    print ("<BODY bgcolor=#ffffff>");
    print ("<Font color=#000000>");
    print ("<center><H1>Test de l'API plug-in MERCANET</H1></center><br><br>");


    //      Affectation des paramètres obligatoires

    $parm="merchant_id=082584341411111";
    $parm="$parm merchant_country=fr";
    $parm="$parm amount=100";
    $parm="$parm currency_code=978";


    // Initialisation du chemin du fichier pathfile (à modifier)
        //   ex :
        //    -> Windows : $parm="$parm pathfile=c:/repertoire/pathfile";
        //    -> Unix    : $parm="$parm pathfile=/home/repertoire/pathfile";

    $parm="$parm pathfile=" .  XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/param/pathfile';

    //      Si aucun transaction_id n'est affecté, request en génère
    //      un automatiquement à partir de heure/minutes/secondes
    //      Référez vous au Guide du Programmeur pour
    //      les réserves émises sur cette fonctionnalité
    //
    //      $parm="$parm transaction_id=123456";



    //      Affectation dynamique des autres paramètres
    //      Les valeurs proposées ne sont que des exemples
    //      Les champs et leur utilisation sont expliqués dans le Dictionnaire des données
    //
    //      $parm="$parm normal_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
    //      $parm="$parm cancel_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
    //      $parm="$parm automatic_response_url=http://www.maboutique.fr/cgi-bin/call_autoresponse.php";
    //      $parm="$parm language=fr";
    //      $parm="$parm payment_means=CB,2,VISA,2,MASTERCARD,2";
    //      $parm="$parm header_flag=no";
    //      $parm="$parm capture_day=";
    //      $parm="$parm capture_mode=";
    //      $parm="$parm bgcolor=";
    //      $parm="$parm block_align=";
    //      $parm="$parm block_order=";
    //      $parm="$parm textcolor=";
    //      $parm="$parm receipt_complement=";
    //      $parm="$parm caddie=mon_caddie";
    //      $parm="$parm customer_id=";
    //      $parm="$parm customer_email=";
    //      $parm="$parm customer_ip_address=";
    //      $parm="$parm data=";
    //      $parm="$parm return_context=";
    //      $parm="$parm target=";
    //      $parm="$parm order_id=";


    //      Les valeurs suivantes ne sont utilisables qu'en pré-production
    //      Elles nécessitent l'installation de vos fichiers sur le serveur de paiement
    //
    //      $parm="$parm normal_return_logo=";
    //      $parm="$parm cancel_return_logo=";
    //      $parm="$parm submit_logo=";
    //      $parm="$parm logo_id=";
    //      $parm="$parm logo_id2=";
    //      $parm="$parm advert=";
    //      $parm="$parm background_id=";
    //      $parm="$parm templatefile=";


    //      insertion de la commande en base de données (optionnel)
    //      A développer en fonction de votre système d'information

    // Initialisation du chemin de l'executable request (à modifier)
    // ex :
    // -> Windows : $path_bin = "c:/repertoire/bin/request";
    // -> Unix    : $path_bin = "/home/repertoire/bin/request";
    //

    $path_bin =  XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/bin/static/request';


    //  Appel du binaire request
    // La fonction escapeshellcmd() est incompatible avec certaines options avancées
    // comme le paiement en plusieurs fois qui nécessite  des caractères spéciaux 
    // dans le paramètre data de la requête de paiement.
    // Dans ce cas particulier, il est préférable d.exécuter la fonction escapeshellcmd()
    // sur chacun des paramètres que l.on veut passer à l.exécutable sauf sur le paramètre data.
    $parm = escapeshellcmd($parm);  
    $result=exec("$path_bin $parm");

    //  sortie de la fonction : $result=!code!error!buffer!
    //      - code=0    : la fonction génère une page html contenue dans la variable buffer
    //      - code=-1   : La fonction retourne un message d'erreur dans la variable error

    //On separe les differents champs et on les met dans une variable tableau

    $tableau = explode ("!", "$result");

    //  récupération des paramètres

    $code = $tableau[1];
    $error = $tableau[2];
    $message = $tableau[3];

    //  analyse du code retour

  if (( $code == "" ) && ( $error == "" ) )
    {
    print ("<BR><CENTER>erreur appel request</CENTER><BR>");
    print ("executable request non trouve $path_bin");
    }

    //  Erreur, affiche le message d'erreur

    else if ($code != 0){
        print ("<center><b><h2>Erreur appel API de paiement.</h2></center></b>");
        print ("<br><br><br>");
        print (" message erreur : $error <br>");
    }

    //  OK, affiche le formulaire HTML
    else {
        print ("<br><br>");

        # OK, affichage du mode DEBUG si activé
        print (" $error <br>");

        print ("  $message <br>");
    }

print ("</BODY></HTML>");

TO anybody out there pulling their hair out with the ATOS / Mercanet / Sips payment system, below is an example of the PHP file they sent me.
All their help docs is in french.

It is important to note that there are 32 and 64 bit versions - you have to use correct one. I tried the tricks mentioned here

https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://www.developpez.net/forums/d599959/webmasters-developpement-web/general-conception-web/e-commerce/probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhj4iJ0kxEE9EoUbQTjq_0peu4_PSQ

FTP trick did not work.

https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://www.developpez.net/forums/d1154720/webmasters-developpement-web/general-conception-web/e-commerce/probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhiEypDQCmEu5uVWD5uDpOChAAaNbQ

32bit hack did not work

this give you pretty good instructions. translations looks good enough to make sense of it

https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://thierry-godin.developpez.com/php/atos/&usg=ALkJrhjC12cJksMlauYxLvwnoxPV0G__9g

the only thing that worked was having the correct version.

also remember if you using git, a push may reset permissions, then you have to 755 the request file everytime you push.

PHP example:

print ("<HTML><HEAD><TITLE>MERCANET - Paiement Securise sur Internet</TITLE></HEAD>");
    print ("<BODY bgcolor=#ffffff>");
    print ("<Font color=#000000>");
    print ("<center><H1>Test de l'API plug-in MERCANET</H1></center><br><br>");


    //      Affectation des paramètres obligatoires

    $parm="merchant_id=082584341411111";
    $parm="$parm merchant_country=fr";
    $parm="$parm amount=100";
    $parm="$parm currency_code=978";


    // Initialisation du chemin du fichier pathfile (à modifier)
        //   ex :
        //    -> Windows : $parm="$parm pathfile=c:/repertoire/pathfile";
        //    -> Unix    : $parm="$parm pathfile=/home/repertoire/pathfile";

    $parm="$parm pathfile=" .  XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/param/pathfile';

    //      Si aucun transaction_id n'est affecté, request en génère
    //      un automatiquement à partir de heure/minutes/secondes
    //      Référez vous au Guide du Programmeur pour
    //      les réserves émises sur cette fonctionnalité
    //
    //      $parm="$parm transaction_id=123456";



    //      Affectation dynamique des autres paramètres
    //      Les valeurs proposées ne sont que des exemples
    //      Les champs et leur utilisation sont expliqués dans le Dictionnaire des données
    //
    //      $parm="$parm normal_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
    //      $parm="$parm cancel_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
    //      $parm="$parm automatic_response_url=http://www.maboutique.fr/cgi-bin/call_autoresponse.php";
    //      $parm="$parm language=fr";
    //      $parm="$parm payment_means=CB,2,VISA,2,MASTERCARD,2";
    //      $parm="$parm header_flag=no";
    //      $parm="$parm capture_day=";
    //      $parm="$parm capture_mode=";
    //      $parm="$parm bgcolor=";
    //      $parm="$parm block_align=";
    //      $parm="$parm block_order=";
    //      $parm="$parm textcolor=";
    //      $parm="$parm receipt_complement=";
    //      $parm="$parm caddie=mon_caddie";
    //      $parm="$parm customer_id=";
    //      $parm="$parm customer_email=";
    //      $parm="$parm customer_ip_address=";
    //      $parm="$parm data=";
    //      $parm="$parm return_context=";
    //      $parm="$parm target=";
    //      $parm="$parm order_id=";


    //      Les valeurs suivantes ne sont utilisables qu'en pré-production
    //      Elles nécessitent l'installation de vos fichiers sur le serveur de paiement
    //
    //      $parm="$parm normal_return_logo=";
    //      $parm="$parm cancel_return_logo=";
    //      $parm="$parm submit_logo=";
    //      $parm="$parm logo_id=";
    //      $parm="$parm logo_id2=";
    //      $parm="$parm advert=";
    //      $parm="$parm background_id=";
    //      $parm="$parm templatefile=";


    //      insertion de la commande en base de données (optionnel)
    //      A développer en fonction de votre système d'information

    // Initialisation du chemin de l'executable request (à modifier)
    // ex :
    // -> Windows : $path_bin = "c:/repertoire/bin/request";
    // -> Unix    : $path_bin = "/home/repertoire/bin/request";
    //

    $path_bin =  XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/bin/static/request';


    //  Appel du binaire request
    // La fonction escapeshellcmd() est incompatible avec certaines options avancées
    // comme le paiement en plusieurs fois qui nécessite  des caractères spéciaux 
    // dans le paramètre data de la requête de paiement.
    // Dans ce cas particulier, il est préférable d.exécuter la fonction escapeshellcmd()
    // sur chacun des paramètres que l.on veut passer à l.exécutable sauf sur le paramètre data.
    $parm = escapeshellcmd($parm);  
    $result=exec("$path_bin $parm");

    //  sortie de la fonction : $result=!code!error!buffer!
    //      - code=0    : la fonction génère une page html contenue dans la variable buffer
    //      - code=-1   : La fonction retourne un message d'erreur dans la variable error

    //On separe les differents champs et on les met dans une variable tableau

    $tableau = explode ("!", "$result");

    //  récupération des paramètres

    $code = $tableau[1];
    $error = $tableau[2];
    $message = $tableau[3];

    //  analyse du code retour

  if (( $code == "" ) && ( $error == "" ) )
    {
    print ("<BR><CENTER>erreur appel request</CENTER><BR>");
    print ("executable request non trouve $path_bin");
    }

    //  Erreur, affiche le message d'erreur

    else if ($code != 0){
        print ("<center><b><h2>Erreur appel API de paiement.</h2></center></b>");
        print ("<br><br><br>");
        print (" message erreur : $error <br>");
    }

    //  OK, affiche le formulaire HTML
    else {
        print ("<br><br>");

        # OK, affichage du mode DEBUG si activé
        print (" $error <br>");

        print ("  $message <br>");
    }

print ("</BODY></HTML>");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文