贝宝订单请求永远不会回来

     2023-02-22     288

关键词:

【中文标题】贝宝订单请求永远不会回来【英文标题】:PayPal Order Request never gets back 【发布时间】:2021-02-09 06:59:56 【问题描述】:

亲爱的大家, 我从payPal开始, 我已经尝试实现 SDK 提供的标准示例(c#,FW 4.6.1)

在我的服务器端方法下面

    public async static Task<PayPalHttp.HttpResponse> CreateOrder()
    
        OrdersCreateRequest oRequest = new OrdersCreateRequest();
        oRequest.Prefer("return=representation");
        //System.Net.ServicePointManager.Expect100Continue = true;
        System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
        oRequest.RequestBody(BuildRequestBodyWithMinimumFields());
        //3. Call PayPal to set up a transaction
        PayPalHttp.HttpClient oClient = PayPalClient.client();
        oClient.SetConnectTimeout(new TimeSpan(0, 0, 0, 10, 0));
        var oResponse = await oClient.Execute(oRequest);
        var result = oResponse.Result<Order>();

        return oResponse;

在这里 jquery 调用

paypal.Buttons(
    style: 
        shape: 'rect',
        color: 'blue',
        layout: 'vertical',
        label: 'pay',

    ,
    createOrder: function () 
        return fetch('/shop/paypal_test.aspx/CreateOrder', 
            method: 'post',
            headers: 
                'content-type': 'application/json'
            
        ).then(function (res) 
            return res.json();
        ).then(function (data) 
            return data.orderID; // Use the same key name for order ID on the client and server
        );
    
).render('#paypal-button-container');

问题是对 oClient.Execute 的响应永远不会返回。

PayPalClient 已完全按照 SDK 示例构建。

查看 PayPal API 调用日志,API 被正确调用,并标有绿旗。

你有什么想法吗?

提前谢谢你

【问题讨论】:

【参考方案1】:

“永远不会回来”是什么意思?你说有一个“绿旗”,这是否意味着有一个 HTTP 2xx 成功响应?响应正文中是否有id

如果您将响应正文转发到前端,则前端不应该寻找 data.orderID 键,因为除非您提供它,否则不会有这样的键。这是用于前端的更好示例,其内容为 data.id : https://developer.paypal.com/demo/checkout/#/pattern/server

请注意,该示例还包括 onApprove 函数中的提取。您需要实现这样的路由来捕获您的订单,否则将不会创建交易。

【讨论】:

【参考方案2】:

亲爱的, 我终于找到了解决办法。

如前所述,API 调用后,在 developer.paypal 网站上,相关调用已被标记为绿色标志,表示调用已正确进行。

然后,我研究了服务器代码,以及如何管理任务。

异步调用嵌入在私有方法中,并由“等待”响应的同步方法调用。

这样一切正常

这里是允许例程工作而不被停止到“client.Execute(oRequest)”的sn-p代码。

[WebMethod(EnableSession = true)]
public static PayPalCheckoutSdk.Orders.Order SetupTransaction()

    data.tessutigenovataddei.com.Order oOrder = null;
    //save order in database.
    oOrder = CreateOrderWithPaypal();

    OrdersCreateRequest oRequest = new OrdersCreateRequest();
    oRequest.Prefer("return=representation");

    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
    oRequest.RequestBody(BuildRequestBodyWithMinimumFields(oOrder));

    PayPalHttp.HttpClient oClient = PayPalClient.client();
    oClient.SetConnectTimeout(new TimeSpan(0, 0, 0, 10, 0));
    var oResponseTask = SetupTransactionAsync(oClient, oRequest);

    oResponseTask.Wait();

    return oResponseTask.Result.Result<PayPalCheckoutSdk.Orders.Order>();


private async static Task<PayPalHttp.HttpResponse> SetupTransactionAsync(PayPalHttp.HttpClient client, OrdersCreateRequest request)

    SynchronizationContext.SetSynchronizationContext(null);
    PayPalHttp.HttpResponse oResponse = await client.Execute(request);

    return oResponse;

感谢您的支持

【讨论】:

HttpClient GetStringAsync - 它永远不会回来

】HttpClientGetStringAsync-它永远不会回来【英文标题】:HttpClientGetStringAsync-Itnevercomesback【发布时间】:2012-03-2619:14:16【问题描述】:新的ASP.NETWebAPIHttpClient给了我一些奇怪的结果。这是我的代码:classProgramstaticasyncvoidMain(string[]args)v... 查看详情

贝宝直接付款

】贝宝直接付款【英文标题】:PayPalDirectPayments【发布时间】:2011-08-3120:26:44【问题描述】:我正在用ASP.Net4.0C#开发一个电子商务网站。我想使用PayPal接收付款,但通过信用卡/借记卡,这样客户就永远不会离开我的网站。请为此... 查看详情

为啥 HTTP 请求永远不会通过异步等待返回?

】为啥HTTP请求永远不会通过异步等待返回?【英文标题】:WhydoHTTPrequestsneverreturnwithasyncawait?为什么HTTP请求永远不会通过异步等待返回?【发布时间】:2019-01-1619:23:52【问题描述】:我正在尝试从在IIS8.5上运行的ASP.NET应用程序... 查看详情

客户关闭贝宝网站时不会触发 IPN

】客户关闭贝宝网站时不会触发IPN【英文标题】:IPNisnotfiredwhencustomerclosespaypalsite【发布时间】:2013-07-0720:48:38【问题描述】:我的网站可以选择让客户通过贝宝付款。完成订单后,客户将被重定向到贝宝网站。如果客户付款,I... 查看详情

猫鼬承诺永远不会到达 .then()

】猫鼬承诺永远不会到达.then()【英文标题】:Mongoosepromisenevergetsto.then()【发布时间】:2021-03-0415:36:23【问题描述】:我正在使用q并且我有多个mongoose.exec()承诺永远不会到达代码的.then()部分,所以永远不要让q解决。无法弄清楚... 查看详情

Facebook 请求永远不会被执行

】Facebook请求永远不会被执行【英文标题】:FacebookRequestNeverGetsExecuted【发布时间】:2013-08-1909:07:54【问题描述】:我正在尝试获取也使用相同应用的用户的Facebook好友。“是时候让其他使用此应用的朋友了”总是打印出来但是结... 查看详情

Phonegap iOS ajax 请求永远不会完成

】PhonegapiOSajax请求永远不会完成【英文标题】:PhonegapiOSajaxrequestnevercompletes【发布时间】:2015-02-0907:05:49【问题描述】:我有一个phonegap应用程序,它连接到Web服务并使用http基本身份验证进行身份验证。它是使用phonegap构建的,... 查看详情

当测试包含 HTTP 请求时,Quickspec 测试永远不会成功执行

】当测试包含HTTP请求时,Quickspec测试永远不会成功执行【英文标题】:QuickspectestnevergetsexecutedsuccessfullywhenthetestincludesanHTTPrequest【发布时间】:2018-09-1023:06:41【问题描述】:我目前正在为我正在开发的OSX框架的一小部分编写测试... 查看详情

RequestFactory 请求 (AutoBeanCodexImpl.doCoderFor) 永远不会完成并使用 100% cpu

】RequestFactory请求(AutoBeanCodexImpl.doCoderFor)永远不会完成并使用100%cpu【英文标题】:RequestFactoryrequest(AutoBeanCodexImpl.doCoderFor)neverfinishanduse100%cpu【发布时间】:2012-09-1309:52:38【问题描述】:我们在tomcat上部署了一个GWT应用程序,使用... 查看详情

Magento 在贝宝付款前下订单

】Magento在贝宝付款前下订单【英文标题】:Magentoplacingorderbeforepaypalpayment【发布时间】:2015-01-1920:53:54【问题描述】:我在magento中的paypal集成有问题。如果我选择贝宝标准付款并确认订单,我会正确重定向到贝宝网站进行付款... 查看详情

贝宝快递“订单汇总”页面

】贝宝快递“订单汇总”页面【英文标题】:Paypalexpress"ordersummary"page【发布时间】:2014-04-2020:00:44【问题描述】:我正在使用Express结帐集成替换免费和标准paypal按钮。我相信我已经完成了大部分工作,但我还有2个悬而... 查看详情

QNetworkAccessManager 线程永远不会完成

...2012-11-0620:43:06【问题描述】:我知道在4.8版中,每个http请求都有自己的线程来运行。我正在做一个链接检查器应用程序,它在一段时间循环中执行大量http请求,我在Windows任务管理器中注意到我的应用程序随着时间的推移使用了... 查看详情

可以永远不会调用 onLocationChanged 吗?

...取一个唤醒锁,然后启动定位服务,该服务从GPS和NETWORK请求位置更新。在第一个onLocationChanged上,我将位置发送给请求者,停 查看详情

Laravel - 将贝宝付款链接到订单 ID

】Laravel-将贝宝付款链接到订单ID【英文标题】:Laravel-linkpaypalpaymenttoorderid【发布时间】:2020-07-2015:41:55【问题描述】:我正在使用它来处理贝宝付款:https://artisansweb.net/paypal-payment-gateway-integration-in-laravel/我的页面有这个网址:... 查看详情

Game Center 排行榜得分请求的完成处理程序永远不会为没有得分的玩家调用

】GameCenter排行榜得分请求的完成处理程序永远不会为没有得分的玩家调用【英文标题】:GameCenterleaderboardscorerequest\'scompletionhandlerisnevercalledforplayersthathavenoscore【发布时间】:2014-04-1708:59:22【问题描述】:我的游戏实现了一个自... 查看详情

贝宝快递结账 |错误的订单 ID:“x”

】贝宝快递结账|错误的订单ID:“x”【英文标题】:PaypalExpresscheckout|WrongorderID:“x”【发布时间】:2018-08-1803:10:25【问题描述】:我正在经营一家magento商店,但遇到了PayPal的问题。正在付款,但未创建订单。我在日志中收到此... 查看详情

如何更改贝宝上的“感谢您的订单”消息?

】如何更改贝宝上的“感谢您的订单”消息?【英文标题】:HowdoIchangethe"Thanksforyourorder"messageonpaypal?【发布时间】:2013-07-0101:59:51【问题描述】:我们有一个基本上是销售数据的新应用。在我们在测试服务器上运行的订... 查看详情

如何批准创建订单响应中的贝宝批准链接?

】如何批准创建订单响应中的贝宝批准链接?【英文标题】:Howtoapprovethepaypalapprovallinkinthecreateorderresponse?【发布时间】:2020-06-2302:09:07【问题描述】:我在服务器端(nodejs)创建了paypal的OrderCreateRequest,并且我有批准链接“https... 查看详情