404 не найдена ошибка при попытке создать транзакцию BrainTree - PullRequest
0 голосов
/ 12 марта 2019

привет всем, я пытаюсь совершить транзакцию с Braintree и использую сервер рельсов Heroku. Я не могу получить client_token, и когда я пытаюсь совершить транзакцию, я получаю 404 не найден. Я использую демо-приложение из репозитория на GitHub. это соответствующий код из демонстрационного приложения.

import com.braintreepayments.demo.models.ClientToken;
import com.braintreepayments.demo.models.Transaction;

import retrofit.Callback;
import retrofit.http.Field;
import retrofit.http.FormUrlEncoded;
import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.http.Query;

public interface ApiClient {

    @GET("/client_token")
    void getClientToken(@Query("customer_id") String customerId, @Query("merchant_account_id") String merchantAccountId, Callback<ClientToken> callback);

    @FormUrlEncoded
    @POST("/nonce/transaction")
    void createTransaction(@Field("nonce") String nonce, Callback<Transaction> callback);

    @FormUrlEncoded
    @POST("/nonce/transaction")
    //@POST("/checkout")
    void createTransaction(@Field("nonce") String nonce, @Field("merchant_account_id") String merchantAccountId, Callback<Transaction> callback);

    @FormUrlEncoded
    @POST("/nonce/transaction")
    void createTransaction(@Field("nonce") String nonce, @Field("merchant_account_id") String merchantAccountId, @Field("three_d_secure_required") boolean requireThreeDSecure, Callback<Transaction> callback);
}

и в транзакции деятельности

 private void sendNonceToServer(PaymentMethodNonce nonce) {
        Callback<Transaction> callback = new Callback<Transaction>() {
            @Override
            public void success(Transaction transaction, Response response) {
                if (transaction.getMessage() != null &&
                        transaction.getMessage().startsWith("created")) {
                    setStatus(R.string.transaction_complete);
                    setMessage(transaction.getMessage());
                } else {
                    setStatus(R.string.transaction_failed);
                    if (TextUtils.isEmpty(transaction.getMessage())) {
                        setMessage("Server response was empty or malformed");
                    } else {
                        setMessage(transaction.getMessage());
                    }
                }
            }

            @Override
            public void failure(RetrofitError error) {
                Log.d("error",error.getResponse().getReason());
                setStatus(R.string.transaction_failed);
                setMessage("Unable to create a transaction. Response Code: " +
                        error.getResponse().getStatus() + " Response body: " +
                        error.getResponse().getBody());
            }
        };

        if (Settings.isThreeDSecureEnabled(this) && Settings.isThreeDSecureRequired(this)) {
            DemoApplication.getApiClient(this).createTransaction(nonce.getNonce(),
                    Settings.getThreeDSecureMerchantAccountId(this), true, callback);
        } else if (Settings.isThreeDSecureEnabled(this)) {
            DemoApplication.getApiClient(this).createTransaction(nonce.getNonce(),
                    Settings.getThreeDSecureMerchantAccountId(this), callback);
        } else if (nonce instanceof CardNonce && ((CardNonce) nonce).getCardType().equals("UnionPay")) {
            DemoApplication.getApiClient(this).createTransaction(nonce.getNonce(),
                    Settings.getUnionPayMerchantAccountId(this), callback);
        } else {
            DemoApplication.getApiClient(this).createTransaction(nonce.getNonce(), Settings.getMerchantAccountId(this),
                    callback);
        }
    }

как я уже сказал, я получаю client_token просто отлично, поэтому я знаю, что базовый URL-адрес в порядке, просто при отправке одноразового номера я получаю ошибку 404 not found при попытке совершить транзакцию.

спасибо за ваше время, если вам нужна дополнительная информация, которую я с удовольствием предоставлю.

edit: Я также получаю сообщение об ошибке, что учетная запись продавца не включена в белый список, и я понятия не имею, связано ли это с этим.

edit2 Я тоже не смог получить client_token, я ошибся, используя ключ токенизации

1 Ответ

6 голосов
/ 13 марта 2019

Полное раскрытие: я работаю в Braintree.Если у вас есть какие-либо дополнительные вопросы, свяжитесь с support .Кроме того, у меня нет репутации, чтобы оставить это как комментарий вместо ответа.Тем не менее, это должно указать вам правильное направление.

Как правило, мы возвращаем 404 - Не найдена ошибка , когда запись, с которой вы пытаетесь работать, может 'не может быть найдено.Например, если вы пытаетесь передать клиента, а идентификатор клиента недействителен.Это часто проявляется, когда вы пытаетесь передать идентификатор клиента в токен клиента до того, как будет вызов создания клиента , или до того, как клиент будет сохранен в хранилище.Тем не менее, пожалуйста, не стесняйтесь обращаться к нашей команде поддержки , и мы будем рады покопаться в журналах нашего сервера и добраться до сути проблемы.

Что касается вашей проблемы с учетными записями торговцев, занесенных в белый список, мы никоим образом не требуем внесения в белый список учетных записей торговцев, и у нас нет сообщений об ошибках, указывающих на то, что учетная запись продавца должна быть внесена в белый список на стороне Braintree.,Тем не менее, вы должны убедиться, что учетная запись продавца, которую вы передаете в клиентский токен, существует в вашем шлюзе.Вы можете проверить название своих торговых счетов, перейдя в раздел «Учетная запись»> «Информация о торговом счете»> прокрутите вниз до раздела «Торговый счет».Если вы все еще сталкиваетесь с проблемами, не могли бы вы отправить журнал полного сообщения об ошибке вместе с вашим торговым идентификатором в нашу службу поддержки ?Мы не рекомендуем делиться информацией об этом типе учетной записи на общедоступных форумах, но будем рады помочь в дальнейшем устранении неполадок, если это необходимо.

...