如何解决带有改造的Paypal REST Api
我正在尝试对Paypal REST api进行改造,但出现以下错误
{"name":"INVALID_REQUEST","message":"Request is not well-formed,syntactically incorrect,or violates schema.","debug_id":"2689a7ff7bf28","details":[{"field":"/purchase_units","value":"","location":"body","issue":"MISSING_REQUIRED_PARAMETER","description":"A required field / parameter is missing."},{"field":"/intent","description":"A required field / parameter is missing."}],"links":[{"href":"https://developer.paypal.com/docs/api/orders/v2/#error-MISSING_REQUIRED_PARAMETER","rel":"information_link","encType":"application/json"}]
这是请求正文
Request{method=POST,url=https://api.sandbox.paypal.com/v2/checkout/orders/?%2Fintent=CAPTURE&%2Fpurchase_units=%5B%7B%22currency_code%22%3A%22USD%22%2C%22value%22%3A%22100%22%7D%5D,tags={class retrofit2.Invocation=c.shobaky.tofahaway.orderRequest.Order() [application/json,Bearer A21AAJ-S4HTuRR7ip1zAflRxUBsIVeEkxAAVWM7ZEB7uvn8g-0GBk6Swa3gwWMIiQYBtsXUssvzKWHv6IHDHYIQjREv6ToYow,CAPTURE,[{"currency_code":"USD","value":"100"}]]}}
这是代码
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder().baseUrl("https://api.sandbox.paypal.com/v2/checkout/")
.addConverterFactory(GsonConverterFactory.create(gson)).build();
orderRequest Order = retrofit.create(orderRequest.class);
JSONArray Purchase = new JSONArray();
JSONObject Amount = new JSONObject();
try {
Amount.put("currency_code","USD");
Amount.put("value","100");
} catch (JSONException e) {
e.printStackTrace();
}
Purchase.put(Amount);
Call<String> call = Order.Order("application/json","Bearer A21AAJ-S4HTuRR7ip1zAflRxUBsIVeEkxAAVWM7ZEB7uvn8g-0GBk6Swa3gwWMIiQYBtsXUssvzKWHv6IHDHYIQjREv6ToYow","CAPTURE",Purchase);
call.enqueue(this);
}
@Override
public void onResponse(Call<String> call,Response<String> response) {
try {
Log.d("RESPONEPYPAL",call.request().toString()+response.errorBody().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<String> call,Throwable t) {
}
我通过传递客户端ID和秘密ID来使用curl获取访问令牌,因此我几乎可以确定这与授权无关,它似乎与“意图”和“购买单位”有关
更新 我在上一个请求之前使用了此请求,但也没有成功
{method=POST,url=https://api.sandbox.paypal.com/v2/checkout/orders/,Bearer A21AAJQvfCFvMKkiWA9anZaEU_hBJ0Pb_TPOQtjqtCjFc39nc_rX6Y5RsCKoYbseMjgiCeGPMhyD5Omqw2tUlgh2EZT-9kiXQ,[{"amount":{"currency_code":"USD","value":"100"}}]]}}
解决方法
您的“请求正文”不仅显示带有查询字符串参数的URL,这是错误的,而且还向PayPal发送了一个空的POST正文,这是格式正确的JSON,其中带有purchase_units
数组必须是。
cURL在Windows提示符下无法正常工作,因此我使用了Power Shell并且运行良好!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。