Сейф PayPal Android Sdk Vault

Мое требование - хранить данные кредитной карты в хранилище Paypal с помощью Android. Я перешел по этой ссылке

https://github.com/paypal/PayPal-Java-SDK

https://github.com/paypal/PayPal-Android-SDK

https://developer.paypal.com/docs/integration/direct/rest-vault-overview/

нет упоминания о том, как сохранить кредит с помощью Android sdk. Думаю, это можно сделать с помощью их Rest API. Как мне этого добиться в Android?


person karan vs    schedule 15.09.2016    source источник
comment
вы умеете генерировать токен доступа?   -  person Vishal Patoliya ツ    schedule 15.09.2016


Ответы (2)


Вы можете хранить кредитную карту в PayPal с помощью vault api. Выполните следующие действия.

Шаг 1. Создайте токен доступа с помощью запроса токена OAuth

Попробуйте в почтальоне

      Url :- https://api.sandbox.paypal.com/v1/oauth2/token

      Headers :- (Key,Value)

      1.(Accept , application/json)
      2.(Accept-Language , en_US)
      3.(Content-Type , application/x-www-form-urlencoded)
      4.(Authorization , Basic<Space>(here your code generated by postman))

Примечание. - Создайте базовую аутентификацию в почтовом ящике, выбрав вкладку авторизации ==> Базовая аутентификация и введите секрет клиента PayPal и идентификатор клиента.

      Body :- (Key,Value)
      1.(grant_type,client_credentials)

Примечание. - Выберите x-www-form-urlencoded на вкладке тела в почтальоне.

Шаг 2. Сохраните кредитную карту с помощью valut api Попробуйте в почтальоне

      Url :- https://api.sandbox.paypal.com/v1/vault/credit-cards

      Headers :- (Key,Value)

      1.(Accept , application/json)
      2.(Accept-Language , en_US)
      3.(Content-Type , application/x-www-form-urlencoded)
      4.(Authorization , Bearer(your Access Token))

      Body : (Json)

{
  "payer_id": "user12345",
  "type": "visa",
  "number": "4111111111111111",
  "expire_month": "11",
  "expire_year": "2018",
  "first_name": "Joe",
  "last_name": "Shopper",
  "billing_address": {
    "line1": "52 N Main ST",
    "city": "Johnstown",
    "state": "OH",
    "postal_code": "43210",
    "country_code": "US"
  }
}

Примечание. - Выберите необработанную вкладку в теле в почтальоне.

person Vishal Patoliya ツ    schedule 15.09.2016
comment
Я успешно сделал это с помощью почтальона. Как мне сделать это в Android? - person karan vs; 15.09.2016
comment
Я уже делал это с помощью почтальона. Как мне сделать эти вызовы api в Android? - person karan vs; 15.09.2016
comment
@karanvs какую сетевую библиотеку вы используете в настоящее время? - person Vishal Patoliya ツ; 15.09.2016
comment
Вы просите библиотеку для PayPal? - person karan vs; 15.09.2016
comment
Я использую Retrofit и в настоящее время следую futurestud.io/tutorials/ - person karan vs; 15.09.2016
comment
вы пробовали это при модернизации, чем где возникает проблема? @karanvs - person Vishal Patoliya ツ; 15.09.2016
comment
Позвольте нам продолжить это обсуждение в чате. - person karan vs; 15.09.2016
comment
Мне не повезло. Это дает мне INTERNAL_SERVICE_ERROR. Вот мой вопрос: stackoverflow.com/questions/41299782/ - person Nirmalsinh; 26.12.2016

Спасибо Вишалу за его помощь. Я смог решить эту проблему с помощью модернизации (статического добавления заголовков).

1. Сначала получите значение заголовка авторизации:

    String clientId = "your client id";
    String clientSecret = "your client secret";
    String credentials = clientId + ":" + clientSecret;
    String basic =
            "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
    Log.e("Authorization",basic);

Скопируйте это значение из журнала, оно будет использовано позже в нашем решении.

2. Создайте модель ответа в соответствии с этим json:

 {
  "scope":"https://api.paypal.com/v1/payments/.* https://api.paypal.com/v1/vault/credit-card https://api.paypal.com/v1/vault/credit-card/.*",
  "access_token":"Access-Token",
  "token_type":"Bearer",
  "app_id":"APP-6XR95014SS315863X",
   "expires_in":28800
 }

3. Сделайте метод вызова retorfit следующим образом:

    @Headers({
        "Accept: application/json",
        "Accept-Language : en_US",
        "Content-Type : application/x-www-form-urlencoded",
        "Authorization:your basic string value here"
        })
    @POST("https://api.sandbox.paypal.com/v1/oauth2/token/")
    Call<AuthenticationTokenModel> getAuthentionToken(@Query("grant_type") String grant_type);

4. Наконец, позвоните как:

     ApiInterface apiInterface= ApiClient.getClient().create(ApiInterface.class);
    apiInterface.getAuthentionToken("client_credentials").enqueue(new Callback<AuthenticationTokenModel>() {
        @Override
        public void onResponse(Call<AuthenticationTokenModel> call, Response<AuthenticationTokenModel> response) {
            Log.e("response",response.body().getAccess_token());
        }

        @Override
        public void onFailure(Call<AuthenticationTokenModel> call, Throwable t) {
            Log.e("response",t.getMessage());
        }
    });

Спасибо.

Отредактировано:

Вы также можете добавлять динамические заголовки к запросам в Retrofit 2.

Следуйте этому: https://futurestud.io/tutorials/retrofit-add-custom-request-header

person karan vs    schedule 15.09.2016