首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过postProcess将POST数据从hookPaymentReturn填充到智能tpl

如何通过postProcess将POST数据从hookPaymentReturn填充到智能tpl
EN

Stack Overflow用户
提问于 2019-01-24 18:09:19
回答 1查看 502关注 0票数 1

我试图在Prestashop 1.6.x中更改支付模块的行为,以便从批准源创建客户收据订单确认页面

我想提出一个关于最佳方法的建议和一些指导,以达到一个正确的方法。

更具体地说,当用户使用特定的支付模块完成事务时,我需要使用来自外部银行源的POST数据填充订单确认页面,该数据在postProcess()函数中是可用的,以便将其用作一种收据。

据我所知,付款后:

  1. 该模块验证订单,并通过PostProcess()函数(扩展的ModuleFrontController类的一部分)详细阐述外部源的POST数据,并在控制器/前台/validation.php文件中找到。
  2. PostProcess()中,如果外部数据正常(即事务已批准),它将重定向到订单确认控制器,如下所示:
代码语言:javascript
复制
public function postProcess() {

(...)

$somePostData = '';

//this is the variable that is populated from POST data and i need to show in the confirmation.tpl
$somePostData = Tools::getValue('postdata'); 

Tools::redirect('index.php?controller=order-confirmation&id_cart=' .
                    $this->context->cart->id . '&id_module=' .
                    $this->module->id . '&id_order=' .
                    $this->module->currentOrder . '&key=' .
                    $customer->secure_key
                );

(...)

}
  1. 在某个时候,hookPaymentReturn()正在被调用(驻留在主模块php文件中),它加载一个与订单确认页面相关的特定模块模板文件。
  2. 为了通过tpl文件显示一些变量,我找到的唯一解决方案是在返回填充的tpl之前使用智能变量,如下所示:
代码语言:javascript
复制
public function hookPaymentReturn()
    {
        if (!$this->active) {
            return;
        }

        //this is the variable that I want to populate from the above-mentioned $somePostData found in postProcess()
        $receipt_display = 'some data';

        $this->context->smarty->assign('receipt_display', $receipt_display);

        return $this->display(__FILE__, 'views/templates/hook/confirmation.tpl');
    }

因此,我的问题是如何使用来自$receipt_display的数据填充$somePostData,如上述两个代码部分所示。

如果上面提到的是错误的,你是否可以提出不同的方法?

谢谢你,小姐

EN

Stack Overflow用户

回答已采纳

发布于 2019-01-24 19:21:19

这取决于$_POST‘’somePostData‘是否只是一个简单的字符串,如果是的话,将其添加到Tools::redirect作为URL中的下一个参数,如果这是最复杂的数据,您有两个选项,我看到:

  1. 创建一些具有简单映射的表: ps_yourpaymentmethod_data: id_order、财政数据并在hookPaymentReturn中按id获取数据
  2. 在cookie中设置值:

$this->context->cookie->someVar = Tools::getValue('postData');$this->context->cookie->write();

hookPaymentReturn中阅读它

代码语言:javascript
复制
if ($this->context->cookie->someVar) {
    $someVar = $this->context->cookie->someVar;
    $this->context->cookie->someVar = null;
    $this->context->cookie->write();
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54352942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档