2017-01-28 3 views
2

enter image description here Я работаю над интеграцией CodeIgniter payUmoney. У меня есть регистрационная форма, с которой регистрируются и оплачиваются с помощью платежного шлюза payUmoney, а форма также содержит несколько полей выбора. Мне нужно использовать платежный шлюз payUmoney. Так что, пожалуйста, помогите мне, как я могу вставить записи в базу данных после успешной транзакции в CodeIgniter.?Интеграция Codeigniter Payumoney

На самом деле вот моя форма. Теперь, что я хочу отправить форму, но после успешной оплаты. Для меня небольшая проблема, когда я буду хранить данные до момента оплаты. Я хочу сохранить данные после успешной транзакции. Одна вещь также есть несколько выборок снижается также, поэтому, пожалуйста, помогите мне, как хранить данные в базе данных после транзакции с использованием payUmoney.

+0

Я сделал проект CodeIgniter payumoney. Но я не понимаю, что именно ваша проблема. Просто измените статус транзакции от начального к успеху после того, как payumoney вернется к вашему методу успеха. Не забудьте проверить возврат хеш-верификации, чтобы избежать потенциального взлома. –

+0

Thanx james для вашего feedbaxk. Но я использую тестовую учетную запись. И я хочу вставить записи после завершения оплаты, тогда проблема заключается в том, что я заполняю форму и отправляю ее перенаправления на test.payu.ib/_payment. Но это показывает, что ошибка произошла на странице payumoney на странице оплаты. А также скажите мне, как я могу вставлять записи после успешной транзакции. Я имею в виду, если транзакция успешна, тогда я могу вставить записи только $ this-> input-> post ..? Помощь Pls i m в проблеме здесь .... Thnx –

+0

Вы получаете ошибку контрольной суммы или любую другую любую другую ошибку? пожалуйста уточни. Я считаю, что у вас есть таблица транзакций для записи всех транзакций с такими полями, как идентификатор транзакции, платная сумма, статус и т. Д. После успешной транзакции обновите свой статус, используя $ this-> input-> post ('status'); который является возвратом payumoney после проверки хеша возврата. print_r ($ _ REQUEST); по вашему методу успеха поможет вам идентифицировать все доходы от payumoney. –

ответ

1

Ответ на ваш последний комментарий. Ошибка контрольной суммы происходит из-за несоответствия хеша. после того, как вы отправите форму на payu/checkout.php, checkout.php отправит форму на номер https://test.payu.in/_payment (тестовый URL).

Внутри вашего PayU/checkout.php

function checkout() { 

     $MERCHANT_KEY = "enter your test merchant key here"; 
     $SALT = "enter your test salt here"; 

     $txnid = substr(hash('sha256', mt_rand() . microtime()), 0, 20); 

     $udf1=''; 
     $udf2=''; 
     $udf3=''; 
     $udf4=''; 
     $udf5=''; 

     $hashstring = $MERCHANT_KEY . '|' . $txnid . '|' . $grandtotal . '|' . $productinfo . '|'. $fname . '|' . $email .'|'.$udf1.'|' .$udf2.'|' .$udf3.'|'.$udf4.'|'.$udf5.'||||||'. $SALT; 

     $hash = strtolower(hash('sha512', $hashstring)); 
     $data['hash'] = $hash; 

     //Loading checkout view 
     $this->load->view('checkout.php'); 
} 

В checkout.php вы должны представить форму https://test.payu.in/_payment со всеми полями, которые я использовал в генерации хэша, кроме соли. Хэш-поле также находится в этой форме.

<form method="post" name="payuForm" action="https://test.payu.in/_payment"> 

     <input name="key" type="hidden" value="<?php echo $mkey ?>" /> 
     <input name="txnid" type="hidden" value="<?php echo $tid ?>" /> 
     <input type="hidden" name="hash" value="<?php echo $hash ?>"/> 

     <input name="amount" type="hidden" value="<?php echo $grandtotal; ?>" /> 

     <input name="productinfo" type="hidden" value="<?php echo $pinfo;?>"> 

     <input type="hidden" name="service_provider" value="payu_paisa" size="64" /> 
     <input name="udf1" type="hidden" value=""> 
     <input name="udf2" type="hidden" value=""> 
     <input name="udf3" type="hidden" value=""> 
     <input name="udf4" type="hidden" value=""> 
     <input name="udf5" type="hidden" value=""> 

     <input name="firstname" id="firstname" type="hidden" value="<?php echo $name; ?>"/> 

     <input name="email" id="email" type="hidden" value='<?php echo $mailid;?>'> 

     <input name="phone" type="hidden" value="<?php echo $phoneno; ?>"> 
     <input name="surl" type="hidden" value="<?php echo base_url('payu/success'); ?>" size="64" /> 
     <input name="furl" type="hidden" value="<?php echo base_url('payu/fail'); ?>" size="64" /> 
     <input name="curl" type="hidden" value="<?php echo base_url('payu/cancel'); ?>" /> 

     <?php 
     } 
     ?> 
     <input type="submit" name="submit_form" value="Click Here for Payment" class="btn btn-info btn-block" > 
    </form> 

За дополнительной информацией не забудьте создать таблицу транзакций с полями, такими как идентификатор транзакции, количество, временная метка, статус и все информационные поля пользователя. Перед началом транзакции, т.е. в функции payu/checkout, вам необходимо вставить эту таблицу со статусом. После успешного состояния статуса транзакции транзакции для успеха после проверки возврата хэша, если вы беспокоитесь о взломе (я проверяю хэш возврата, потому что я взломал сайт payumoney для тестирования и выяснил, что если я не проверю возврат хэша, моя поддельная транзакция будет быть успешным.)

public function success() 
{ 
    //print_r($_REQUEST); 

    $status= $this->input->post('status'); 

    if($status =='success') 
    { 
     $txnid = $this->input->post('txnid'); 
     $amount = $this->input->post('amount'); 
     $productinfo = $this->input->post('productinfo'); 
     $firstname = $this->input->post('firstname'); 
     $hash = $this->input->post('hash'); 
     $email = $this->input->post('email'); 
     $udf1 = $this->input->post('udf1'); 
     $udf2 = $this->input->post('udf2'); 
     $udf3 = $this->input->post('udf3'); 
     $udf4 = $this->input->post('udf4'); 
     $udf5 = $this->input->post('udf5'); 
     $key = $this->input->post('key'); 



     $SALT ="Your salt"; 


     If (isset($_POST["additionalCharges"])) 
     { 
      $additionalCharges=$_POST["additionalCharges"]; 
      $retHashSeq = $additionalCharges.'|'.$SALT . '|' . $status . '|||||||||||' . $email . '|' . $firstname . '|' . $productinfo . '|' . $amount . '|' . $txnid . '|' . $key; 
     }else{ 
      $retHashSeq = $SALT . '|' . $status . '|||||||||||' .$udf5.'|'.$udf4.'|'.$udf3.'|'.$udf2.'|'.$udf1.'|'. $email . '|' . $firstname . '|' . $productinfo . '|' . $amount . '|' . $txnid . '|' . $key; 

     } 

     $rethash = hash("sha512", $retHashSeq); 


     if ($rethash != $hash) 
     { 
      $data['errmsg'] = " Invalid Transaction . Error Occured"; 
      //echo "Return Hash failed"; 
      redirect('payu/err',$data); 
     } 

     // now begin your custome code if a transaction is success 

    } 
+0

Да Джеймс. Thanx для вас. Я уже сделал это и отправил все значения управления формой из последней формы. Но когда платеж успешный, я получил только несколько значений, таких как имя, сумма, адрес электронной почты и телефон. Но у меня также есть много значений в скрытых областях. Что мне делать. –

+0

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

+0

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

Смежные вопросы