2017-11-20 29 views
0

私はAmazonPay SDK for C#を使用しており、支払いフロー内に支払い方法を提供する必要があります。WebフォームからAmazonPay APIへのフォームの転記

私は支払いボタンがあり、注文参照IDを取得します。 2番目は、ページの読み込み時にSDKで提供されるAPIオブジェクトを使用して購入の詳細を設定しました。

この情報をAmazon MWSエンドポイントに、購入の詳細から収集した情報とともに投稿したいと思います。この支払いをクリックイベントで承認し、承認リクエストを投稿し、次のページで回答を得て支払いを完成させ、エラー処理のフィードバックを提供したいと考えています。 SetPurchaseDetailsの

例:承認の

public int SetPurchaseDetails(string amazonOrderReferenceId, string accessToken, int amount, string storeName, string sellerOrderID, string sellerNote, out string AddressLine1, out string AddressLine2, out string AddressLine3) 
     { 
      int ErrorCode = 0; 
      string ErrorMsg = string.Empty; 

      //Values to extract from the api calls 
      AddressLine1 = string.Empty; 
      AddressLine2 = string.Empty; 
      AddressLine3 = string.Empty; 



      try 
      { 
       SetOrderReferenceDetailsRequest orderReferenceDetailsRequest = new SetOrderReferenceDetailsRequest(); 
       orderReferenceDetailsRequest.WithAmazonOrderReferenceId(amazonOrderReferenceId) 
        .WithAmount(amount) 
        .WithSellerNote(sellerNote) 
        .WithSellerOrderId(sellerOrderID) 
        .WithStoreName(storeName); 

       OrderReferenceDetailsResponse setOrderReferenceDetailsResponse = client.SetOrderReferenceDetails(orderReferenceDetailsRequest); 
       bool orderReferenceDetailsResponseSuccess = setOrderReferenceDetailsResponse.GetSuccess(); 

       if (orderReferenceDetailsResponseSuccess == false) 
       { 
        Debug.WriteLine("OrderReferenceDetails Response Returned error: " + setOrderReferenceDetailsResponse.GetErrorCode() + setOrderReferenceDetailsResponse.GetErrorMessage()); 
        ErrorMsg = setOrderReferenceDetailsResponse.GetErrorMessage(); 
        ErrorCode = cError.ERR_AMAZONPAY_RESPONSE_FAILED; 
       } 

       ConfirmOrderReferenceRequest confirmOrderReferenceRequest = new ConfirmOrderReferenceRequest(); 
       confirmOrderReferenceRequest.WithAmazonOrderReferenceId(amazonOrderReferenceId); 

       ConfirmOrderReferenceResponse confirmOrderReferenceResponse = client.ConfirmOrderReference(confirmOrderReferenceRequest); 
       bool confirmResponseSuccess = confirmOrderReferenceResponse.GetSuccess(); 

       if (confirmResponseSuccess == false) 
       { 
        Debug.WriteLine("ConfirmOrderReference Failed: " + confirmOrderReferenceResponse.GetErrorMessage() + confirmOrderReferenceResponse.GetErrorCode()); 


       } 



       GetOrderReferenceDetailsRequest getOrderReferenceDetailsRequest = new GetOrderReferenceDetailsRequest(); 
       getOrderReferenceDetailsRequest.WithAmazonOrderReferenceId(amazonOrderReferenceId) 
        .WithAccessToken(accessToken); 
       OrderReferenceDetailsResponse getOrderReferenceDetailsResponse = client.GetOrderReferenceDetails(getOrderReferenceDetailsRequest); 

       AddressLine1 = getOrderReferenceDetailsResponse.GetAddressLine1(); 
       AddressLine2 = getOrderReferenceDetailsResponse.GetAddressLine2(); 
       AddressLine3 = getOrderReferenceDetailsResponse.GetAddressLine3(); 


      } 
      catch(Exception ex) 
      { 
       //testing 
       Debug.WriteLine(ex); 


      } 

      return ErrorCode; 

     } 

例:

public static int Authorize(string amazonOrderReferenceId, string authorizationReferenceId, decimal authorizationAmount, string CurrencyCode) 
     { 
      int ErrorCode = 0; 
      string ErrorMsg = string.Empty; 
      string authorizationState = string.Empty; 


      try 
      { 
       if (authorizationReferenceId == null) 
       { 
        ErrorMsg = "No authorization reference Id"; 
        Debug.WriteLine(ErrorMsg); 
       } 

       AuthorizeRequest authorizeRequest = new AuthorizeRequest(); 
       authorizeRequest.WithAmazonOrderReferenceId(amazonOrderReferenceId) 
        .WithAuthorizationReferenceId(authorizationReferenceId) 
        .WithAmount(authorizationAmount); 
       AuthorizeResponse authorizeResponse = client.Authorize(authorizeRequest); 
       string authorizationId = authorizeResponse.GetAuthorizationId(); 

       if(authorizationId == null) 
       { 
        ErrorMsg = ""; 
        Debug.WriteLine(ErrorMsg); 
       } 

       authorizationState = authorizeResponse.GetAuthorizationState(); 

      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine(ex); 
      } 





      return ErrorCode; 

     } 
+0

問題点を教えてください。 – hardkoded

+0

私は、APIコールから取得した情報に投稿を追加する方法を知りたいと思います。何らかのイベントにリンクする必要があるため、AuthorizeをPage_Loadに入れることはできません。しかし、私は上に作成して公開したAPIコールからページロード時に取得されるいくつかの変数にアクセスすることはできません。 –

答えて

0

あなたがポストバックでアクセスできる隠しフィールドを移入する必要があります。

aspxページ:SetPurchaseDetails方法で次に

<asp:HiddenField id="hdnAmazonOrderReferenceID" runat="server" /> 

hdnAmazonOrderReferenceID.Value=amazonOrderReferenceId; 

して認証方式では、代わりにパラメータとしてamazonOrderReferenceIdを渡すだけからそれをつかむ、このような何か非表示フィールド:

string amazonOrderReferenceId=hdnAmazonOrderReferenceID.Value; 
関連する問題