In my new app i have to do the payment via payment gateway, So while calling payment gateway using volley, I have got this error,
com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x632a40e0: Failure in SSL library, usually a protocol error
error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol (external/openssl/ssl/s23_clnt.c:714 0x5b66cd74:0x00000000)
I have googled it http://stackoverflow.com/questions/22564317/https-support-for-volley-android-networking-library
, but I cant make it work,
Any help will be much appreciated, Thanks in advance.
Here's my Code:
public class PaymentActivity extends ActionBarActivity {
String merchantId = "xxxxxxxxxxxxx";
String key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
String message = "123456|AED|1000.00|http://www.merchantmoney.com/shop/success.jsp|http://www.merchantmoney.com/shop/fail.jsp|01|Internet|||||||||||||||||||||||||||||||||||||||||||||";
String url = "https://test.timesofmoney.com/direcpay";
private Button paymentButton;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment);
paymentButton = (Button) findViewById(R.id.payment_btn);
progressBar = (ProgressBar) findViewById(R.id.progress);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
EncDec encDec = new EncDec(key);
String encryptMessage = encDec.encrypt(message);
final String requestParameter = merchantId + "|" + encryptMessage;
final PaymentRequest request = new PaymentRequest();
request.setRequestParameter(requestParameter);
paymentButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
progressBar.setVisibility(View.VISIBLE);
PaymentManager.executePaymentService(getBaseContext(), request,
listener);
}
});
}
PaymentListener listener = new PaymentListener() {
@Override
public void onResponse(PaymentResponse response) {
}
@Override
public void onInterNetConnectionFailured() {
}
@Override
public void onErrorResponse(VolleyError error) {
}
};
}
PaymentManager:
public class PaymentManager {
public static void executePaymentService(Context context,
final PaymentRequest request,
final BaseResponseListener<PaymentResponse> responseListener) {
String url = "https://test.timesofmoney.com/direcpay";
ErrorListener errorListener = new ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
responseListener.onErrorResponse(volleyError);
}
};
Listener<String> listener = new Response.Listener<String>() {
@Override
public void onResponse(String string) {
responseListener.onResponse(new Gson().fromJson(string,
PaymentResponse.class));
}
};
MyStringRequest loginReq = new MyStringRequest(Method.POST, url,
listener, errorListener) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("requestParameter", request.getRequestParameter());
return hashMap;
}
};
try {
NetworkManager.executeStringReq(context, loginReq);
} catch (NoInternetConnectionException e) {
e.printStackTrace();
responseListener.onInterNetConnectionFailured();
}
}
}