我正在尝试在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自己发送请求,但我肯定不应该这样做。
答案 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(未找到)错误。