Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 剥离多个项目的关键点_Java_Android_Stripe Payments_Stripe Api - Fatal编程技术网

Java 剥离多个项目的关键点

Java 剥离多个项目的关键点,java,android,stripe-payments,stripe-api,Java,Android,Stripe Payments,Stripe Api,我刚开始使用stripe,我在这个问题上已经坚持了一个星期了,我已经获得了实时可发布密钥和密钥,在添加卡的详细信息后,我得到了错误: 请注意:该密钥也用于我们的一个IOS项目,API在IOS上运行良好,但在android上失败,我甚至在postman上进行了测试,并添加了该卡。我不确定是代码中遗漏了什么,还是服务器问题。非常感谢你的帮助 <-- 500 Internal Server Error https://ABCD.com/api/user/card (988ms) Date

我刚开始使用stripe,我在这个问题上已经坚持了一个星期了,我已经获得了实时可发布密钥和密钥,在添加卡的详细信息后,我得到了错误: 请注意:该密钥也用于我们的一个IOS项目,API在IOS上运行良好,但在android上失败,我甚至在postman上进行了测试,并添加了该卡。我不确定是代码中遗漏了什么,还是服务器问题。非常感谢你的帮助

<-- 500 Internal Server Error https://ABCD.com/api/user/card (988ms)
    Date: Fri, 11 Dec 2020 08:57:31 GMT
D/OkHttp: Server: Apache
    Cache-Control: no-cache, private
    X-RateLimit-Limit: 60
D/OkHttp: X-RateLimit-Remaining: 59
D/OkHttp: Vary: Authorization
    Connection: close
    Transfer-Encoding: chunked
D/OkHttp: Content-Type: application/json
D/OkHttp: {"error":"Your card was declined."}

这是来自您自己的服务器的500错误,而不是Stripe的API。Stripe返回的拒绝代码不是500。您应该按照中的说明处理错误,以避免代码抛出自己的500错误。这是来自您自己的服务器的500错误,而不是Stripe的API。Stripe返回的拒绝代码不是500。您应该按照中的说明处理错误,以避免代码抛出自己的错误。
public class AddCardActivity extends AppCompatActivity {

    String Card_Token = "";
    String Card_Number="";
    CustomDialog customDialog;

    static final Pattern CODE_PATTERN = Pattern
            .compile("([0-9]{0,4})|([0-9]{4}-)+|([0-9]{4}-[0-9]{0,4})+");
    @BindView(R.id.card_form)
    CardForm cardForm;
    @BindView(R.id.addCard)
    Button addCard;
    @BindView(R.id.activity_add_card)
    LinearLayout activityAddCard;
    Context context;
    Activity activity;
    ApiInterface apiInterface = ApiClient.getRetrofit().create(ApiInterface.class);
    @BindView(R.id.toolbar)
    Toolbar toolbar;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setTheme(R.style.Mytheme);
        setContentView(R.layout.activity_add_card);
        ButterKnife.bind(this);
        context = AddCardActivity.this;
        activity = AddCardActivity.this;
        setSupportActionBar(toolbar);
        toolbar.setNavigationIcon(R.drawable.ic_back);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
        cardForm.cardRequired(true)
                .expirationRequired(true)
                .cvvRequired(true)
                .postalCodeRequired(false)
                .mobileNumberRequired(false)
                .actionLabel("Add CardDetails")
                .setup(activity);

        addCard.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                customDialog = new CustomDialog(context);
                customDialog.setCancelable(false);
                if (customDialog != null)
                    customDialog.show();
                if (cardForm.getCardNumber() == null || cardForm.getExpirationMonth() == null || cardForm.getExpirationYear() == null || cardForm.getCvv() == null) {
                    if ((customDialog != null) && (customDialog.isShowing()))
                        customDialog.dismiss();
                    displayMessage(context.getResources().getString(R.string.enter_card_details));
                } else {
                    if (cardForm.getCardNumber().equals("") || cardForm.getExpirationMonth().equals("") || cardForm.getExpirationYear().equals("") || cardForm.getCvv().equals("")) {
                        if ((customDialog != null) && (customDialog.isShowing()))
                            customDialog.dismiss();
                        displayMessage(context.getResources().getString(R.string.enter_card_details));
                    } else {
                        final String cardNumber = cardForm.getCardNumber();
                        int month = Integer.parseInt(cardForm.getExpirationMonth());
                        int year = Integer.parseInt(cardForm.getExpirationYear());
                        String cvv = cardForm.getCvv();
                        Utils.print("MyTest", "CardDetails Number: " + cardNumber +
                                "Month: " + month + " Year: " + year);

                        final Card card = new Card(cardNumber, month, year, cvv);
                        try {
                            Stripe stripe = new Stripe(AddCardActivity.this, BuildConfigure.STRIPE_PK);
                            stripe.createToken(
                                    card,
                                    new TokenCallback() {
                                        public void onSuccess(Token token) {
                                            // Send token to your server
                                            Utils.print("CardToken:", " " + token.getId());
                                            Log.e("Token", String.valueOf(token));
                                            Log.e("TokenID",token.getId());
                                            Utils.print("CardToken:", " " + token.getCard().getLast4());
                                            Card_Token = token.getId();
                                            Card_Number=card.getNumber();
                                           Long card_number= Long.parseLong(Card_Number);
                                            addCardToAccount(Card_Token,Card_Number);
                                        }

                                        public void onError(Exception error) {
                                            // Show localized error message
                                            displayMessage(context.getResources().getString(R.string.enter_card_details));
                                            if ((customDialog != null) && (customDialog.isShowing()))
                                                customDialog.dismiss();
                                        }
                                    }
                            );
                        } catch (Exception e) {
                            e.printStackTrace();
                            if ((customDialog != null) && (customDialog.isShowing()))
                                customDialog.dismiss();
                        }
                    }

                }
            }
        });

    }


public void addCardToAccount(final String cardToken, final String cardNumber) {
    Log.e("stripe_token", cardToken);
    Log.e("cardNumber", String.valueOf(cardNumber));
    Call<Message> call = apiInterface.addCard(cardToken,cardNumber);
    call.enqueue(new Callback<Message>() {
        @Override
        public void onResponse(@NonNull Call<Message> call, @NonNull Response<Message> response) {
            customDialog.dismiss();
            if (response.isSuccessful()) {
                Toast.makeText(context, "" + response.body().getMessage(), Toast.LENGTH_SHORT).show();
                finish();
            } else {
                try {
                    JSONObject jObjError = new JSONObject(response.errorBody().string());
                    Toast.makeText(context, jObjError.optString("error"), Toast.LENGTH_LONG).show();
                } catch (Exception e) {
                    Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }
        }

        @Override
        public void onFailure(@NonNull Call<Message> call, @NonNull Throwable t) {
            Toast.makeText(AddCardActivity.this, "Something went wrong", Toast.LENGTH_SHORT).show();
            customDialog.dismiss();
            Toast.makeText(context, "Something went wrong", Toast.LENGTH_SHORT).show();
        }
    });

}
   @FormUrlEncoded
@POST("api/user/card")
Call<Message> addCard(@Field("stripe_token") String stripeToken, @Field("number") String cardNumber );