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

Need help getting PayPal transactions using PayPal REST API or any other method in C#

我一直在一遍又一遍地研究如何获取交易列表(明确地说,我是 PayPal 商家,我想要的交易是向我们付款),我一直在寻找旧的、过时的和误导性信息。

备份,我的问题是:

我们使用 PayPal 的 IPN 系统在有订单时通知我们。这在 99% 的时间里都很有效。每隔一段时间,PayPal 就会失误,从不发送 IPN。我有一个用 VB6 编写的旧应用程序,我用它来查询我们的 PayPal 帐户并创建我自己的模拟 IPN 条目,但它很笨重并且有时会崩溃。无论如何我都不喜欢它,因为它必须在用作网络服务器的 PC 上 运行 并调用一堆我个人没有编写的 PHP 脚本。出于某种原因,我现在无法对程序进行更改,因此我需要用 C#.NET 中的内容替换它

我知道你们喜欢代码示例,所以这就是我所拥有的。我很容易就能让 OAuth 凭据发挥作用,但我终生无法弄清楚如何查看支付给我们的款项(或我们发出的退款)。这个例子是我遇到的问题之一,结果 Payment.List 给我的是我们支付的款项,而不是支付给我们的款项。我研究了很多不同的 functions/methods/whatever 你们喜欢给他们打电话,但我找不到任何可以产生向我们付款的清单的东西,你只需要指定一个日期范围(它没有帮助拥有一个我需要指定交易 ID 的功能,因为交易 ID 是我正在寻找的东西之一。

    private void cmdPayPalTest_Click(object sender, EventArgs e)
    {
        var config = ConfigManager.Instance.GetProperties();
        config.Add("clientId","<<PayPalclientId Goes here>>");                 
        config.Add("clientSecret", "<<PayPal clientSecret Goes here>>");
        var accessToken = new OAuthTokenCredential(config).GetAccessToken();
        var apiContext = new APIContext(accessToken);
        var bob = PayPal.Api.Payment.List(apiContext, 20, "", 0);
        var sam = bob.ConvertToJson();
    }

有谁知道现代的、未弃用的、已批准的方法来获取支付给我们作为商家的交易列表?我很沮丧,多次碰壁

编辑:

因为我在 REST API 的文档中找不到任何用于搜索交易的内容,所以我尝试添加一些代码来翻译 PayPal 为 TransactionSearch 提供的 Curl(我完全不清楚这是否是 REST 或 NVP/SOAP)。我从 Preston PHX 的以下答案中看到,也许 TransactionSearch 是我唯一的选择,但我编写的代码给了我一个错误 - “StatusCode:403, ReasonPhrase: 'Forbidden'...” 这有什么关系吗Preston PHX 的回答中提到的 9 小时?我有另一个应用程序在另一台计算机上不断 运行ning,该计算机在某些 PHP 脚本中使用 TransactionSearch。如果我的问题是这个“9 小时”指的是什么,我会暂时关闭它,我会在早上尝试我的新代码。同时,如果有人对我的 403 错误有其他解释,我很乐意听到。这是我从上面的代码中输入 Oauth 令牌 accessToken 的代码:

      private async void CurlRequest(string MrToken)
    {
        using (var httpClient = new HttpClient())
        {
            using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://api-m.paypal.com/v1/reporting/transactions?start_date=2020-01-01T00:00:00-0700&end_date=2021-05-25T23:59:59-0700&fields=all&page_size=100&page=1"))
            {
                request.Headers.TryAddWithoutValidation("Authorization", MrToken);

                var response = await httpClient.SendAsync(request);
                MessageBox.Show(response.ToString());
            }
        }

    }

响应字符串显示我提到的 403 错误。如果这意味着什么,我也很乐意提供其余的错误消息,但我认为它可能真的没有。

评论中提及的 PayPal-NET-SDK 已弃用,不应使用。如果您要对除 Checkout-NET-SDK 或 Payouts-NET-SDK 用例以外的任何内容进行 API 调用,请使用直接 REST API 调用。

获取交易列表的最佳方法是从 www.paypal.com

下载 CSV 格式的 activity 日志报告

但是,如果出于某种原因您需要 API 此会计任务,唯一公开可用的是交易搜索 API:https://developer.paypal.com/docs/api/transaction-search/v1 -- 您必须启用它对于您正在使用的客户端 ID,如果您已经使用它请求访问令牌,则最多等待 9 小时(或终止令牌)。