I want to make an online store application but I don't have my own website, I tried to integrate Paypal gateway but I couldn't I always get Bad Request:/now I I am trying to integrate Wix REST Api with android using retrofit but I also get a bad request! and when I made some changes the application crashed, here is the desired request form
curl 'https://www.wixapis.com/stores/v2/orders' \
--data-binary '{
"order": {
"totals": {
"subtotal": "10",
"total": "10"
},
"billingInfo": {
"address": {
"email": "Ivanushka@example.com"
}
},
"shippingInfo": {
"shipmentDetails": {
"address": {
"email": "Ivanushka@example.com"
}
}
},
"paymentStatus": "PAID",
"lineItems": [
{
"quantity": 1,
"name": "my product",
"priceData": {
"price": "10"
}
}
],
"channelInfo": {
"type": "WEB"
}
}
}' \
-H 'Content-Type: application/json' \
-H 'Authorization: nlWBX5XkeD0rsXxVLhAkJgme- OZjkku8LzPG2LmVZBs.eyJpbnN0YW5jZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OWU3ZjljIiwiYXBwRGVmSWQiOiIyMmJlZjM0NS0zYzViLTRjMTgtYjc4Mi03NGQ0MDg1MTEyZmYiLCJtZXRhU2l0ZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OWU3ZjljIiwic2lnbkRhdGUiOiIyMDIwLTA5LTE3VDEwOjQyOjM2LjYwMVoiLCJ1aWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOGFiNy1mNGY1M2FmNTE0NGQiLCJwZXJtaXNzaW9ucyI6Ik9XTkVSIiwiZGVtb01vZGUiOmZhbHNlLCJzaXRlT3duZXJJZCI6IjZmYmQ3ZjVmLWRmNTktNDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsInNpdGVNZW1iZXJJZCI6IjZmYmQ3ZjVmLWRmNTktNDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsImV4cGlyYXRpb25EYXRlIjoiMjAyMC0wOS0xN1QxNDo0MjozNi42MDFaIiwibG9naW5BY2NvdW50SWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOGFiNy1mNGY1M2FmNTE0NGQifQ'
I first sent the data using FieldMap annotation but I got Bad Request so I used JsonArray but I got TransactionTooLarge exception, here is the code
String Url = "https://www.wixapis.com/";
Gson gson = new GsonBuilder().setLenient().create();
Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(Url).build();
orderRequest Order = retrofit.create(orderRequest.class);
JsonObject Data = new JsonObject();
JsonObject totals = new JsonObject();
JsonArray lineItems = new JsonArray();
JsonObject itemsObject = new JsonObject() ;
JsonObject priceData = new JsonObject();
priceData.addProperty("price","10");
itemsObject.addProperty("quantity","1");
itemsObject.addProperty("name","Product");
itemsObject.add("priceData",priceData);
lineItems.add(itemsObject);
totals.addProperty("total","10");
totals.addProperty("subtotal","10");
Data.add("totals",totals);
Data.add("lineItems",lineItems);
JsonObject bigData = new JsonObject();
bigData.add("order",bigData);
Order.Order("application/json","nlWBX5XkeD0rsXxVLhAkJgme-OZjkku8LzPG2LmVZBs.eyJpbnN0YW5jZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OW" +
"U3ZjljIiwiYXBwRGVmSWQiOiIyMmJlZjM0NS0zYzViLTRjMTgtYjc4Mi03NGQ0MDg1MTEyZmYiLCJtZXRhU2l0ZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OWU3" +
"ZjljIiwic2lnbkRhdGUiOiIyMDIwLTA5LTE3VDEwOjQyOjM2LjYwMVoiLCJ1aWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOGFiNy1mNGY1M2FmNTE0NGQiLCJwZXJtaXNzaW9ucyI6Ik9" +
"XTkVSIiwiZGVtb01vZGUiOmZhbHNlLCJzaXRlT3duZXJJZCI6IjZmYmQ3ZjVmLWRmNTktNDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsInNpdGVNZW1iZXJJZCI6IjZmYmQ3ZjVmLWRmNTkt" +
"NDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsImV4cGlyYXRpb25EYXRlIjoiMjAyMC0wOS0xN1QxNDo0MjozNi42MDFaIiwibG9naW5BY2NvdW50SWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOG" +
"FiNy1mNGY1M2FmNTE0NGQifQ",
bigData).enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
try {
Log.d("RESPONSE",response.errorBody().string()+call.request().toString());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
Here is the retrofit interface if needed
@POST("stores/v2/orders")
Call<String> Order(@Header("Content-Type") String ContentType, @Header("Authorization")String Auth, @Body JsonObject Order );
You are adding bigdata in bigdata in your json object
i think you need to replace this
JsonObject bigData = new JsonObject();
bigData.add("order",bigData);
with this
JsonObject bigData = new JsonObject();
bigData.add("order",Data );