Paypal API无缝结帐刷新访问令牌无法正常工作

时间:2014-06-20 09:31:29

标签: java paypal

我正在整合Paypal的无缝结账,我设法使一切正常,但是当访问令牌到期时(15分钟后)我遇到了麻烦。我使用了登录时提供的refresh_token来请求新的访问令牌,如下所示:

Map<String, String> configurationMap = new HashMap<String, String>();
Map<String, String> configurationMap = new HashMap<String, String>();
configurationMap.put("clientId","xxxxxxx");
configurationMap.put("clientSecret", "yyyyyy");
configurationMap.put("service.EndPoint", "https://api.sandbox.paypal.com");
configurationMap.put("mode", "sandbox");

APIContext apiContext = new APIContext();
apiContext.setConfigurationMap(configurationMap);

CreateFromRefreshTokenParameters param = new CreateFromRefreshTokenParameters();
param.setGrantType("refresh_token");
param.setScope("openid"); // Optional
param.setClientID("xxxx"); // these are probably not needed
param.setClientSecret("yyyy"); // these are probably not needed

Tokeninfo info = new Tokeninfo(); // Create Token info object; setting the refresh token
info.setRefreshToken(refreshToken);
info = info.createFromRefreshToken(apiContext, param);

我获得了一个新的,显然正确的访问令牌

{
  "access_token": "A015viTDABshWd.DfewYFkdCBzDc.SUqXKFubpNhazLPCHg",
  "token_type": "Bearer",
  "expires_in": 900
}

然而,当我使用这样的Paypal NVP请求发出我的SetExpressCheckout请求时:

PWD=xxxxxx&
SIGNATURE=yyyyyy&
USER=zzzzzz&
ITEMAMT=123.00&
CANCELURL=https%3A%2F%2Fwww.google.com&
AMT=123.00&
DESC=Price&
L_DESC0=Price&
RETURNURL=http%3A%2F%2Flocalhost%3A8080%2FPayPal%2FDoPayment%3FrateId%3D1901&
L_AMT0=123.00&
IDENTITYACCESSTOKEN=A015viTDABshWd.DfewYFkdCBzDc.SUqXKFubpNhazLPCHg&
METHOD=SetExpressCheckout&
L_QTY0=1&
CURRENCYCODE=EUR&
VERSION=106.0

我获得了正确的快速结账标记,但没有保留Paypal用户会话,我得到了this这样的屏幕。如果我登录,我可以完成付款,但它违背了无缝结账的目的。我应该能够使用刷新的访问令牌将会话延长到一小时。

请注意,当我使用与刷新令牌一起返回的第一个访问令牌时,我没有遇到此问题,并且无效结帐在访问令牌持续的15分钟内正常工作。

0 个答案:

没有答案