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 保险库中保存信用卡详细信息以及如何检索它们以供将来使用