RestAPISDK .Net执行付款

时间:2013-10-31 09:52:49

标签: c# asp.net paypal

我正在尝试在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已折旧。如果我还是使用它,我只会得到一个Exception,说服务器用404响应。

我们应该使用什么呢?我找不到任何最新的文档,指出我正确的方向。 我想我可能不得不使用HttpClient自己发送请求,但我肯定不应该这样做。

2 个答案:

答案 0 :(得分:2)

我同意,当您尝试使用自己的沙箱存储执行付款时,C#示例无效并产生相同的404异常。

您需要做的是:

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

其中context是您的apiContext,paymentID是来自PayPal的返回网址传回的ID。

然后你需要:

var paymentExecution = new PaymentExecution
                {
                    payer_id = payerId
                };

最后你可以打电话:

payment.Execute(context, paymentExecution);

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

答案 1 :(得分:1)

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

您确定在这里传递第二个参数的有效付款ID吗?使用传入ID的付款不存在时,将引发404(未找到)错误。