передача значений массива из контроллера в модель для операций вставки / обновления - PullRequest
0 голосов
/ 10 декабря 2018

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

Мой контроллер:

$transaction_id= filter_input(INPUT_POST, 'pay_id');
$api = new Api('ID', 'key');   
//getting object of transation
$payment = $api->payment->fetch($transaction_id);
//passing payment details to database
$this->Payment_model->set_payment($transaction_id,true);

Текущая структура массива $payment:

pay\Api\Payment Object ( [attributes:protected] => Array ( [id] => pay_BVzDNK3vsp4Owl [entity] => payment [amount] => 35400 [currency] => INR [status] => authorized [order_id] => ) )

My pay_model.php:

  public function set_payment($payment,$first)
  {
      $data = array(
          'id' => $id,
          'entity' => $entity,
          'amount' => $amount,
          'currency' => $currency,
          'status' => $status,
          'order_id' => $order_id,
          'updated_at' => date('Y-m-d H:i:s')
      );
      if ($first == TRUE) {
          //print_r($data);
          //  echo "breakpoint--i am in set user model id 0";
          return $this->db->insert('payments', $data);
      } else {
          //echo "breakpoint--i am in set user model id not 0";
          $this->db->where('id', $id);
          return $this->db->update('payments', $data);
      }
  }

Issue : массив $ data всегда получает значения NULL.Как использовать данные, которые я здесь получаю, и передавать в модель для операций вставки / обновления.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

in set_payment():

ваш массив данных должен выглядеть следующим образом:

 $data = array(
        'id' => $payment['id'],
        'entity' => $payment['entity'],
        'amount' => $payment['amount'],
        'currency' => $payment['currency'],
        'status' => $payment['status'],
        'order_id' => $payment['order_id'],
        'updated_at' => date('Y-m-d H:i:s'));
0 голосов
/ 10 декабря 2018

Значение массива $data не определено в области действия функции (которая дает значение NULL).

У вас 2 ошибки.Во-первых, отправка правильных данных в set_payment функцию:

$payment = $api->payment->fetch($transaction_id);
$this->Payment_model->set_payment($transaction_id,true);

Я думаю, что вторая строка должна быть:

$this->Payment_model->set_payment($payment,true);

Как отправка $payment, а не $transaction_id.

Вторая ошибка - при использовании данных в функции set_payment.При создании $data вы должны использовать его как:

'id' => $payment['id'], //and no just $id 
'entity' => $payment['entity'],//and no just $entity as those var not exist in this scope
// and so on...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...