public function callback() { $ipn_secret = $this->config->get('coinify_ipn_secret'); $callback_validator = new CoinifyCallback($ipn_secret); // Get the raw HTTP POST body (JSON object encoded as a string) $body = file_get_contents('php://input'); $arr = json_decode($body, true); header('HTTP/1.1 200 OK'); // Validate callback if (!$callback_validator->validateCallback($body)) { return; } $order_id = $arr['data']['custom']['orderid']; $order_state = $arr['data']['state']; // Load checkout model $this->load->model('checkout/order'); switch ($order_state) { case 'complete': // Set Order status - Processing $this->model_checkout_order->addOrderHistory($order_id, 2); break; case 'expired': // Set Order status - Denied $this->model_checkout_order->addOrderHistory($order_id, 8); break; } }
public function processTransaction($api_admin, $id, $data, $gateway_id) { header('HTTP/1.1 200 OK'); $body = file_get_contents('php://input'); $json_body = json_decode($body, true); if ($json_body === null) { return; } $resp = $json_body['data']; if (!array_key_exists(COINIFY_SIGNATURE_HEADER_NAME, $_SERVER)) { return; } $signature = $_SERVER[COINIFY_SIGNATURE_HEADER_NAME]; $callback = new CoinifyCallback($this->config['coinify_secret']); if (!$callback->validateCallback($body, $signature) || $resp['state'] !== 'complete') { return; } $invoice_id = intval($resp["custom"]["invoice_id"]); $tx = $api_admin->invoice_transaction_get(['id' => $id]); if (!$tx['invoice_id']) { $api_admin->invoice_transaction_update(['id' => $id, 'invoice_id' => $invoice_id]); } if (!$tx['amount']) { $api_admin->invoice_transaction_update(['id' => $id, 'amount' => $resp['native']["amount"]]); } $invoice = $api_admin->invoice_get(['id' => $invoice_id]); $client_id = $invoice['client']['id']; $transaction_hash = $resp["payments"][0]['txid']; $bd = ['id' => $client_id, 'amount' => $resp["native"]["amount"], 'description' => 'coinify transaction ' . $transaction_hash, 'type' => 'coinify', 'rel_id' => $transaction_hash]; $api_admin->client_balance_add_funds($bd); $api_admin->invoice_batch_pay_with_credits(['client_id' => $client_id]); $d = ['id' => $id, 'error' => '', 'error_code' => '', 'status' => 'processed', 'updated_at' => date('c')]; $api_admin->invoice_transaction_update($d); }