Я использую интеграцию платежей instamojo с codeigniter, у меня ошибка ниже
- данные запроса платежа вставлены правильно, но я хочу обновить статус платежа после успешного платежа.
- не вызывает URL-адрес webhook в библиотеке
код webtaok instamojo, написанный на CI-контроллере:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper('url'); // helper load
}
public function payment_webhook(){
$data = $_POST;
$mac_provided = $data['mac'];
unset($data['mac']);
$ver = explode('.', phpversion());
$major = (int) $ver[0];
$minor = (int) $ver[1];
if($major >= 5 and $minor >= 4){
ksort($data, SORT_STRING | SORT_FLAG_CASE);
}
else{
uksort($data, 'strcasecmp');
}
$mac_calculated = hash_hmac("sha1", implode("|", $data), "our Salt key updated here");
if($mac_provided == $mac_calculated){
if($data['status'] == "Credit"){
echo "successful";
}
else{
echo "unsuccessful";
}
}
else{
echo "MAC mismatch";
}
}
}
библиотека instamojo: здесь webhook не работает
public function pay_payment($purpose,$amount,$member_name,$member_mobile,$member_email,$redirect_url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://test.instamojo.com/api/1.1/payment-requests/');
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array("X-Api-Key:test_our_key",
"X-Auth-Token:test_our_token"));
$payload = Array(
'purpose' => $purpose,
'amount' => $amount,
'phone' => $member_mobile,
'buyer_name' => $member_name,
'redirect_url' => $redirect_url,
'send_email' => true,
'webhook' => base_url().'Welcome/payment_webhook', // not redirect to given url
'send_sms' => true,
'email' => $member_email,
'allow_repeated_payments' => false
);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, TRUE);
if(isset($data['success']) && $data['success'] === true)
{
$transaction=$data['payment_request'];
$result=$this->CI->db->insert('ag_payment',$transaction);
// if($result==="TRUE"){
$site = $data['payment_request']['longurl'];
redirect($site, 'refresh');
// }
}
}