Ошибка генерации хэш-ключа при интеграции платежей payumoney

#javascript #php #payment-gateway #payumoney

#javascript #php #платежный шлюз #payumoney

Вопрос:

Я пытаюсь интегрировать Payumoney на свой веб-сайт. В демонстрационном коде, предоставленном Payumoney, значение хэша создается автоматически при заполнении других данных. Но в моем коде это не работает (значение хэша не создано).

Мой код

     <?php

    if(strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') == 0){
    //Request hash
       $contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : '';    
       if(strcasecmp($contentType, 'application/json') == 0){
           $data = json_decode(file_get_contents('php://input'));
           $hash=hash('sha512', $data->key.'|'.$data->txnid.'|'.$data->amount.'|'.$data->pinfo.'|'.$data->fname.'|'.$data->email.'|||||'.$data->udf5.'||||||'.$data->salt);
           $json=array();
           $json['success'] = $hash;
           echo json_encode($json);

       }
        exit(0);
       }

    function getCallbackUrl()
    {
       $protocol = ((!empty($_SERVER['HTTPS']) amp;amp; $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
       return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . 'response.php';
       }

    ?>

   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" >

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"> 
   </script>


    <?php if (($rowcart['status']) == 1){ ?>

                                                           <?php 

       if(strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') == 0){
       //Request hash
       $contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : '';   
        if(strcasecmp($contentType, 'application/json') == 0){
           $data = json_decode(file_get_contents('php://input'));
            $hash=hash('sha512', $data->key.'|'.$data->txnid.'|'.$data->amount.'|'.$data->pinfo.'|'.$data->fname.'|'.$data->email.'|||||'.$data->udf5.'||||||'.$data->salt);
            $json=array();
            $json['success'] = $hash;
            echo json_encode($json);

        }
        exit(0);
    }

                                                            function getCallbackUrl()
    {
        $protocol = ((!empty($_SERVER['HTTPS']) amp;amp; $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . 'response.php';
     }

                                                        ?>
                                                        <form action="<?php ?>" id="payment_form" method="POST">
    <input type="hidden" id="udf5" name="udf5" value="BOLT_KIT_PHP7" />
    <input type="hidden" id="surl" name="surl" value="<?php echo getCallbackUrl(); ?>" />


    <div class="dv">
    <span class="text"><label>Merchant Key:</label></span>
    <span><input type="text" id="key" name="key" placeholder="Merchant Key" value="" /></span>
    </div>

    <div class="dv">
    <span class="text"><label>Merchant Salt:</label></span>
    <span><input type="text" id="salt" name="salt" placeholder="Merchant Salt" value="" /></span>
    </div>

    <div class="dv">
    <span class="text"><label>Transaction/Order ID:</label></span>
    <span><input type="text" id="txnid" name="txnid" placeholder="Transaction ID" value="<?php echo  "Txn" . rand(10000,99999999)?>" /></span>
    </div>

    <div class="dv">
    <span class="text"><label>Amount:</label></span>
    <span><input type="text" id="amount" name="amount" placeholder="Amount" value="6.00" /></span>    
    </div>

    <div class="dv">
    <span class="text"><label>Product Info:</label></span>
    <span><input type="text" id="pinfo" name="pinfo" placeholder="Product Info" value="P01,P02" /></span>
    </div>

    <div class="dv">
    <span class="text"><label>First Name:</label></span>
    <span><input type="text" id="fname" name="fname" placeholder="First Name" value="" /></span>
    </div>

    <div class="dv">
    <span class="text"><label>Email ID:</label></span>
    <span><input type="text" id="email" name="email" placeholder="Email ID" value="" /></span>
    </div>

    <div class="dv">
    <span class="text"><label>Mobile/Cell Number:</label></span>
    <span><input type="text" id="mobile" name="mobile" placeholder="Mobile/Cell Number" value="" /></span>
    </div>

    <div class="dv">
    <span class="text"><label>Hash:</label></span>
    <span><input type="text" id="hash" name="hash" placeholder="Hash" value="" /></span>
    </div>

                                                            <button class="btn btn-xs"
                                                                    style=" background:#94c348; font-size:13px; width:100%;color:#FFFFFF" type="submit" value="Pay" onclick="launchBOLT(); return false;">
                                                                Make Payment
                                                            </button>
                                                        </form>
    <?php } ?>


    <script type="text/javascript"><!--
     $('#payment_form').bind('keyup blur', function(){
        debugger;
         $.ajax({
          url: 'profile.php',
          type: 'post',
          data: JSON.stringify({ 
            key: $('#key').val(),
            salt: $('#salt').val(),
            txnid: $('#txnid').val(),
            amount: $('#amount').val(),
            pinfo: $('#pinfo').val(),
            fname: $('#fname').val(),
            email: $('#email').val(),
            mobile: $('#mobile').val(),
            udf5: $('#udf5').val()
          }),
          contentType: "application/json",
          dataType: 'json',
          success: function(json) {
            debugger;
            if (json['error']) {
             $('#alertinfo').html('<i class="fa fa-info-circle"></i>' json['error']);
            }
            else if (json['success']) { 
                $('#hash').val(json['success']);
            }
          }
        }); 
    });
//-->
</script>
   <script type="text/javascript"><!--
    function launchBOLT()
    {
         alert("hi");
        bolt.launch({
        key: $('#key').val(),
        txnid: $('#txnid').val(), 
        hash: $('#hash').val(),
        amount: $('#amount').val(),
        firstname: $('#fname').val(),
        email: $('#email').val(),
        phone: $('#mobile').val(),
        productinfo: $('#pinfo').val(),
        udf5: $('#udf5').val(),
        surl : $('#surl').val(),
        furl: $('#surl').val(),
        mode: 'dropout' 
       },{ responseHandler: function(BOLT){
        console.log( BOLT.response.txnStatus );     
       if(BOLT.response.txnStatus != 'CANCEL')
         {
            //Salt is passd here for demo purpose only. For practical use keep salt at server side only.
                 var fr = '<form action="' $('#surl').val() '" method="post">'  
        '<input type="hidden" name="key" value="' BOLT.response.key '" />'  
        '<input type="hidden" name="salt" value="' $('#salt').val() '" />'  
        '<input type="hidden" name="txnid" value="' BOLT.response.txnid '" />'  
        '<input type="hidden" name="amount" value="' BOLT.response.amount '" />'  
        '<input type="hidden" name="productinfo" value="' BOLT.response.productinfo '" />'  
        '<input type="hidden" name="firstname" value="' BOLT.response.firstname '" />'  
        '<input type="hidden" name="email" value="' BOLT.response.email '" />'  
        '<input type="hidden" name="udf5" value="' BOLT.response.udf5 '" />'  
        '<input type="hidden" name="mihpayid" value="' BOLT.response.mihpayid '" />'  
        '<input type="hidden" name="status" value="' BOLT.response.status '" />'  
        '<input type="hidden" name="hash" value="' BOLT.response.hash '" />'  
        '</form>';
            var form = jQuery(fr);
            jQuery('body').append(form);                                
            form.submit();
        }
     },
         catchException: function(BOLT){
             alert( BOLT.message );
         }
   });
    }

    </script>
  

В коде, предоставленном payumoney, хэш-код создается автоматически при заполнении всех данных формы,
Требуется ли какой-либо дополнительный код для создания хэш-значения из данных формы?

Любая помощь? Заранее спасибо

Комментарии:

1. Вы хотите сказать, что $hash это не имеет значения? Вы добираетесь до этого кода?

2. В демонстрационном коде хэш-код создается или изменяется при изменении данных формы, таких как изменение имени, электронной почты, суммы и т.д. Но в моем коде он пуст. Или даже у него есть значение, оно не заполняется в поле ввода с id =»hash», которое используется для отправки формы

3. @LinuS, вы нашли решение для этого?