API Symfony 4 / Reactjs / Paybox-从背面提交表单,并将其重定向发送到正面进行付款

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了API Symfony 4 / Reactjs / Paybox-从背面提交表单,并将其重定向发送到正面进行付款相关的知识,希望对你有一定的参考价值。

我正在尝试使用付款箱付款,我想在背面(Api Symfony)进行所有这些操作。支付箱文档为我们提供了一个在此处http://www1.paybox.com/espace-integrateur-documentation/la-solution-paybox-system/appel-page-paiement/

实施付款的示例

我想在reactjs中单击一个“付款”按钮,该按钮调用我的api路由(symfony),在该按钮中,我用付款箱数据呈现我的付款箱视图,我想直接提交表单以重定向到付款箱平台进行付款,但是我没有收到重定向响应,但是html内容页面。

我的Paybox控制器:

public function paybox(int $agreementId, Request $request)
    {
        $user = $this->getUser();
        $agreement = $this->agreementService->findUserAgreementByAgreementId($user->getId(), $agreementId);

        $paybox = $this->payboxService->getPayboxData($agreement);

        return $this->render('paybox/paybox.html.twig', [
           'paybox' => $paybox
        ]);
}

我的paybox.html.twig:

<html>
    <body onload="document.payboxForm.submit()">
        <form action="{{ paybox_url }}" name="payboxForm">
            <input type="hidden" name="PBX_SITE"        value="{{ paybox.pbxSite }}">
            <input type="hidden" name="PBX_RANG"        value="{{ paybox.pbxRang }}">
            <input type="hidden" name="PBX_IDENTIFIANT" value="{{ paybox.pbxIdentifiant }}">
            <input type="hidden" name="PBX_TOTAL"       value="{{ paybox.pbxTotal }}">
            <input type="hidden" name="PBX_DEVISE"      value="{{ paybox.pbxDevise }}">
            <input type="hidden" name="PBX_CMD"         value="{{ paybox.pbxCmd }}">
            <input type="hidden" name="PBX_PORTEUR"     value="{{ paybox.pbxPorteur }}">
            <input type="hidden" name="PBX_RETOUR"      value="{{ paybox.pbxRetour }}">
            <input type="hidden" name="PBX_HASH"        value="{{ paybox.pbxHash }}">
            <input type="hidden" name="PBX_TIME"        value="{{ paybox.pbxTime }}">
            <input type="hidden" name="PBX_HMAC"        value="{{ paybox.pbxHmac }}">
            <input type="hidden" name="PBX_EFFECTUE"    value="{{ paybox.pbxEffectue }}">
            <input type="hidden" name="PBX_REFUSE"      value="{{ paybox.pbxRefuse }}">
            <input type="hidden" name="PBX_ANNULE"      value="{{ paybox.pbxAnnule }}">
            <input type="submit" value="Payer">
        </form>
    </body>
</html>

单击“付款”按钮时,我想将重定向发送到我的reactjs应用程序。并将首页重定向到支付箱平台。但是所有的机制都在背面完成。

答案
$params = http_build_query($paybox->toArray()); return new RedirectResponse('https://preprod-tpeweb.paybox.com/cgi/MYchoix_pagepaiement.cgi?' . $params); //paybox test url

我的Paybox类:

public function toArray() : array { return [ 'PBX_SITE' => $this->PBX_SITE, 'PBX_RANG' => $this->PBX_RANG, 'PBX_IDENTIFIANT' => $this->PBX_IDENTIFIANT, 'PBX_TOTAL' => $this->PBX_TOTAL, 'PBX_DEVISE' => $this->PBX_DEVISE, 'PBX_CMD' => $this->PBX_CMD, 'PBX_PORTEUR' => $this->PBX_PORTEUR, 'PBX_RETOUR' => $this->PBX_RETOUR, 'PBX_HASH' => $this->PBX_HASH, 'PBX_TIME' => $this->PBX_TIME, 'PBX_HMAC' => $this->PBX_HMAC, 'PBX_EFFECTUE' => $this->PBX_EFFECTUE, 'PBX_REFUSE' => $this->PBX_REFUSE, 'PBX_ANNULE' => $this->PBX_ANNULE ]; }

以上是关于API Symfony 4 / Reactjs / Paybox-从背面提交表单,并将其重定向发送到正面进行付款的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 4 API 平台和 JWT:如何使用 Symfony 客户端项目登录 API?

Docker/Symfony/Reactjs/Keycloak:如何使用分离的 docker-compose 文件从一个容器向另一个容器发出 HTTP 请求?

Nelmio API 文档区域和带有 symfony 4 的不记名令牌

Symfony 4 JWT:访问 api 时我无法从控制器获得响应

Symfony 4 Restful API 使用 JWT 和 facebook 登录

如何使用API PLATFORM(symfony 4)添加登录到swagger UI?