Документация платежного шлюза Magento

#javascript #php #xml #magento

#javascript #php #xml #magento

Вопрос:

Согласно официальной документации, основными предопределенными функциями для платежных шлюзов являются capture() и authorize() , которые должны были выполняться после размещения заказа с выбранным способом оплаты.

Платежный шлюз, который я пытаюсь настроить, запрашивает данные https POST и возвращает ответ json. По сути, это всего лишь платежный шлюз cc.

  1. Где эти данные post должны быть по праву размещены внутри модуля?

  2. Как использовать ответ gateways json после завершения заказа для отображения (чтобы я знал, что он выполнен правильно)?

  3. Как должна выглядеть структура модуля, чтобы удовлетворить большинство основных потребностей этой задачи?

Это то, что пытается сделать мой код:

 <?php

    class Mycompany_Pay_Model_Pay extends Mage_Payment_Model_Method_Abstract
    {
        protected $_code = 'mycompany_pay';

        protected $_isGateway               = true;
        protected $_canCapture              = true;
        protected $_canRefund               = true;
        protected $_canUseInternal          = true;

        protected $_allowCurrencyCode = array('EUR', 'HRK');

        protected $_minValue = 1;

        // taking predefined objects for further usage
        public function capture(Varien_Object $payment, $amount){
            $order = $payment->getOrder();
            //$order = Mage::getModel('sales/order')->load($orderId);
            $billingInfo = $order->getBillingAddress();
            $customer = Mage::getSingleton('customer/session')->getCustomer();

            $postfields = array('order_id'=>9999, // temp number for debugging 
                    'name'=>    $customer->getName(), 
                    'mail'=>    $customer->getEmail(), 
                    'address'=> $billingInfo->getStreet(1),
                    'zip'=>     $billingInfo->getPostcode(),
                    'city'=>    $billingInfo->getCity(),
                    'state'=>   $billingInfo->getRegion(),
                    'country'=> $billingInfo->getCountry(),
                    'amount'=>  $amount,
                    'currency'=>$order->getBaseCurrencyCode(),
                    'cc'=>      $payment->getCcNumber(),
                    'cvv'=>     $payment->getCcCid());

        curl_setopt($ch, CURLOPT_URL, 'https://mygatewayUrl');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_POST, 1);

        curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $result = curl_exec($ch);
        print $result;
        }
    }
  

Должен ли код curl выполняться вне capture? Всякий раз, когда я делаю тестовый заказ со своего тестового сайта magento, я просто возвращаюсь с идентификатором транзакции, в котором говорится, что заказ завершен. Нет фактических доказательств того, что этот захват даже выполняется. (Я попытался добавить к нему журнал / точки останова, вообще ничего не сделал).

Один дополнительный вопрос:

Какой самый простой способ добавить простую форму CC для заполнения пользователем при выборе этого способа оплаты (чтобы переменные CC на самом деле не были пустыми, как сейчас)?

Любая помощь высоко ценится.

Комментарии:

1. Если у вас есть несколько вопросов, вы должны задать их самостоятельно.

Ответ №1:

Я думаю, что метод достижения желаемого объяснен в этом руководстве:

http://excellencemagentoblog.com/magento-create-custom-payment-method-api-based

Я мог бы извлечь из нее части, чтобы ответить на ваш вопрос, но я думаю, что весь обзор, который дает Маниш Пракаш, будет потерян, он очень четко описывает весь процесс, взгляните.