Как получить информацию, возвращаемую в IPN после транзакции в PayPal с использованием библиотеки ci_merchant?

Я новичок в codeigniter и до сих пор отлично справлялся с разработкой своего первого приложения. Однако, когда я попытался интегрировать библиотеку CI_MERCHANT на сайт, меня перенаправили на PayPal, и я даже мог успешно завершить транзакцию и перенаправиться на мой сайт. Тем не менее, я застрял на том, как проверить "скрытую информацию", отправленную PayPal на мое приложение, в дополнение к извлечению этой информации и публикации ее в базе данных.

в моем контроллере у меня есть это:

public function place_order($id=NULL){
    $this->merchant->load('paypal_express');


    $id=$this->session->userdata('id');
    $customer_id=$id;
    $rules=$this->order_m->rules_place_order;
    $this->form_validation->set_rules($rules);

    if ($this->form_validation->run() == FALSE) // validation hasn't been passed
    {
        $this->data['subview']='customer/order_view';
        $this->load->view('templates/header_customer');
        $this->load->view('customer/_layout_main',$this->data);
        $this->load->view('templates/footer_customer');


    }
    else // passed validation proceed to post success logic
    {
        // build array for the model


        $data=$this->order_m->array_from_order(array('topic_title','discipline','academic_level','type_of_service','paper_format','pages','no_of_sources','no_of_slides','paper_details','deadline','timezones'));
        $data['customer_id']=$id;
        $this->order_m->save_data($data);

            $this->db->where('customer_id',$id);
            //get the last inserted id
            $no=$this->db->insert_id();




                $settings=$this->merchant->default_settings();

                //payment for order
                $params = array(
                            'amount' => 100.00,
                            'currency' => 'USD',
                            'return_url' => 'http://localhost/customers/order/paypal',
                            'cancel_url' => 'http://localhost/customers/order'
                            );

                $response=$this->merchant->purchase($params);


        }
    }
 public function paypal(){
    var_dump($_GET);
    $this->merchant->load('paypal_express');
    $settings=$this->merchant->default_settings();
    $params = array(
                            'amount' => 100.00,
                            'currency' => 'USD',
                            );

    $response=$this->merchant->purchase_return($params);
    var_dump($response);
    if ($response->status() == Merchant_response::AUTHORIZED)
    {
        echo "status is AUTHORIZED";
    }
    if ($response->status() == Merchant_response::FAILED)
    {
        echo "status is FAILED";
    }
    if ($response->status() == Merchant_response::REDIRECT)
    {
        echo "status is REDIRECT";
    }
    if ($response->status() == Merchant_response::COMPLETE)
    {
        echo "status is COMPLETE";
    }
    if ($response->status() == Merchant_response::REFUNDED)
    {
        echo "status is REFUNDED";
    }

Это перенаправляет меня успешно на PayPal, и я могу завершить транзакцию. Однако я не могу продолжить отсюда, так как я новичок в обработке платежей. Пожалуйста, укажите мне правильное направление о том, как: 1. Проверять каждую транзакцию с PayPal и иметь возможность визуализировать и публиковать эту информацию в моей базе данных. 2. Сравните информацию, которую я разместил в базе данных до перенаправления клиента на PayPal, с тем, что я получаю от PayPal.

2 ответа

Решение

Вам необходимо вызвать метод purchase_return(), когда клиент будет отправлен на ваш return_url. Это подтвердит транзакцию с PayPal.

Сначала проверьте подробную информацию о IPN Вот

Когда вы создаете кнопку на шаге 3, вы можете указать IPN URL

Ключевые моменты

Вы получите данные по адресу IPN в $_POST переменная

читать это $_POST переменная с mail('email', 'subject', 'data with $_POST') или запись в файл журнала

Другие вопросы по тегам