0

我目前正在編寫一個使用PayPal Adaptive Payments SDK的Prestashop支付模塊。 當我嘗試安裝我的模塊,我得到以下錯誤:Prestashop支付模塊

[PrestaShop] Fatal error in module Configuration: 
Cannot redeclare class Configuration 

這裏是我的代碼。 貝寶sdk安裝正確並正常工作。

config.xml中

<?xml version="1.0" encoding="UTF-8" ?> 
    <module> 
    <name>MyPayments</name> 
    <displayName><![CDATA[My module]]></displayName> 
    <version><![CDATA[1.0]]></version> 
    <description><![CDATA[Description of my module.]]></description> 
    <author></author> 
    <tab><![CDATA[payments_gateways]]></tab> 
    <confirmUninstall>Are you sure you want to uninstall? You will lose all your settings!</confirmUninstall> 
    <is_configurable>0</is_configurable> 
    <need_instance>0</need_instance> 
    <limited_countries></limited_countries> 
</module> 

mypayments.php

<?php 
if (!defined('_PS_VERSION_')) 
    exit; 

//include paypal adaptive payments sdk lib 
require(_PS_MODULE_DIR_.'/mypayments/samples/PPBootStrap.php'); 

class MyPayments extends PaymentModule { 

    public function __construct() { 

     $this->name = 'mypayments'; 
     $this->tab = 'payments_gateways'; 
     $this->version = '0.1'; 
     $this->need_instance = 0; 
     $this->ps_versions_compliancy = array('min' => '1.5', 'max' => '1.6'); 
     $this->bootstrap = true; 

     parent::__construct(); 

     #$this->page = basename(__FILE__, '.php'); 
     $this->displayName = $this->l('Adaptive Payments'); 
     $this->description = $this->l('Paypal Adaptive Payments'); 

     $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); 

     if (!Configuration::get('MYMODULE_NAME'))  
      $this->warning = $this->l('No name provided'); 
    } 

    public function install() { 
     if (!parent::install() 
     OR !$this->registerHook('payment') 
     OR !Configuration::updateValue('MYMODULE_NAME', 'My Payments') 
     ) 
     return false; 
     return true; 
    } 

    public function uninstall() { 
     if (!parent::uninstall() || 
      !Configuration::deleteByName('MYMODULE_NAME') 
      ) 
      return false; 
     return true; 
    } 

//output the current payment method to the choice list of available methods on the checkout pages 
    function hookPayment($params){ 

     if(!$this->active) return; 

     global $smarty; 

     //checks if all products in cart are valid 
     foreach ($params['cart']->getProducts() AS $product) 
     if (Validate::isUnsignedInt(ProductDownload::getIdFromIdProduct(intval($product['id_product'])))) 
      return false; 

     //assign smarty paths 
     $smarty->assign(array( 
      'this_path' => $this->_path, 
      'this_path_ssl' => (Configuration::get('PS_SSL_ENABLED') ? 'https://' :'http://').htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__.'modules/'.$this->name.'/' 
      )); 

     //return the template file to render the payment option 
     return $this->display(__FILE__, 'payment.tpl'); 
    } 

    public function paypalPayCall($Email1, $Email2, $totalAmount){ 

     $Email3; 

     $Payment1 = $totalAmount/2; 
     $Payment2 = $totalAmount/4; 
     $Payment3 = $totalAmount/4; 


     $payRequest = new PayRequest(); 

      $receiver = array(); 
      $receiver[0] = new Receiver(); 
      $receiver[0]->amount = $Payment1; 
      $receiver[0]->email = $Email1; 
      $receiver[0]->primary = "true"; 

      $receiver[1] = new Receiver(); 
      $receiver[1]->amount = $Payment2; 
      $receiver[1]->email = $Email2; 

      $receiver[2] = new Receiver(); 
      $receiver[2]->amount = $Payment3; 
      $receiver[2]->email = $Email3; 

      $receiverList = new ReceiverList($receiver); 
      $payRequest->receiverList = $receiverList; 

      $requestEnvelope = new RequestEnvelope("en_US"); 
      $payRequest->requestEnvelope = $requestEnvelope; 
      $payRequest->actionType = "PAY"; 
      $payRequest->cancelUrl = "http://www.google.at/"; 
      $payRequest->returnUrl = dirname(__FILE__)."validation.php"; 
      $payRequest->currencyCode = "EUR"; 


     //CONFIGURATION - now sandbox 
     $sdkConfig = array(
      "mode" => "sandbox", 
      "acct1.UserName" => "xxx", 
      "acct1.Password" => "xxx", 
      "acct1.Signature" => "xxx", 
      "acct1.AppId" => "xxx" 
     ); 

     /* the payment call */ 
     $adaptivePaymentsService = new AdaptivePaymentsService($sdkConfig); 
     $payResponse = $adaptivePaymentsService->Pay($payRequest); 

     //read response 
     $response = json_decode($payResponse); 
     $payKey = $response->payKey; 

     //check if acknowledged 
     if (strtoupper($response->responseEnvelope->ack) == 'SUCCESS') 
      { 
       $payUrl = "https://www.sandbox.paypal.com/webscr?cmd=_ap-payment&paykey=" . $payKey; 
       return $payUrl; 
      } 
      else 
      { 
       return false; 
      } 
    } 


} 
?> 

payment.php

<?php 

include(dirname(__FILE__).'/../../config/config.inc.php'); 
include(dirname(__FILE__).'/../../header.php'); 
include(dirname(__FILE__).'/mypayments.php'); 

if (!$cookie->isLogged()) 
    Tools::redirect('authentication.php?back=order.php'); 

$paypalImgUrl = dirname(__FILE__).'/img/default_logos/default_logo.gif'; 

//create new instance of my payment class 
$myPayments = new MyPayments(); 

//get cart total 
$total = floatval(number_format($cart->getOrderTotal(true, 3), 2, '.', '')); 

$Email1; 
$Email2; 

//call method from my payment class 
$payUrl = $myPayments->paypalPayCall($Email1, $Email2, $total); 

if ($payUrl == false) 
{ 
    echo "<center>Error generating payment link</center>"; 
} 
else 
{ 
    //show link to buy with paypal 
    echo '<center><a href="'.$payUrl.'"><img src="'.$paypalImgUrl.'" alt="Pay with Paypal"/></a></center>'; 
} 

include_once(dirname(__FILE__).'/../../footer.php'); 

?> 

validation.php

<?php 
//PAYPALS RETURN URL REDIRECTS HERE TO VALIDATE AND PLACE THE ORDER 

include(dirname(__FILE__).'/../../config/config.inc.php'); 
include(dirname(__FILE__).'/../../header.php'); 
include(dirname(__FILE__).'/mypayments.php'); 


$total = floatval(number_format($cart->getOrderTotal(true, 3), 2, '.', '')); 
$myPayments->validateOrder(intval($cart->id), _PS_OS_PREPARATION_, $total, $myPayments->displayName); 
$order = new Order(intval($myPayments->currentOrder)); 

echo "<center> Thank you! Your order is being processed </center>"; 

include(dirname(__FILE__).'/../../footer.php'); 

?> 

payment.tpl

<p class="payment_module"> 

<a href="{$this_path}payment.php" title="{l s='Pay with Paypal' mod='mypayments'}"> 

<img src="{$this_path}paypal.png" alt="{l s='Pay with Paypal' mod='mypayments'}" /> 

{l s='Pay with Paypal' mod='mypayments'} 

</a> 
</p> 

任何幫助非常感謝!

回答

0

...貝寶SDK有它自己的配置類

很瑣碎的錯誤都-.-