как обновить статус платежа в базе данных после успешного платежа, используя instamojo с codigniter - PullRequest
0 голосов
/ 14 октября 2019

Я использую интеграцию платежей instamojo с codeigniter, у меня ошибка ниже

  1. данные запроса платежа вставлены правильно, но я хочу обновить статус платежа после успешного платежа.
  2. не вызывает 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');
          // }
        }

         }
...