2015-05-19 62 views
2

在我的新應用程序中,我必須通過支付網關進行付款, 因此,使用凌空支付網關,我有這個錯誤,Android Volley com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL握手中止

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) 

我用Google搜索它http://stackoverflow.com/questions/22564317/https-support-for-volley-android-networking-library,但我不能讓它工作, 任何幫助將非常感激,在此先感謝。

這裏是我的代碼:

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

    } 
} 
+0

您是否找到了解決方案?我的一個用戶有完全相同的錯誤。 –

+0

@benjamin,沒有媽媽在這裏碰到 – arun

+0

@arun:什麼是您用來測試的設備的Android版本? –

回答