PrestaShop。为贝宝设置错误 url
PrestaShop. set error url for paypal
我最近启用了 paypal Pro 服务,现在我正在为我的 PrestaShop 版本 1.6.1.1 设置它。
我必须指出感谢页面和错误页面的url。
对于感谢页面,我没有问题,我模拟了一次购买并通过放置占位符复制了 url。
我用过这个:
module/paypal/submit?id_cart={id_cart}&id_module=97&id_order={id_order}&key={id_key}
我发现设置错误页面有困难 url。
在 templates/front 中,我注意到已经有用于此的 tpl。
在 paypal.php 中,我找到了这个函数:
public function displayPayPalAPIError($message, $log = false)
{
$send = true;
// Sanitize log
foreach ($log as $key => $string) {
if ($string == 'ACK -> Success') {
$send = false;
} elseif (Tools::substr($string, 0, 6) == 'METHOD') {
$values = explode('&', $string);
foreach ($values as $key2 => $value) {
$values2 = explode('=', $value);
foreach ($values2 as $key3 => $value2) {
if ($value2 == 'PWD' || $value2 == 'SIGNATURE') {
$values2[$key3 + 1] = '*********';
}
}
$values[$key2] = implode('=', $values2);
}
$log[$key] = implode('&', $values);
}
}
$this->context->smarty->assign(array('message' => $message, 'logs' => $log));
if ($send) {
$id_lang = (int) $this->context->language->id;
$iso_lang = Language::getIsoById($id_lang);
if (!is_dir(dirname(__FILE__).'/mails/'.Tools::strtolower($iso_lang))) {
$id_lang = Language::getIdByIso('en');
}
Mail::Send(
$id_lang,
'error_reporting',
Mail::l('Error reporting from your PayPal module', (int) $this->context->language->id),
array('{logs}' => implode('<br />', $log)),
Configuration::get('PS_SHOP_EMAIL'),
null,
null,
null,
null,
null,
_PS_MODULE_DIR_.$this->name.'/mails/'
);
}
return $this->fetchTemplate('error.tpl');
是否有路由规则调用带钩子的订单模板error.tpl?
不,没有它的路由规则。从我通过模块代码设法理解的内容来看,如果订单的当前状态具有 payment_error
的电子邮件模板(Payment Error
状态的模板),则会显示错误模板。
因此,如果您将订单的当前状态设置为 Payment Error
并访问您在问题中所写的同一个 link,它应该会显示错误模板。
我最近启用了 paypal Pro 服务,现在我正在为我的 PrestaShop 版本 1.6.1.1 设置它。
我必须指出感谢页面和错误页面的url。
对于感谢页面,我没有问题,我模拟了一次购买并通过放置占位符复制了 url。
我用过这个:
module/paypal/submit?id_cart={id_cart}&id_module=97&id_order={id_order}&key={id_key}
我发现设置错误页面有困难 url。
在 templates/front 中,我注意到已经有用于此的 tpl。 在 paypal.php 中,我找到了这个函数:
public function displayPayPalAPIError($message, $log = false)
{
$send = true;
// Sanitize log
foreach ($log as $key => $string) {
if ($string == 'ACK -> Success') {
$send = false;
} elseif (Tools::substr($string, 0, 6) == 'METHOD') {
$values = explode('&', $string);
foreach ($values as $key2 => $value) {
$values2 = explode('=', $value);
foreach ($values2 as $key3 => $value2) {
if ($value2 == 'PWD' || $value2 == 'SIGNATURE') {
$values2[$key3 + 1] = '*********';
}
}
$values[$key2] = implode('=', $values2);
}
$log[$key] = implode('&', $values);
}
}
$this->context->smarty->assign(array('message' => $message, 'logs' => $log));
if ($send) {
$id_lang = (int) $this->context->language->id;
$iso_lang = Language::getIsoById($id_lang);
if (!is_dir(dirname(__FILE__).'/mails/'.Tools::strtolower($iso_lang))) {
$id_lang = Language::getIdByIso('en');
}
Mail::Send(
$id_lang,
'error_reporting',
Mail::l('Error reporting from your PayPal module', (int) $this->context->language->id),
array('{logs}' => implode('<br />', $log)),
Configuration::get('PS_SHOP_EMAIL'),
null,
null,
null,
null,
null,
_PS_MODULE_DIR_.$this->name.'/mails/'
);
}
return $this->fetchTemplate('error.tpl');
是否有路由规则调用带钩子的订单模板error.tpl?
不,没有它的路由规则。从我通过模块代码设法理解的内容来看,如果订单的当前状态具有 payment_error
的电子邮件模板(Payment Error
状态的模板),则会显示错误模板。
因此,如果您将订单的当前状态设置为 Payment Error
并访问您在问题中所写的同一个 link,它应该会显示错误模板。