@Sam Here's my problem in detail.
The problem occurs on our production Clover Mini devices only, the same code snippet works perfectly fine on sandbox Mini & Station plus on production Station.
We did reproduce the error on our merchant's device with the ID of MMPGPHJ3C2EXJ and sent a device log from the help app at the following timestamp: 1493981820
The error message we are getting:
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x6aef3008: Failure in SSL library, usually a protocol error error:14077410:SSL routines:SSL23GETSERVERHELLO:sslv3 alert handshake failure (external/openssl/ssl/s23clnt.c:744 0x68532ce0:0x00000000)
The corresponding code is about paying for a freshly created order.
Snippets:
Get order created in the previous step:
mCreatedOrder = mOrderConnector.getOrder(mOrderID);
Declare json body to be sent:
JSONObject paymentParamsBody = new JSONObject();
paymentParamsBody.put("tender", new JSONObject());
paymentParamsBody.getJSONObject("tender").put("id", mPaymentTender.getId());
paymentParamsBody.put("amount", mCreatedOrder.getTotal());
Fire the http post to pay for the order
final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String url = mBaseURL + "/v3/merchants/" + mMerchant.getId() + "/orders/" + mCreatedOrder.getId() + "/payments?access_token=" + MyApplication.getAuthToken();
String json = paymentParamsBody.toString();
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder().url(url).post(body).build();
Response response = client.newCall(request).execute();