2016-05-09 12 views
0

Ich benutze Angular/Node.JS-Stack für Payumoney-Integration.angular/node.js POST für Payumoney-Integration

auf der Winkelseite wird ein Befehl wie folgt $ http.post an einen Routenendpunkt auf der Serverseite (node.js) unter Verwendung gelegt:

$http.post('/placeOrder',order).success(function(data, status, headers, config){ 
     //handle responses on client side 
     console.log("Successfully POSTED to payment gateway"); 
     window.location = "https://test.payu.in/_payment"; 
    }).error(function(data, status, headers, config) { 
     console.log("Error in posting"); 
    }); 

Die tatsächliche Heben schwerer Lasten auf dem Knoten durchgeführt wird, js (Server-Seite):

router.post('/placeOrder', function(req, res, next){ 

hash_data = MERCHANT_KEY+'|'+txnid+'|'+amount+'|'+productinfo+'|'+firstname+'|'+email+'|'+udf1+'|'+udf2+'|'+udf3+'|'+udf4+'|'+udf5+'||||||'+SALT; 

var data = querystring.stringify({ 

     'key': MERCHANT_KEY, 
     'txnid': txnid, 
     'amount': amount, 
     'productinfo': productinfo, 
     'firstname': firstname, 
     'email': email, 
     'phone': phone, 
     'surl': SUCCESS_URL, 
     'furl': FAILURE_URL, 
     'curl': FAILURE_URL, 
     'hash': hash, 
     'service_provider': SERVICE_PROVIDER 
     //'salt': SALT 
    }); 

    //POST options 
    var POST_OPTIONS = { 
     hostname: PAYU_BASE_URL, 
     port: 443, 
     path: '/_payment', 
     method: 'POST', 
     //json: true, 
     agent: false, 
     headers: { 
      'Content-Type': 'application/x-www-form-urlencoded', 
      //'Content-Length': Buffer.byteLength(data) 
      'Content-Length': data.length 
     } 
    }; 

    var resp_status = ""; 

    var req = https.request(POST_OPTIONS, function(response) { 
     console.log('STATUS: ' + response.statusCode); 
     console.log('HEADERS: ' + JSON.stringify(response.headers)); 
     response.setEncoding('utf8'); 
     response.on('data', function (chunk) { 
      console.log("body: " + chunk); 
      resp_status = 200; 
      res.json(chunk); 
     }); 
     response.on('error', function (err) { 
      console.log("Got error: " + err.message); 
      resp_status = 500; 
      return res.send(err); 
     }); 
    }); 
    req.end(data); 

Allerdings scheint dies nicht als POST scheint nicht zu funktionieren mit diesem Ansatz zu arbeiten. Während das Debuggen auf dem Browser über das Netzwerk Registerkarte, sehe ich immer:

URL anfordern: https://test.payu.in/_payment anfordern Methode: GET Statuscode: 200 OK

Außerdem zeigt der Test Zahlungsseite (https://test.payu.in/_payment): " Fehlergrund Ein oder mehrere obligatorische Parameter fehlen in der Transaktionsanforderung. "

Jede Hilfe würde geschätzt werden !!

Antwort

0

Wie habe ich diese implementieren ..

  1. Verwendung JQuery und erstellen Sie ein Formular
  2. Verwenden sha512 hashcode zu erstellen.

var hashString = this.merchantKey+'|'+ options.uid +'|'+ options.totalPrice + '|'+'options.uid + '|' + 
     options.recipient_name + '|'+ options.email +'|||||||||||'+ this.merchantSalt ; 

    var hash = sha512(hashString); 





    var key1 = $('<input></input>').attr('type', 'hidden').attr('name', "key").val("merchantKey"); 

    var key2 = $('<input></input>').attr('type', 'hidden').attr('name', "txnid").val(options.uid); 

    var key3 = $('<input></input>').attr('type', 'hidden').attr('name', "amount").val(options.totalPrice); 

    var key4 = $('<input></input>').attr('type', 'hidden').attr('name', "productinfo").val(options.uid); 

    var key5 = $('<input></input>').attr('type', 'hidden').attr('name', "firstname").val(options.recipient_name); 

    var key6 = $('<input></input>').attr('type', 'hidden').attr('name', "email").val(options.email); 

    var key7 = $('<input></input>').attr('type', 'hidden').attr('name', "phone").val(options.phone); 

    var key8 = $('<input></input>').attr('type', 'hidden').attr('name', "surl").val("http://192.168.43.121/payment/success"); 

    var key9 = $('<input></input>').attr('type', 'hidden').attr('name', "furl").val("http://192.168.43.121/payment/error"); 

    var key10 = $('<input></input>').attr('type', 'hidden').attr('name', "hash").val(hash); 

    var key11 = $('<input></input>').attr('type', 'hidden').attr('name', "service_provider").val("payu_paisa"); 


    var form = $('<form/></form>'); 

    form.attr("id", "payuform"); 

    form.attr("action", this.payumoneyLink); 

    form.attr("method", "POST"); 

    form.attr("style", "display:none;"); 

    form.append(key1, key2, key3, key4, key5, key6, key7, key8, key9,key10, key11); 


    $("body").append(form); 

    // submit form 

    form.submit(); 

Dies ist meine erste Antwort auf StacksOverflow (Bower js-sha512 installieren). Ich hoffe es hilft!

+0

Bitte veröffentlichen Ihre E-Mail-Adresse in Ihren Antworten –

-1

HINWEIS: Wenn der Eingabetyp ausgeblendet ist, hat angularjs ein Problem beim Verbinden von Modell und Ansicht. Bitte notieren Sie das. txnid und hash bekomme ich von AJAX get call, also musste ich es in separate Variable vom Umfang binden.

Winkelcode ist staright forward, füllen Sie einfach die Variablen. Noch eine Sache von heute zu erinnern, wenn Ihr Konto nicht aktiv ist, dann müssen Sie Test Salz/Schlüssel durch ihre Kunden-Support nutzen:

MID : 4934580 
Key : rjQUPktU 
Salt : e5iIg1jwi8 
Authorization : y8tNAC1Ar0Sd8xAHGjZ817UGto5jt37zLJSX/NHK3ok= 
Test Card : 5123456789
Expiry : 05/20                  
CVV : 123