- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 prestashop 1.7 中遇到问题,当我在我的模块中加载 form.tpl 时,我无法执行 setAction
。我需要的是,当我继续付款时,我会使用支付平台进行新的销售,并在平台的 prestashop 中进行验证,我会留下代码。请帮忙
prestashop模块的主文件
public function hookPaymentOptions($params) {
if (!$this->active) {
return;
}
$this->smarty->assign(
$this->getPaymentApiVars()
);
$apiPayement = new PaymentOption();
$apiPayement->setModuleName($this->name)
->setLogo($this->context->link->getBaseLink().'/modules/hhpayment/views/img/pago.jpg')
// ->setCallToActionText($this->l(''))
//Définition d'un formulaire personnalisé
->setForm($this->fetch('module:hhpayment/views/templates/hook/payment_api_form.tpl'))
->setAdditionalInformation($this->fetch('module:hhpayment/views/templates/hook/displayPaymentApi.tpl'))
->setAction($this->context->link->getModuleLink($this->name, 'validation', array(), true));
return [$apiPayement];
}
这是我在没有方法的情况下收取这个的form.tpl,但它是通过测试
<form action="{$payment_url}" target="_blank" >
<div class="form-group">
{* choix du mode de carte *}
{l s='please choose your card type' mod='hhpayment'}
<div class="radio">
<label>
<input type="radio" name="cb_type" value="mastercard" id="cb_type1" checked="checked" /> Pago internacional
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="cb_type" id="cb_type2" value="visa"/> Pago Nacional
</label>
</div>
</div>
{* Informations pour l'api *}
<input type="hidden" name="success_url" value="{$success_url}" />
<input type="hidden" name="error_url" value="{$error_url}" />
<input type="hidden" name="id_cart" value="{$id_cart}" />
<input type="hidden" name="cart_total" value="{$cart_total}" />
<input type="hidden" name="id_customer" value="{$id_customer}" />
</form>
这是验证文件
class hhpaymentvalidationModuleFrontController extends ModuleFrontController
{
/**
* Validation du paiement standard
* Puis redirection vers la page de succès de commande
*/
public function postProcess()
{
$cart = $this->context->cart;
$this->abrir("http://davivienda.com");
if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->module->active) {
Tools::redirect('index.php?controller=order&step=1');
}
$customer = new Customer($cart->id_customer);
if (!Validate::isLoadedObject($customer)) {
Tools::redirect('index.php?controller=order&step=1');
}
$currency = $this->context->currency;
$total = (float)$cart->getOrderTotal(true, Cart::BOTH);
//La command passe directement en statut payé
$this->module->validateOrder((int)$cart->id, Configuration::get('PS_OS_PAYMENT'), $total, $this->module->displayName, null, array(), (int)$currency->id, false, $customer->secure_key);
Tools::redirect('index.php?controller=order-confirmation&id_cart='.(int)$cart->id.'&id_module='.(int)$this->module->id.'&id_order='.$this->module->currentOrder.'&key='.$customer->secure_key);
}
public function abrir($param)
{
echo" <script> window.open(URL,'ventana1,'width=300,height=300,scrollbars=NO')</script> ";
}
}
最佳答案
我找到了解决这个问题的方法,我不知道它是否正确,但它已经对我有用了:
postProcess 方法将其传递给主文件,validation.php 文件将其传递给主文件所在的同一文件夹。
然后是时候修改validation.php文件了,改到和main同级目录下,这个文件应该是这样的。
应该是导入
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/main.php';
然后为了避免内核错误,必须实现以下代码片段
global $kernel;
if(!$kernel){
require_once _PS_ROOT_DIR_.'/app/AppKernel.php';
$kernel = new \AppKernel('prod', false);
$kernel->boot();
}
在此之后,需要执行逻辑并通过get接收参数,支付完成后支付屏幕将返回给我们,一旦收到此数据,必须恢复购物车并将数据发送到迁移到主文件的函数
ob_start();
$context = Context::getContext();
if (is_null($context->cart)) {
$context->cart = new Cart($context->cookie->id_cart);
}
if (is_null($context->cart->id_currency)) {
$context->cart->id_currency = $context->cookie->id_currency;
}
$cart = $context->cart;
$customer = new Customer($cart->id_customer);
$currency = $cart->id_currency;
$total = (float)$cart->getOrderTotal(true, Cart::BOTH);
$object = new filemain();
$order = $object->methodCreateInMain($cart->id, Configuration::get('PS_OS_PAYMENT'), $total, $currency, $customer->secure_key);
基本上,validation.php 中的先前代码会检索购物车数据并将其通过参数发送到传递给 main 的函数,在该函数中将验证和创建订单。
需要注意的是支付后的返回url必须是ulrCommerce/module/validation.php
上面的方法对我来说非常有效,是基于查看的各种博客和论坛的解决方案
关于prestashop 1.7 新模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47589441/
我想使用位于 prestashop 文件夹外但仍在同一服务器上的 php 脚本 (external_script.php) 中的 prestashop 应用程序。 我可以使用 Magento 做到这一
我是 PrestaShop 的新手。我遇到了一个问题,无法在 PrestaShop 从库存中减去商品的代码中找到。 当客户创建订单并选择付款时,商品将从库存中减去,但如果客户不付款并返回,则商品不会退
我正在开发一个必须列出现有产品列表的 prestashop 模块。 对于模块的配置面板,使用 renderForm() 和 getContent(),我试图复制“附件”功能,从这里开始编写输入产品的一
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题
没有模块安装线路UPS,但仍然出现错误。 错误: **发现错误:CData 部分未完成 UPS 模块可以通过 must_have_module_list.xml 文件中的 UPS Ge 处理运输。 发
我创建了一个名为“blockallproducts”的模块,它也在主页和分页中显示所有产品。但是如何将 paginaton 页面值的值传递给模块?或者我需要再创建一个 Controller 吗?任何人
这是我的代码。文件 mymodule.php: class Mymodule extends Module { public function __construct() {
我正在为 prestashop 开发一个非常简单的(对于新手用户)后端,我想知道在哪里可以找到上传的产品图片名称.. 我知道它们在“img/p”目录中。但我不知道: 1.它们在哪个数据库表中..链接
我试图在 prestashop 中有一个静态页面作为主页。我能想到的唯一方法是创建一个新页面(即shop.php),然后将主页中当前 Hook 的模型 Hook 到新的shop.php。 我试着关注这
function get_user_id() { global $cookie; $userid = NULL; if (isset($cookie->id_customer)
我已将我的 prestashop 1.5.6 电子商务站点迁移到新服务器, 我所做的过程只是将文件上传到新服务器并导入数据库。 我清理了 Cache/smarty/compile 和 Cache/sm
我想在 prestashop 模块中显示一个表单,并想将该值存储在数据库中。这怎么可能??有prestashop专家吗?? 最佳答案 您可以使用自定义 HTML block 并在其中添加您的表单代码。
我想更改订单确认电子邮件模板的内容,前提是已订购了特定产品。有什么解决办法吗? 最佳答案 您可以在mails/language/order_conf.(html/txt)中找到电子邮件订单确认的通用模
我想在 prestashop 模块中显示一个表单,并想将该值存储在数据库中。这怎么可能??有prestashop专家吗?? 最佳答案 您可以使用自定义 HTML block 并在其中添加您的表单代码。
我正在尝试从模块中获取管理员 url 和管理员目录。 你能举个例子,从一个模块 php 页面中找到 admin url 和 admin dir 吗? getAdminLink('AdminTest',
我使用以下代码尝试在 prestashop 中获取当前用户 ID。 我将此代码放在我的模块目录中的另一个 php 文件中,并通过模块文件调用它。 $id = $this->context->cust
Prestashop 我遇到了一个关于 cookie 的问题。在 prestashop 1.4.7 中,我使用 setcookie 创建了一个自定义 cookie 变量,但是当我尝试在前端 Contr
我是 prestashop 的新手。 2 天前,我在我的本地主机上安装了 prestashop Version 1.6.1.6。但现在我忘记了它的管理面板 URL。有什么办法可以找出网址。任何人都请帮
是否可以在不直接注入(inject)模板 smarty 的情况下将 javascript 集成到模块中? 最佳答案 已解决, 我在我的模块目录中添加了一个 Js 文件(例如:mymodule/view
我正在尝试从 prestashop 获取当前的购物车 ID: $cookie->id_cart; 但在我将产品添加到购物车之前,它是空白的。 是否有任何选项可以创建该购物车以便我获取 ID? 谢谢。
我是一名优秀的程序员,十分优秀!