Итак, я встроил Stripe в свое приложение для iOS, и он отлично работает, он обрабатывает платеж, и они отображаются на панели инструментов.
Но, к сожалению, в моем приложении для Android, несмотря на то, что я получил ответ 200, заряд былУспешно, платежи не отображаются на моей панели.
Я использую okhttp, чтобы опубликовать платеж.Я совершенно сбит с толку, так как если что-то пойдет не так, он не вернется 200.
public void placeOrder(View view) {
Stripe stripe = new Stripe(getApplicationContext(), "pk_test_...");
stripe.createToken(
paymentCard,
new TokenCallback() {
public void onSuccess(Token token) {
// Send token to your server
tok = token;
new StripeCharge(token.getId()).execute();
}
public void onError(Exception error) {
// Show localized error message
Toast.makeText(getApplicationContext(),
error.getLocalizedMessage(),
Toast.LENGTH_LONG
).show();
}
}
);
}
public class StripeCharge extends AsyncTask<String, Void, String> {
String token;
public StripeCharge(String token) {
this.token = token;
}
@Override
protected String doInBackground(String... params) {
new Thread() {
@Override
public void run() {
postData(token);
}
}.start();
return "Done";
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.e("Result",s);
}
}
public void postData(String mToken) {
FormBody.Builder formBuilder = new FormBody.Builder()
.add("amount", "15000")
.add("currency", "gbp")
.add("token", mToken)
.add("shipping", "Road")
.add("receipt_email", "test@test.com")
.add("description", "Purchased from Android");
RequestBody formBody = formBuilder.build();
Request request = new Request.Builder().url(Server.ENDPOINT + "/charge")
.post(formBody)
.build();
Server.getHttpClient().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
switch (response.code()) {
case 200:
JsonObject result = new JsonParser().parse(response.body().string()).getAsJsonObject();
response.body().close();
break;
}
}
});
}