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

     2023-02-22     39

关键词:

【中文标题】C# PayPal REST API Winforms 应用程序中的授权代码在哪里?【英文标题】:Where does authorization code go in C# PayPal REST API Winforms app? 【发布时间】:2017-12-02 09:29:45 【问题描述】:

我正在尝试访问 PayPal 的 API 以通过 C#.NET Winforms 应用程序向客户提交发票,但我非常困惑。另一位用户发布此代码作为连接解决方​​案:

public class PayPalClient

    public async Task RequestPayPalToken() 
    
        // Discussion about SSL secure channel
        // http://***.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 和“秘密”来传递 Oauth 授权 - 我只是找不到这样做的地方。

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

【问题讨论】:

旁注,don't create a new HttpClient for every request. 【参考方案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");     

        

一旦完成,测试一下,你应该有一个沙盒调用在等着你。

【讨论】:

需要帮助使用 PayPal REST API 或 C# 中的任何其他方法获取 PayPal 交易

】需要帮助使用PayPalRESTAPI或C#中的任何其他方法获取PayPal交易【英文标题】:NeedhelpgettingPayPaltransactionsusingPayPalRESTAPIoranyothermethodinC#【发布时间】:2021-08-1500:17:12【问题描述】:我一直在反复研究如何获取交易清单(需要说明的... 查看详情

Paypal c# REST API 要求未记录的配置部分

】Paypalc#RESTAPI要求未记录的配置部分【英文标题】:Paypalc#RESTAPIasksforanundocumentedconfigurationsection【发布时间】:2013-10-2018:20:36【问题描述】:我正在努力破解BattleHackLondon并且遇到了一个烦人的问题。用于c#的PayPalSDK似乎不太正常... 查看详情

如何使用 REST API c# .net 调用 Paypal IPN

】如何使用RESTAPIc#.net调用PaypalIPN【英文标题】:HowdoinvokethePaypalIPNusingtheRESTAPIc#.net【发布时间】:2017-08-3117:44:09【问题描述】:我在调用PayPalIPN时遇到问题。我不知道要给出哪个URL或我打算给出哪个URL。我在互联网上到处寻找帮... 查看详情

Paypal REST api 调用适用于 cURL,但不适用于 C# 代码

】PaypalRESTapi调用适用于cURL,但不适用于C#代码【英文标题】:PaypalRESTapicallworksfromcURLbutnotfromC#code【发布时间】:2013-05-2901:41:48【问题描述】:我正在尝试从我的代码中调用Paypalapi。我设置了沙盒帐户,当我使用curl时它可以工作... 查看详情

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

】C#PayPalRESTAPIWinforms应用程序中的授权代码在哪里?【英文标题】:WheredoesauthorizationcodegoinC#PayPalRESTAPIWinformsapp?【发布时间】:2017-12-0209:29:45【问题描述】:我正在尝试访问PayPal的API以通过C#.NETWinforms应用程序向客户提交发票,... 查看详情

如何在 C# Winforms 应用程序中发送 PayPal REST API 退款?

】如何在C#Winforms应用程序中发送PayPalRESTAPI退款?【英文标题】:HowdoyousendaPayPalRESTAPIRefundinaC#Winformsapp?【发布时间】:2018-08-0712:15:21【问题描述】:我在网上找到的用于在C#中实现PayPalRESTAPI的文档非常少。我已经完成了获取访问... 查看详情

ASP.NET MVC C# PayPal Rest API - UNAUTHORIZED_PAYMENT

】ASP.NETMVCC#PayPalRestAPI-UNAUTHORIZED_PAYMENT【英文标题】:【发布时间】:2014-03-2804:27:26【问题描述】:我正在尝试将paypalrestapi集成到我的Web应用程序中。在挖掘了所有可用的资源之后,我被卡住了。我正在使用此处的paypalrestapi示例... 查看详情

使用贝宝 REST C#

】使用贝宝RESTC#【英文标题】:UsingPaypalRESTC#【发布时间】:2011-06-1813:12:08【问题描述】:我想使用Paypal认证服务https://www.paypal-labs.com/files/PayPal_Authentication_Service.pdf但是文档缺少一些信息,<formmethod=postaction=https://api-3tpaypal.com/... 查看详情

PayPal Rest API - 使用更新的交易信息执行付款

】PayPalRestAPI-使用更新的交易信息执行付款【英文标题】:PayPalRestAPI-ExecutePaymentwithupdatedtransactioninfo【发布时间】:2013-11-0713:22:20【问题描述】:我正在使用C#和PayPalRestAPI来获得批准的付款并执行它。但是,我需要更新与已批准... 查看详情

使用 rest api 捕获付款时发生 Paypal 内部服务器错误

】使用restapi捕获付款时发生Paypal内部服务器错误【英文标题】:PaypalInternalServerErrorwhencapturingpaymentwithrestapi【发布时间】:2013-08-1201:41:22【问题描述】:我在基于C#的项目中遇到了这个问题,但我也可以使用curl重现它。代码几天... 查看详情

使用 Paypal REST API 时需要 API 证书

】使用PaypalRESTAPI时需要API证书【英文标题】:NeedofAPI-CertificatewhenusingPaypalRESTAPI【发布时间】:2017-08-2801:02:58【问题描述】:我有一个商家帐户并在我的网上商店使用PayPal-REST-API。所以我有一个ClientID和一个Secret来使REST-API工作。... 查看详情

使用 Paypal REST API 创建付款

】使用PaypalRESTAPI创建付款【英文标题】:CreateapaymentwithPaypalRESTAPI【发布时间】:2014-05-2406:41:49【问题描述】:这就是我从我的web应用创建Paypal付款的方式:paypal.configure(paypal_config.api);varpayment="intent":"sale","payer":"payment_method":"paypa... 查看详情

了解 PayPal 的 REST API

】了解PayPal的RESTAPI【英文标题】:UnderstandingPayPal\'sRESTAPI【发布时间】:2015-05-2001:51:29【问题描述】:与我一起工作的一群人需要为我们的客户提供一个简单的发票系统。我们每个人都有自己的PayPal帐户。我们希望能够生成发票... 查看详情

Paypal 快速结账与 PayPal REST API 的集成

】Paypal快速结账与PayPalRESTAPI的集成【英文标题】:PaypalexpresscheckoutintegrationwithPayPalRESTAPI【发布时间】:2018-04-0111:27:58【问题描述】:我正在尝试将Paypal快速结帐集成与PayPalRESTAPI集成。JS文件如下所示:paypal.Button.render(env:\'sandbox... 查看详情

从 paypal Rest API 访问我的 paypal 交易列表

】从paypalRestAPI访问我的paypal交易列表【英文标题】:AccessingmypaypaltransactionlistfromthepaypalRestAPI【发布时间】:2015-07-1414:41:36【问题描述】:我正在尝试从paypalRestAPI访问我的交易列表。一世想查看我发送和接收的所有付款,例如最... 查看详情

访问 PayPal 沙箱 Rest API 时响应 401

】访问PayPal沙箱RestAPI时响应401【英文标题】:Response401whenaccessingPayPalsandboxRestAPI【发布时间】:2015-05-0912:43:25【问题描述】:我能够在https://api.sandbox.paypal.com/v1/oauth2/token请求访问令牌并发送POST以使用给定的访问令牌在https://api.s... 查看详情

PayPal Rest API - 创建发票时出现 401

】PayPalRestAPI-创建发票时出现401【英文标题】:PayPalRestAPI-401whencreatinganinvoice【发布时间】:2014-11-0917:01:34【问题描述】:我在尝试创建PayPal发票时收到401错误。我正在使用nodejsRESTAPI:https://github.com/paypal/rest-api-sdk-nodejs我对创建... 查看详情

Paypal REST API 订阅集成错误

】PaypalRESTAPI订阅集成错误【英文标题】:PaypalRESTAPISubscriptionintegrationerror【发布时间】:2021-02-0115:38:33【问题描述】:我正在尝试使用以下文档通过PAYPALRESTAPI集成Paypal订阅https://developer.paypal.com/docs/subscriptions/integrate/(基础集成... 查看详情