Не работает бесшовная проверка обновленного токена доступа API Paypal

#java #paypal

#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
}
 

Однако, когда я делаю запрос SetExpressCheckout, используя запрос Paypal NVP, подобный этому:

 PWD=xxxxxxamp;
SIGNATURE=yyyyyyamp;
USER=zzzzzzamp;
ITEMAMT=123.00amp;
CANCELURL=https:%2F/www.google.comamp;
AMT=123.00amp;
DESC=Priceamp;
L_DESC0=Priceamp;
RETURNURL=http:%2F/localhost:8080/PayPal/DoPayment?rateId=1901amp;
L_AMT0=123.00amp;
IDENTITYACCESSTOKEN=A015viTDABshWd.DfewYFkdCBzDc.SUqXKFubpNhazLPCHgamp;
METHOD=SetExpressCheckoutamp;
L_QTY0=1amp;
CURRENCYCODE=EURamp;
VERSION=106.0
 

Я получаю правильный токен экспресс-проверки, но сеанс пользователя Paypal не сохраняется, и я получаю такой экран. Если я войду в систему, я смогу завершить платеж, но это противоречит цели бесшовной проверки. Я должен иметь возможность продлить сеанс до одного часа, используя обновленные токены доступа.

Обратите внимание, что у меня нет этой проблемы, когда я использую первый токен доступа, который возвращается вместе с токеном обновления, и бесшовная проверка работает нормально в течение 15 минут, которые длится токен доступа.