Par défaut, magento donne quelques étapes de paiement. Mais vous devez parfois ajouter des informations supplémentaires du client pour référence future. Une personnalisation demandée courante consiste à ajouter le formulaire personnalisé dans le processus de paiement par défaut. Ce n'est pas une bonne pratique de toucher les fichiers principaux. Vous pouvez le faire en remplaçant les modules. Dans cet exemple, Comapnyname est Ipragmatech et le nom du module est Checkoutstep .
Étape 1: ajouter une étape personnalisée dans le processus de paiement
Ouvrez le fichier Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php et écrivez le code suivant
class Ipragmatech_Checkoutstep_Block_Onepage_Checkoutstep extends Mage_Checkout_Block_Onepage_Abstract
{
protected function _construct()
{
$this->getCheckout()->setStepData('checkoutstep', array(
'label' => Mage::helper('checkout')->__('Invitation to participation'),
'is_show' => true
));
parent::_construct();
}
}
Étape 2: Ajoutez les étapes qui et où vous voulez dans le processus de paiement
Ouvrez le fichier Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php et écrivez le code suivant
class Ipragmatech_Checkoutstep_Block_Onepage extends Mage_Checkout_Block_Onepage
{
public function getSteps()
{
$steps = array();
if (!$this->isCustomerLoggedIn()) {
$steps['login'] = $this->getCheckout()->getStepData('login');
}
$stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'checkoutstep', 'review');
foreach ($stepCodes as $step) {
$steps[$step] = $this->getCheckout()->getStepData($step);
}
return $steps;
}
}
Étape 3: saisir la valeur soumise du formulaire personnalisé et définir les valeurs du formulaire personnalisé
Ouvrez ipragmatech> Checkoutstep> contrôleurs> OnepageController.php et écrivez la fonction suivante
public function saveCheckoutstepAction()
{
$this->_expireAjax();
if ($this->getRequest()->isPost()) {
//Grab the submited value
$_entrant_name = $this->getRequest()->getPost('entrant_name',"");
$_entrant_phone = $this->getRequest()->getPost('entrant_phone',"");
$_entrant_email = $this->getRequest()->getPost('entrant_email',"");
$_permanent_address = $this->getRequest() ->getPost('permanent_address',"");
$_address = $this->getRequest()->getPost('local_address',"");
Mage::getSingleton('core/session') ->setIpragmatechCheckoutstep(serialize(array(
'entrant_name' =>$_entrant_name,
'entrant_phone' =>$_entrant_phone,
'entrant_email' =>$_entrant_email,
'permanent_address' =>$_permanent_address,
'address' =>$_address
)));
$result = array();
$redirectUrl = $this->getOnePage()->getQuote()->getPayment() ->getCheckoutRedirectUrl();
if (!$redirectUrl) {
$this->loadLayout('checkout_onepage_review');
$result['goto_section'] = 'review';
$result['update_section'] = array(
'name' => 'review',
'html' => $this->_getReviewHtml()
);
}
if ($redirectUrl) {
$result['redirect'] = $redirectUrl;
}
$this->getResponse()->setBody(Zend_Json::encode($result));
}
}
Étape 4: enregistrer les informations du formulaire personnalisé
Lorsque le crochet d'événement checkout_onepage_controller_success_action est appelé. Ouvrez Ipragmatech> Checkoutstep> Model> Observer.php et écrivez ce qui suit
class Ipragmatech_Checkoutstep_Model_Observer {
const ORDER_ATTRIBUTE_FHC_ID = 'checkoutstep';
public function hookToOrderSaveEvent() {
if (Mage::helper('checkoutstep')->isEnabled()) {
$order = new Mage_Sales_Model_Order ();
$incrementId = Mage::getSingleton ( 'checkout/session' )->getLastRealOrderId ();
$order->loadByIncrementId ( $incrementId );
// Fetch the data
$_checkoutstep_data = null;
$_checkoutstep_data = Mage::getSingleton ( 'core/session' )->getIpragmatechCheckoutstep ();
$model = Mage::getModel ( 'checkoutstep/customerdata' )->setData ( unserialize ( $_checkoutstep_data ) );
$model->setData ( "order_id",$order["entity_id"] );
try {
$insertId = $model->save ()->getId ();
Mage::log ( "Data successfully inserted. Insert ID: " . $insertId, null, 'mylog.log');
} catch ( Exception $e ) {
Mage::log ( "EXCEPTION " . $e->getMessage (), null, 'mylog.log' );
}
}
}
}
Magento - Ajouter un formulaire personnalisé dans l'extension de paiement est une solution complète pour ajouter une étape supplémentaire dans le processus de paiement de votre site Web de commerce électronique. Il permet à l'administrateur d'exporter des données à partir d'une table personnalisée au format CSV.
Visitez le lien pour obtenir cette extension gratuite http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html