在 ASP.NET Core 中从贝宝执行付款时出现 INTERNAL_SERVICE_ERROR

Posted

技术标签:

【中文标题】在 ASP.NET Core 中从贝宝执行付款时出现 INTERNAL_SERVICE_ERROR【英文标题】:INTERNAL_SERVICE_ERROR while executing payment from paypal in ASP.NET Core 【发布时间】:2020-12-15 13:48:05 【问题描述】:

执行paypal支付时出现以下错误:

"name":"INTERNAL_SERVICE_ERROR","message":"内部服务错误 已 发生","information_link":"https://developer.paypal.com/docs/api/payments/#errors","debug_id":"a997a9f72d8f6"

这里是支付执行的代码:

var apiContext = PaypalConfiguration.GetAPIContext();
            var paymentExecution = new PaymentExecution()  payer_id = payerId ;
            var payment = new Payment()  id = paymentId ;
            // Execute authorization.
            var executedPayment = payment.Execute(apiContext, paymentExecution);// Execute the payment
            if (executedPayment.state.ToLower() == "approved")
            
                var auth = payment.transactions[0].related_resources[0].authorization;

                var capture = new Capture()
                
                    amount = amount,
                    is_final_capture = true
                ;

                var responseCapture = auth.Capture(apiContext, capture);
                return responseCapture;
            

【问题讨论】:

【参考方案1】:

这是来自 Paypal 的内部错误。

我会将带有 debug_id 的票证提交给https://www.paypal-techsupport.com/app/home

以下是一些具有相同错误的链接。也许它会帮助你指出正确的方向。

https://www.paypal-community.com/t5/REST-APIs/INTERNAL-SERVICE-ERROR-REST-v1-payments-payment/td-p/1480048#

PayPal REST Sandbox API giving INTERNAL_SERVICE_ERROR

【讨论】:

【参考方案2】:

虽然 INTERNAL_SERVICE_ERROR 的可能原因有很多,但其中一些是暂时的,在这种情况下,目前可能是沙盒错误导致沙盒帐户电子邮件未被确认。

通过以下方式确认电子邮件:

    https://www.sandbox.paypal.com/businessprofile/settings/email -- 使用沙盒接收者邮箱登录,并重新发送确认消息。 https://www.paypal.com/signin?intent=developer&returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Fnotifications%2F -- 使用真实账户登录,从“通知”选项卡中检索确认信息。

与上述不同,您似乎正在集成已弃用的 v1 支付 API。您应该使用 v2/checkout/orders API,记录在这里:https://developer.paypal.com/docs/checkout/reference/server-integration/

您需要“设置交易”和“捕获交易”这一步。带有 intent:authorize 的中间授权步骤(在捕获之前)是可选的,仅当您对该额外步骤有非常具体且明确定义的业务需求时才执行此操作。

用于客户批准的最佳前端 UI 是:https://developer.paypal.com/demo/checkout-v4/#/pattern/server,因为它不使用重定向并将您的网站保持在后台加载。这提供了最现代的“上下文”体验。

【讨论】:

以上是关于在 ASP.NET Core 中从贝宝执行付款时出现 INTERNAL_SERVICE_ERROR的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 从贝宝帐户付款到另一个贝宝帐户

从贝宝发送付款时需要主要用户批准

如何从贝宝获得成功或失败响应?

从贝宝内取消订阅会收到啥样的 ipn 响应?

asp.net - 无法在贝宝上进行自适应付款

如何从贝宝交易中获取国家和州?