Hallo
Ich entwickel einen Webshop mit Java und Struts.
Um die Bezahlung per Kreditkarte zu ermöglichen muß ich eine Form mit Daten (bei mir hidden fields) per POST an den Bankserver schicken.
Im Moment mach ich es so, daß ich beim Aufruf der Seite die betreffende Action (die ja auch in der form angegeben wurde, und die auch in der Struts-config steht) ausführe, und die hidden Fields automatisch füllen lasse.
Die Fields jag ich vorher auch noch durch nen Parser, der unsichere Zeichen in sichere umwandelt (wird von der bank so gewünscht)
Beim Submit mach ich folgendes.
Ich erstelle einen String aus
...
Das Ergebnis jag ich durch encodeRedirectURL() und schicke ihn mit sendRedirect() ab.
Kommt dabei dann genau das selbe raus, als hätte ich die BankURL in der Form als action angegeben? (Das geht ja nicht, weil ich die Form nicht mit meiner eigenen Action füllen könnte)
Oder gibts da Unterschiede? Vielleicht in der Zeichencodierung?
Ich entwickel einen Webshop mit Java und Struts.
Um die Bezahlung per Kreditkarte zu ermöglichen muß ich eine Form mit Daten (bei mir hidden fields) per POST an den Bankserver schicken.
Im Moment mach ich es so, daß ich beim Aufruf der Seite die betreffende Action (die ja auch in der form angegeben wurde, und die auch in der Struts-config steht) ausführe, und die hidden Fields automatisch füllen lasse.
Die Fields jag ich vorher auch noch durch nen Parser, der unsichere Zeichen in sichere umwandelt (wird von der bank so gewünscht)
Code:
/*-----------------------------------------------------------------------*
* html Encode non safe ascii chars < 127
*-----------------------------------------------------------------------*/
final private static String SAFE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789_.-";
final private static String htmlEncode(String str) {
int len = str.length();
StringBuffer encoded = new StringBuffer(len*6);
for(int i=0; i<len; i++) {
if(SAFE_CHARS.indexOf(str.charAt(i)) >= 0) {
encoded.append(str.charAt(i));
} else {
int c = (int) str.charAt(i);
if(c <= 0x7F) {
encoded.append("&#x" + Integer.toHexString(c) + ";");
} else {
encoded.append(str.charAt(i));
}
}
}
return encoded.toString();
}
Beim Submit mach ich folgendes.
Ich erstelle einen String aus
Code:
https://www.BankURL.cgi?Param1&Param2&Param3
Das Ergebnis jag ich durch encodeRedirectURL() und schicke ihn mit sendRedirect() ab.
Code:
response.sendRedirect(response.encodeRedirectURL(ResponseQuery));
Oder gibts da Unterschiede? Vielleicht in der Zeichencodierung?