2017-10-22 13 views
2

.NET SDK (https://www.nuget.org/packages/PayPal)를 사용하여 PayPal REST API를 사용하여 내 웹 사이트에 PayPal 지불을 통합합니다. 내 웹 사이트가 Microsoft Azure의 App Service로 실행 중입니다. PayPal 샌드 박스를 사용하도록 구성된 테스트 슬롯과 Live 자격 증명을 사용하는 프로덕션 슬롯 (구성 설정은 앱 설정에 있으며 슬롯 특정)을 가지고 있습니다.모든 것이 Sandbox에서 작동하지만 PayPal Live를 사용하여 IdentityException을받습니다.

모든 것이 Sandbox에서 정상적으로 작동하며 라이브 구성을 사용하여 인증하고 액세스 토큰을 얻을 수 있지만 아무 것도 처리하지 않으면 PayPal.IdentityException (결제 계획 및 약정을 시도 함)을 받았습니다. 나는 IdentityExceptionResponse (또는 Details)을 보면,이 얻을 :

더 파고
{"error":"invalid_token","error_description":"The token passed in was not found in the system"} 

, 생성되는 ApiContext가 AccessToken 세트가있는 것 같다,하지만 구성 속성은 null입니다. API 요청 (PayPalResource.LastRequestDetails.Value)을 보면 라이브 구성을 사용 중이지만 api.sandbox.paypal.com이 아닌 실제 API로 요청을 보냅니다.

이 외에도 수동으로 Config 사전을 구성보다는 사용자 지정 설정 섹션에서 자동으로 생성 할 ConfigManager를 사용
public static APIContext Authenticate() 
{ 
    string clientId = ConfigurationManager.AppSettings["PayPalClientId"]; 
    string clientSecret = ConfigurationManager.AppSettings["PayPalSecret"]; 
    string mode = ConfigurationManager.AppSettings["PayPalMode"]; 

    var config = new Dictionary<string, string>(); 
    config.Add("mode", mode); 
    config.Add("clientId", clientId); 
    config.Add("clientSecret", clientSecret); 

    accessToken = new OAuthTokenCredential(config).GetAccessToken(); 
    return new APIContext(accessToken); // <--- problem here 
} 

, 이것은 .NET 다음이 다음과 같이 내가 설정하는 내 ApiContext에 문제가 될 것으로 보인다 SDK 문서를 매우 자세히 설명합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

여기서 문제는 APIContext 생성자로 전달되는 모든 것이 accessToken입니다. Web.config 또는 App.config의 사용자 지정 구성 섹션에서 설정하지 않고 APIContext은 기본적으로 샌드 박스 API를 사용합니다.

return new APIContext(accessToken) { Config = config }; // <---- fixed 
+0

감사합니다 :

이 솔루션은 명시 적으로 개체 이니셜 라이저를 사용하여 구성 속성을 설정하는 것입니다! 웹 전체를 검색 한 후에이 문제에 대한 유일한 대답을 얻었습니다. 가능한 경우 정답으로 표시하십시오. –