[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
HTTPS POST - modifying Example 5 - Help needed
Hi,
I am new to the list and HTTPAPI. I am trying to modify example 5 to
do a HTTPS POST to a site. I have the following working Java program
that I am trying to adapt (sorry if the code does not render correctly
in the email, also, I have changed the Tamper Proof Seal and Merchant
ID for privacy, otherwise, rest of the code is unchanged) -
package com.bluepay;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
/**
*
*/
public class TestWebLink
{
public static void main(String[] args)
{
try
{
URL myURL = null;
myURL = new
java.net.URL("[1]https://secure.bluepay.com/interfaces/bp10emu");
String params =
"TAMPER_PROOF_SEAL=1234abcd1234abcd1234abcd1234abcd&MERCHANT=123456789
012&MODE=TEST&TRANSACTION_TYPE=SALE&AMOUNT=100&REBILLING=0&REB_FIRST_D
ATE=&REB_EXPR=&REB_CYCLES=&REB_AMOUNT=&AMOUNT_TAX=&AMOUNT_TIP=&ORDER_I
D=&INVOICE_ID=&CUSTOM_ID=&CC_NUM=4111111111111111&CC_EXPIRES=0614&CVCC
VV2=123&NAME=Test+Transaction&ADDR1=123+Foo+Street&ADDR2=&AVS_ALLOWED=
&CVV2_ALLOWED=&AUTOCAP=0&CITY=Bluepay+Town&STATE=IL&ZIPCODE=60653&COMM
ENT=&PHONE=&EMAIL=&RRNO=&MISSING_URL=nu&APPROVED_URL=nu&DECLINED_URL=n
u&";
String paramsLen = String.valueOf(params.length());
HttpsURLConnection hcon = null;
hcon = (HttpsURLConnection) myURL.openConnection();
hcon.setAllowUserInteraction(false);
hcon.setUseCaches(false);
hcon.setDoInput(true);
hcon.setDoOutput(true);
hcon.setInstanceFollowRedirects(false);
hcon.setRequestMethod("POST");
hcon.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
hcon.setRequestProperty("Content-Length", paramsLen);
OutputStream os = hcon.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
// send request
osw.write(params);
osw.flush();
osw.close();
int rescode = hcon.getResponseCode();
if (rescode != 302) {
// Response other than 302 not expected -
return
return;
}
// Response returned is in Location Header
String loc = hcon.getHeaderField("Location");
System.out.println("Raw Location Data: " + loc);
}
catch (Exception ex)
{
System.out.println("Exception: " + ex.toString());
System.exit(1);
}
}
}
The above, when run on my i5 (V5R4), gives the following response -
> java com.bluepay.TestWebLink
Raw Location Data:
nu?INVOICE_ID=123456789012&BANK_NAME=&PAYMENT_ACCOUNT=xxxx
xxxxxxxx1111&AUTH_CODE=&CARD_TYPE=VISA&AMOUNT=100.00&REBID=&AVS=_&ORDE
R_ID=10
0043659302&CARD_EXPIRE=0614&Result=DECLINED&RRNO=100043659302&CVV2=_&P
AYMENT_
TYPE=CREDIT&MESSAGE=Declined%20Sale
I am trying to get the same response using the following RPG code -
* Test 1 for Bluepay
H DFTACTGRP(*NO) ACTGRP(*NEW) BNDDIR('HTTPAPI')
D/copy qrpglesrc,httpapi_h
D incoming PR 10I 0
D descriptor 10I 0 value
D data 8192A options(*varsize)
D datalen 10I 0 value
D rc s 10I 0
D msg s 52A
D CRLF C CONST(x'0d25')
D data S 1024A
D retdata S 32766A
D retlen S 10I 0
D nextpos S 10I 0 inz(1)
/free
*inlr = *on;
data = 'TAMPER_PROOF_SEAL=1234abcd1234abcd1234abcd1234abcd&' +
'MERCHANT=123456789012&MODE=TEST&TRANSACTION_TYPE=SALE&'
+
'AMOUNT=100&REBILLING=0&REB_FIRST_DATE=&REB_EXPR=&REB_CYCLES=&' +
'REB_AMOUNT=&AMOUNT_TAX=&AMOUNT_TIP=&ORDER_ID=&INVOICE_ID=&' +
'CUSTOM_ID=&CC_NUM=4111111111111111&CC_EXPIRES=0614&CVCCVV2=123&'+
'NAME=Test+Transaction&ADDR1=123+Foo+Street&ADDR2=&AVS_ALLOWED=&'+
'CVV2_ALLOWED=&AUTOCAP=0&CITY=Bluepay+Town&STATE=IL&' +
'ZIPCODE=60653&COMMENT=&PHONE=&EMAIL=&RRNO=&MISSING_URL=nu&' +
'APPROVED_URL=nu&DECLINED_URL=nu&' + CRLF;
rc =
http_url_post_raw('https://secure.bluepay.com/interfaces/bp10emu':
%addr(data): %len(%trimr(data)):
1: %paddr('INCOMING'));
// http response other than 302 not expected, error...
if ((rc <> 1) and (rc <> 302));
msg = http_error;
dsply msg;
return;
endif;
// convert the data we just received to EBCDIC
if (retlen > 1);
http_xlate(retlen: retdata: TO_EBCDIC);
endif;
return;
/end-free
P*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
P* this procedure will receive the raw data received from UPS
P*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
P incoming B
D incoming PI 10I 0
D descriptor 10I 0 value
D data 8192A options(*varsize)
D datalen 10I 0 value
C* Make sure we don't overflow the string:
c eval retlen = (nextpos + datalen) - 1
c if retlen > %size(retdata)
c eval
datalen=datalen-(retlen-%size(retdata))
c endif
C* If there is nothing to write, return THAT...
c if datalen < 1
c return 0
c endif
C* Here we add any data sent to the end of our 'retdata' string:
c eval %subst(retdata: nextpos) =
c %subst(data:1:datalen)
c eval nextpos = nextpos + datalen
c* We always return the amount of data that we wrote. Note
C* that if http-api sees that we didn't write as much data as
C* it sent us, it'll abort the process with an error message.
c return datalen
P E
And this is the response that I receive -
EVAL retdata
RETDATA =
....5...10...15...20...25...30...35...40...45...50...55...60
1 '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><he'
61 'ad><title>302 Moved</title></head><body><h1>Moved</h1><p'
121 '>The document has moved <a
href="/interfaces/wlcatch?Result='
181
'MISSING&MESSAGE=Missing%20MERCHANT&Missing=MERCHANT"'
241 '>here</a>.</p></body></html> '
301 '
'
According to the vendor, this response is sent when the request being
sent to them is not properly URL encoded. What am I doing wrong here
Thanks and Regds
The information contained in this electronic communication and any accompanying
document is confidential, may be
attorney-client privileged, and is intended only for the use of the addressee.
It is the property of Ryder System,
Inc. Unauthorized use, disclosure or copying of this communication, or any part
of it, is strictly prohibited and
may be unlawful. If you have received this communication in error, please noti
fy the sender immediately by return
email, and destroy this communication andall copies of it, including all attach
ments. Electronic communication
may be susceptible to data corruption, interception and unauthorized tampering
and Ryder disclaims all liability
of any kind for such actions or any consequences that may arise directly or ind
irectly therefrom.
References
1. https://secure.bluepay.com/interfaces/bp10emu
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------