2016-07-08 13 views
0

Ich möchte ein Zahlungs-Gateway in meine Web-App integrieren und festgestellt, dass ihre Integration ein Front-End-Formular benötigt, um die Werte zu übermitteln - In der App habe ich kein aktuelles Frontend für die Zahlung , nur eine Menge Back-End-VB.NET-Code, der die Informationen sammelt und sie an eine URL für ein ähnliches Zahlungs-Gateway weiterleitet.Formular POST ohne Senden-Taste

Da das Gateway auf ein Formular angewiesen ist, muss ich einen Weg finden, dies nur mit Back-End-Code zu simulieren, also meine größte Frage in Bezug auf all dies ist, ist es möglich, ein Formular (POST) einzureichen ohne dass der Benutzer auf eine Schaltfläche klickt?

Die im vorderen Ende erforderliche Form ist:

<form method="post" action="https://mdepayments.epdq.co.uk/ncol/test/orderstandard.asp/orderstandard_utf8.asp" id=form1 name=form1> 

<!-- general parameters: see Form parameters --> 
<input type="hidden" name="PSPID" value=""> 
<input type="hidden" name="ORDERID" value=""> 
<input type="hidden" name="AMOUNT" value=""> 
<input type="hidden" name="CURRENCY" value=""> 
<input type="hidden" name="LANGUAGE" value=""> 
<input type="hidden" name="CN" value=""> 
<input type="hidden" name="EMAIL" value=""> 
<input type="hidden" name="OWNERZIP" value=""> 
<input type="hidden" name="OWNERADDRESS" value=""> 
<input type="hidden" name="OWNERCTY" value=""> 
<input type="hidden" name="OWNERTOWN" value=""> 
<input type="hidden" name="OWNERTELNO" value=""> 

<!-- check before the payment: see Security: Check before the payment --> 
<input type="hidden" name="SHASIGN" value=""> 

<!-- layout information: see Look and feel of the payment page --> 
<input type="hidden" name="TITLE" value=""> 
<input type="hidden" name="BGCOLOR" value=""> 
<input type="hidden" name="TXTCOLOR" value=""> 
<input type="hidden" name="TBLBGCOLOR" value=""> 
<input type="hidden" name="TBLTXTCOLOR" value=""> 
<input type="hidden" name="BUTTONBGCOLOR" value=""> 
<input type="hidden" name="BUTTONTXTCOLOR" value=""> 
<input type="hidden" name="LOGO" value=""> 
<input type="hidden" name="FONTTYPE" value=""> 

<!-- post payment redirection: see Transaction feedback to the customer --> 
<input type="hidden" name="ACCEPTURL" value=""> 
<input type="hidden" name="DECLINEURL" value=""> 
<input type="hidden" name="EXCEPTIONURL" value=""> 
<input type="hidden" name="CANCELURL" value=""> 

<input type="submit" value="" id=submit2 name=submit2> 
</form> 

Failing Absenden des Formulars ohne Knopf, wäre es dann die gleiche Wirkung haben, wenn ich URL der Aktion umgeleitet, sobald alle versteckten Felder waren an Ort und Stelle?

+1

Mögliches Duplikat von [Wie eine POST in .net vb schicken?] (Http://stackoverflow.com/questions/6108531/how-to-send-a-post-in-net-vb) –

+0

Sie könnten die Submit-Funktion des Formulars in Javascript aufrufen. –

+0

Die URL, die ich habe, sendet keine Parameter wie im POST-Beispiel - sie sendet die Werte der versteckten Felder - wenn sie als Parameter gesendet würde, könnte ich einen String Builder erstellen, aber ich brauche etwas, das sich wie ein Formular verhält um die Werte auf die gleiche Weise zu übergeben, würde ein Formular, wenn sie versteckte Felder wären –

Antwort

1

Mit System.Net.WebClient ist der einfachste Weg zu gehen.

Dim Url As String = "https://mdepayments.epdq.co.uk/ncol/test/orderstandard.asp" 

Using Client As New WebClient 
    Dim Params As New Specialized.NameValueCollection 

    With Params 
     .Add("PSPID", "") 
     .Add("ORDERID", "") 
     '...... 
    End With 

    Dim Response As Byte() = Client.UploadValues(Url, "POST", Params) 
    Dim ResponseText As String = (New Text.UTF8Encoding).GetString(Response) 
End Using 
+0

Die 'Params'-Sammlung, die ich vermute, würde als die versteckten Felder fungieren, also kann ich das Formular ganz fallen lassen? Bedeutet das, dass wenn ein Formular einreicht, dies im Wesentlichen im Hintergrund geschieht? –

+1

Ja und ja. Vielleicht ist Params ein schlechter Variablenname. Client.UploadValues ​​() sendet die Name/Wert-Auflistung im Hauptteil der Anfrage. Es sendet sie nicht als Abfragezeichenfolge. –