在PHP中的interswitch quickteller API集成

时间:2017-07-03 08:34:29

标签: php curl

我必须在我的网络应用程序中添加interswitch支付方法,但我收到错误 以下是我的代码

    function billersCategories()
    {

      $nonce=$randomNum=substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyz"), 0, 60);

    $date = new DateTime();
    $timestamp=$date->getTimestamp();
     // Signature
    $httpMethod = "GET";
    $url='https://sandbox.interswitchng.com/api/v2/quickteller/categorys';
    $clientId = "IKIA9D98ABCDEFGHIFAKEID1E09104959B9755C41E1"; 
    $clientSecretKey = "d5uAr+U8QhSv8vQtKPDIUI62327Fsfsfsf65=";
    $signatureCipher = $httpMethod."&".$url."&".$timestamp."&".$nonce."&".$clientId."&".$clientSecretKey;

    $signature = base64_encode($signatureCipher);

    $data = array("TerminalID" => "9APY556261");                                                                    
    $data_string = json_encode($data);                                                                                   

    $ch = curl_init($url);                                                                      
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
        'Content-Type:application/json',
        'Authorization:InterswitchAuth SUtJQTUyNTBERkY1NkU5MzM2OUM0RkRBRjMxQTQ3QTg1RkNDODYyRTRDOUU=',           
        'Signature:'.$signature,            
        'Nonce:'.$nonce,            
        'Timestamp:'.$timestamp,            
        'SignatureMethod:SHA512'    
    ));                                                                                                 

    $result = curl_exec($ch);

    echo curl_getinfo($ch) . '<br/>';
    echo curl_errno($ch) . '<br/>';
    echo curl_error($ch) . '<br/>';

    var_dump($result);

}

但我收到以下错误 “此资源不支持HTTP方法”,我尝试了http方法POST但同样的错误,我是API的新手,有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用它代替,填写以下内容 在变量中  -$ clientId  -$ clientSecretKey 在标题处  -TerminalID

  <?php
     $nonce=$randomNum=substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyz"), 0, 60);

    $date = new DateTime();
    $timestamp=$date->getTimestamp();
    $httpMethod = "GET";
    $clientId = "YOUR_OWN_ID"; 
    $clientSecretKey = "YOUR_OWN_CLIENT_SECRET_KEY";

    $resourceUrl='https://sandbox.interswitchng.com/api/v2/quickteller/categorys';
    $resourceUrl = strtolower($resourceUrl);
    $resourceUrl = str_replace('http://', 'https://', $resourceUrl);
    $encodedUrl = urlencode($resourceUrl);
    $transactionParams = "1";
    $httpMethod = "GET";

    $signatureCipher = $httpMethod . '&' . $encodedUrl . '&' . $timestamp . '&' . $nonce . '&' . $clientId . '&' . $clientSecretKey;

    if (!empty($transactionParams) && is_array($transactionParams)) {
        $parameters = implode("&", $transactionParams);
        $signatureCipher = $signatureCipher . $parameters;
    }
    $signature = base64_encode(sha1($signatureCipher, true));

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$resourceUrl);
    // curl_setopt($ch, CURLOPT_POST, 1);
    // curl_setopt($ch, CURLOPT_POSTFIELDS,$vars);  //Post Fields
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $headers = [
        'Content-Type:application/json',
        'Authorization:InterswitchAuth SUtJQTAzREM3RDY5NUREMzZFQURFNTQxNEE2Nzg1MUJCMUZFQ0Y5MUIxRjg=',           
        'Signature:'.$signature,            
        'Nonce:'.$nonce,            
        'Timestamp:'.$timestamp,            
        'SignatureMethod:SHA1',
        'TerminalID:YOUR_ASSIGNED_TERMINAL_ID'
    ];

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $server_output = curl_exec ($ch);
    curl_close ($ch);
    echo $server_output;
    ?>

这对我有用,希望以后能对某人有所帮助