2017-06-28 8 views
0

私はPayPalのAPIにアクセスして、C#.NET Winformsアプリケーションを使用して請求書をクライアントに送信しようとしていますが、私はひどく混乱しています。別のユーザーが接続するためのソリューションとして、このコードを投稿:C#PayPal REST API Winformsアプリでは、認証コードはどこにありますか?

public class PayPalClient 
{ 
    public async Task RequestPayPalToken() 
    { 
     // Discussion about SSL secure channel 
     // http://stackoverflow.com/questions/32994464/could-not-create-ssl-tls-secure-channel-despite-setting-servercertificatevalida 
     ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 

     try 
     { 
      // ClientId of your Paypal app API 
      string APIClientId = "**_[your_API_Client_Id]_**"; 

      // secret key of you Paypal app API 
      string APISecret = "**_[your_API_secret]_**"; 

      using (var client = new System.Net.Http.HttpClient()) 
      { 
       var byteArray = Encoding.UTF8.GetBytes(APIClientId + ":" + APISecret); 
       client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); 

       var url = new Uri("https://api.sandbox.paypal.com/v1/oauth2/token", UriKind.Absolute); 

       client.DefaultRequestHeaders.IfModifiedSince = DateTime.UtcNow; 

       var requestParams = new List<KeyValuePair<string, string>> 
          { 
           new KeyValuePair<string, string>("grant_type", "client_credentials") 
          }; 

       var content = new FormUrlEncodedContent(requestParams); 
       var webresponse = await client.PostAsync(url, content); 
       var jsonString = await webresponse.Content.ReadAsStringAsync(); 

       // response will deserialized using Jsonconver 
       var payPalTokenModel = JsonConvert.DeserializeObject<PayPalTokenModel>(jsonString); 
      } 
     } 
     catch (System.Exception ex) 
     { 
      //TODO: Log connection error 
     } 
    } 
} 

public class PayPalTokenModel 
{ 
    public string scope { get; set; } 
    public string nonce { get; set; } 
    public string access_token { get; set; } 
    public string token_type { get; set; } 
    public string app_id { get; set; } 
    public int expires_in { get; set; } 
} 

私は私のプロジェクトでは、コードを貼り付けることが適切であるところ、私は理解することはできません、これは先に私の少なくとも1つのステップで怖いです。 C#Winformsという新しいアプリケーションを作成したとしましょう。請求書の作成などの詳細に慣れることなく、PayPal APIをサポートするにはどのようなコードが必要ですか?プロジェクトのどこに行くのですか?私はPayPalからアプリの承認を取得する必要があることを知っているが、私はC#とPayPalの良い "Getting Started"ガイドを見つけるのが難しい。 PayPalにREST APIアプリケーションを作成しました。そのため、クライアントIDとOauth認証に渡す「秘密」があります。私はそれを行う場所を見つけることができません。

ありがとうございます。私はいくつかのC#.NETプログラミング経験を持っていますが、正直なところ私のプログラミング経験は主にVB6に戻っています。お待ち頂きまして、ありがとうございます!!

+2

サイドノート、[リクエストごとに新しいHttpClientを作成しない](https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/) – maccettura

答えて

1

ここに回答を投稿して申し訳ありませんが、現在コメントを投稿するには十分な評判がありません。しかし、これをどうやって行うのかについての一般的なアイデアを探しているなら、私は簡単な例を提供することができます。 WinFormsとPayPalのAPIを使用しているので、私は既にあなたのApp.Configファイルをセットアップしていると仮定していますか?

例 -

<!-- PayPal SDK settings --> 
    <paypal> 
    <settings> 
     <add name="mode" value="sandbox" /> 
     <add name="clientId" value="insert_clientid_key_here" /> 
     <add name="clientSecret" value="Insert_client_secret_key_here" /> 
    </settings> 
    </paypal> 

これはあなたが使用しようとしているものをフォームに入力する上であなたの方法を作ることができ、その後解決されていたら。例:

using System; 
using System.Windows.Forms; 
using PayPal.Api; 
using System.Collections.Generic; 

これでAPIコールを作成するボタンを作成できます。

例:

 private void button1_Click_1(object sender, EventArgs e) 
     { 


      // Authenticate with PayPal 
var config = ConfigManager.Instance.GetProperties(); 
var accessToken = new OAuthTokenCredential(config).GetAccessToken(); 
var apiContext = new APIContext(accessToken); 


// Make an API call 
var payment = Payment.Create(apiContext, new Payment 
{ 
    intent = "sale", 
    payer = new Payer 
    { 
     payment_method = "paypal" 
    }, 
    transactions = new List<Transaction> 
    { 
     new Transaction 
     { 
      description = "Transaction description.", 
      invoice_number = "001", 
      amount = new Amount 
      { 
       currency = "USD", 
       total = "100.00", 
       details = new Details 
       { 
        tax = "15", 
        shipping = "10", 
        subtotal = "75" 
       } 
      }, 
      item_list = new ItemList 
      { 
       items = new List<Item> 
       { 
        new Item 
        { 
         name = "Item Name", 
         currency = "USD", 
         price = "15", 
         quantity = "5", 
         sku = "sku" 
        } 

       } 
      } 
     } 
    }, 
    redirect_urls = new RedirectUrls 
    { 
     return_url = "http://x.com/return", 
     cancel_url = "http://x.com/cancel" 
    } 

}); 
      MessageBox.Show("API Request Sent to Paypal");  

     } 

完了したら、それをテストし、あなたがあなたを待ってサンドボックスの呼び出しを持っている必要があります。

関連する問題