PayPal Android SDK 保险库

Posted

技术标签:

【中文标题】PayPal Android SDK 保险库【英文标题】:PayPal Android Sdk Vault 【发布时间】:2017-01-23 08:22:57 【问题描述】:

我的要求是使用 android 将信用卡详细信息存储在 Paypal 保险库中。 我点击了这些链接

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 中实现这一点?

【问题讨论】:

你能生成访问令牌吗? 【参考方案1】:

您可以使用 vault api 将信用卡存储在 paypal 中按照以下步骤操作

第 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 客户端密码和客户端 ID,在邮递员中生成基本身份验证。

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

注意:- 在 postman 的 body 选项卡中选择 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"
  

注意:- 在邮递员的正文中选择原始标签。

【讨论】:

我使用邮递员成功地做到了这一点。我如何在 Android 中做到这一点? 我已经使用邮递员完成了这项工作。如何在 Android 中进行这些 api 调用? @karanvs 你目前使用的是哪个网络库? 你在向图书馆索要贝宝吗? 我正在使用 Retrofit,目前正在关注这个,futurestud.io/tutorials/…【参考方案2】:

感谢 vishal 的帮助。我能够通过改造(静态添加标题)来解决这个问题。

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

【讨论】:

以上是关于PayPal Android SDK 保险库的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Android 在 Paypal 保险库中保存信用卡详细信息以及如何检索它们以供将来使用

PayPal 保险库存储 - 安全地发送信用卡信息

如何解决 Paypal 保险库信用卡收费失败

使用 Braintree DropUI 将 PayPal 帐户链接到保险库的正确方法

用于定期付款的贝宝保险库

paypal Vault 是不是支持 SEK(瑞典)货币?