Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助获得贝宝交易使用贝宝RESTAPI或任何其他方法在C#_C#_Api_Rest_Paypal_Transactions - Fatal编程技术网

需要帮助获得贝宝交易使用贝宝RESTAPI或任何其他方法在C#

需要帮助获得贝宝交易使用贝宝RESTAPI或任何其他方法在C#,c#,api,rest,paypal,transactions,C#,Api,Rest,Paypal,Transactions,我一直在反复研究如何获得交易清单(说清楚,我是PayPal商户,我想要的交易是向我们支付的),我不断发现陈旧、不推荐和误导性的信息 备份时,我的问题是: 我们使用PayPal的IPN系统在收到订单时通知我们。这在99%的情况下都非常有效。每隔一段时间,PayPal就会丢球,从不发送IPN。我有一个用VB6编写的老应用程序,我用它来查询我们的PayPal帐户并创建我自己的模拟IPN条目,但它很笨重,有时会崩溃。无论如何,我不喜欢它,因为它必须在用作Web服务器的PC上运行,并调用我个人没有编写的一

我一直在反复研究如何获得交易清单(说清楚,我是PayPal商户,我想要的交易是向我们支付的),我不断发现陈旧、不推荐和误导性的信息

备份时,我的问题是:

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

我知道你们喜欢代码示例,下面是我的内容。我很容易就能获得OAuth证书,但我一辈子都不知道如何查看向我们支付的款项(或我们发放的退款)。这个例子是我遇到的一个兔子洞,结果是Payment.List给了我我们支付的款项,而不是给我们的款项。我已经研究了这么多不同的函数/方法/你们喜欢调用的任何东西,但我找不到任何东西可以生成一个只需指定日期范围的付款清单(我需要指定事务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();
    }

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

评论中提到的PayPal NET SDK已被弃用,不应使用。如果您打算为Checkout NET SDK或付款以外的任何内容调用API-NET-SDK用例,使用直接REST API调用

获取事务列表的最佳方法是从以下站点下载CSV格式的活动日志报告:


但是,如果出于某种原因,您需要此记帐任务的API,则唯一公开可用的API是事务搜索API:--您必须为正在使用的客户端ID启用该API,并最多等待9小时(或终止令牌)如果您已经申请了访问令牌。

…如果您正在使用PayPal NET SDK,此链接应该包含所有信息…请查看Git的这些示例。谢谢。这是个令人失望的消息。我不能像下载CSV文件那样使用手动过程,因为我们每个月都有数千笔PayPal交易,我需要是一个立即发现PayPal API系统漏洞的过程,这样我们就不会忽视按时向客户发送订单。我很确定,交易搜索API就是我现在在其他人为我编写的PHP脚本中使用的。我编辑了上面的问题,但基本上,你说我需要等待9个小时是原因吗对于我在上面编辑的问题中描述的错误,或者我的代码中是否存在缺陷?我真的不知道如何在C#中提交交易搜索查询,需要一些帮助。提前感谢。注意,在我的第一条评论中,当我打算键入“PayPal的IPN系统”时,我键入了“PayPal的API系统”。我已经通过了允许编辑评论的五分钟窗口,所以我只是想澄清一下。我正在处理的整个项目是关于捕获通过PayPal的IPN系统的订单,这种情况经常发生,需要类似的东西。您的clientid的应用程序似乎没有所需的范围。它需要eturn范围
https://uri.paypal.com/services/reporting/search/read
用于请求访问令牌时的事务搜索。在中管理您的clientid应用程序的权限。启用必要的权限后,您需要等待9小时或使用例如
curl-X POST终止现有的访问令牌https://api.sandbox.paypal.com/v1/oauth2/token/terminate \-d“token=用您的令牌替换”
      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());
            }
        }

    }