* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @copyright PayPal */ namespace PaypalAddons\classes\SEPA; use Context; use Module; use PaypalAddons\classes\AbstractMethodPaypal; class SepaButton { /** @var Context */ protected $context; /** @var Module */ protected $module; /** @var AbstractMethodPaypal */ protected $method; public function __construct() { $this->context = Context::getContext(); $this->module = Module::getInstanceByName('paypal'); $this->method = AbstractMethodPaypal::load($this->getMethodType()); } /** * @return string html */ public function render() { $this->context->smarty->assign($this->getTplVars()); $this->context->smarty->assign('JSvars', $this->getJSvars()); $this->context->smarty->assign('JSscripts', $this->getJS()); return $this->context->smarty->fetch($this->getTemplatePath()); } /** * @return [] */ protected function getJSvars() { return []; } /** * @return [] */ protected function getJS() { $JSscripts = []; $srcLib = $this->method->getUrlJsSdkLib([ 'enable-funding' => 'sepa', 'components' => 'buttons,marks', ]); if ($this->method->isSandbox()) { $srcLib .= '&buyer-country=DE'; } $JSscripts[$this->getSdkNameSpace()] = [ 'src' => $srcLib, 'data-namespace' => $this->getSdkNameSpace(), 'data-partner-attribution-id' => $this->getPartnerId(), ]; $JSscripts['sepaButton'] = [ 'src' => __PS_BASE_URI__ . 'modules/' . $this->module->name . '/views/js/sepaButton.js?v=' . $this->module->version, ]; return $JSscripts; } protected function getSdkNameSpace() { return 'totPaypalSepaSdkButtons'; } protected function getPartnerId() { return $this->method->getPaypalPartnerId(); } /** * @return string|null */ protected function getMethodType() { return null; } /** * @return string */ protected function getTemplatePath() { return 'module:paypal/views/templates/sepa/button.tpl'; } /** * @return [] */ protected function getTplVars() { return [ 'psPaypalDir' => _PS_MODULE_DIR_ . 'paypal', 'sdkNameSpace' => $this->getSdkNameSpace(), ]; } }