Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 如何在使用instamojo和codigniter成功付款后更新数据库中的付款状态_Codeigniter_Instamojo - Fatal编程技术网

Codeigniter 如何在使用instamojo和codigniter成功付款后更新数据库中的付款状态

Codeigniter 如何在使用instamojo和codigniter成功付款后更新数据库中的付款状态,codeigniter,instamojo,Codeigniter,Instamojo,我正在使用instamojo支付集成与codeigniter,我面临以下错误 已正确插入付款请求数据,但我想更新付款 付款成功后的状态 未在库中创建webhook url 在CI控制器中编写的instamojo webhook代码如下: <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function __

我正在使用instamojo支付集成与codeigniter,我面临以下错误

  • 已正确插入付款请求数据,但我想更新付款 付款成功后的状态
  • 未在库中创建webhook url
  • 在CI控制器中编写的instamojo webhook代码如下:

    <?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";
            }
      }
    
      }
    

    尝试
    $this->load->helper('url')在instamojo库或Autolodi中尝试了$this->load->helper('url');同样的问题好吧,你在函数payment\u webhook()中得到了多少?或者根本没有?是否有任何错误消息?尝试使用例如
    echo('io')进行调试;死亡要在填写金额、手机等时发现导致错误的行,我再次单击提交按钮页面重新加载并显示当前页面显示
    
    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');
              // }
            }
    
             }