gpt4 book ai didi

c# - C# PayPal REST API Winforms 应用程序中的授权代码在哪里?

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:06 24 4
gpt4 key购买 nike

我正在尝试访问 PayPal 的 API 以通过 C#.NET 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; }
}

恐怕这至少比我提前了一步,因为我无法弄清楚在我的项目中将代码粘贴到哪里是合适的。假设您创建了一个全新的 C# Winforms 应用程序。无需深入了解创建发票等细节。我需要什么代码来支持 PayPal API 以及它在项目中的什么位置?我知道我需要从 PayPal 获得该应用程序的授权,但我无法找到适用于 C# 和 PayPal 的良好“入门”指南。我已经在 PayPal 上创建了一个 REST API 应用程序,所以我确实有一个客户端 ID 和“ secret ”来传递给 Oauth 授权——我只是找不到这样做的地方。

提前致谢。我有一些 C#.net 编程经验,但老实说,我的编程经验大部分可以追溯到 VB6,所以我有点需要大局的解释。感谢您的耐心等待!!

最佳答案

很抱歉在这里发布一个答案,但我目前没有足够的声誉来发表评论。但是,如果您仍在寻找有关如何完成此操作的总体思路,那么我可以提供一个简短的示例。由于您使用的是 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");

}

完成后,对其进行测试,您应该会有一个沙盒调用在等着您。

关于c# - C# PayPal REST API Winforms 应用程序中的授权代码在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44812270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com