2

我正在尝试在 ASP.Net 网站中实现 Paypal。我已经安装了 RestAPISDK,并且一直在关注 Paypal 的本指南(https://devtools-paypal.com/guide/pay_paypal/dotnet)以及查看此处的参考资料(https://developer.paypal .com/webapps/developer/docs/api/#execute-an-approved-paypal-payment

到目前为止一切顺利,但是从 Paypal 的网站返回后,我无法按照他们的文档执行付款。

该指南说使用以下代码

Dictionary<string, string> sdkConfig = new Dictionary<string, string>();
sdkConfig.Add("mode", "sandbox");
string accessToken = "TOKEN";
APIContext apiContext = new APIContext(accessToken);
apiContext.Config = sdkConfig;

Payment payment = new Payment("PAYMENT ID");
PaymentExecution pymntExecution = new PaymentExecution();
pymntExecution.payer_id = ("DYRNAJP829GTN");
Payment executedPayment = pymnt.Execute(apiContext,pymntExecution);

但是 Payment 没有接受支付 ID 的构造函数。

Rest API Reference 说要使用以下方法

Payment payment = Payment.Get(accessToken, "Payment ID");

但是,Payment.Get 已折旧。如果我仍然使用它,我只会得到一个异常,说服务器以 404 响应。

我们应该改用什么?我找不到任何最新的文档来为我指明正确的方向。我想我可能必须使用 HttpClient 自己发送请求,但我当然不应该这样做。

4

2 回答 2

2

我同意,当您尝试使用自己的沙盒商店执行付款时,C# 示例不起作用并产生相同的 404 异常。

你需要做的是:

Payment payment = Payment.Get(context, paymentID);

其中 context 是您的 apiContext 并且 paymentID 是从 PayPal 的返回 url 传回的 id。

然后你需要:

var paymentExecution = new PaymentExecution
                {
                    payer_id = payerId
                };

最后你可以打电话:

payment.Execute(context, paymentExecution);

这将返回一个支付对象,该对象的“状态”应为已批准...

于 2015-05-04T10:37:12.427 回答
1

不推荐使用 PaymentHistory 检索方法,取而代之的是 Payment.List() 方法。要检索单笔付款,您仍然使用Payment.Get方法。

您确定您在此处为第二个参数传递了有效的付款 ID 吗?当带有传入 ID 的付款不存在时,将引发 404(未找到)错误。

于 2013-10-31T10:24:22.343 回答