2

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();
        }

    }
}
arun
  • 3,497
  • 3
  • 14
  • 9

1 Answers1

0

I've encountered the same issue, in my case was a server side problem (unable to verify the first certificate). Check this:

https://steveliles.github.io/android_ssl_certificate_not_trusted.html

Hope this help.

Paolo Moschini
  • 352
  • 3
  • 3