Paypal IPN 示例代码没有 ActionResult。如果没有视图,我该如何提供网址?
Posted
技术标签:
【中文标题】Paypal IPN 示例代码没有 ActionResult。如果没有视图,我该如何提供网址?【英文标题】:Paypal IPN sample code has no ActionResult. How am i meant to give a url if there is no view? 【发布时间】:2017-09-02 15:58:22 【问题描述】:这是 ipn 的 paypal 示例代码。我已经使用它几天了,但我无处可去。我不知道我该叫什么。在上一个问题中,我问了一些人说你不调用 Receive 方法。所以这让我开始思考 Paypal 将如何知道去哪里。 (即使用什么方法。)
public class IPNController : Controller
[HttpPost]
public HttpStatusCodeResult Receive()
//Store the IPN received from PayPal
LogRequest(Request);
//Fire and forget verification task
Task.Run(() => VerifyTask(Request));
//Reply back a 200 code
return new HttpStatusCodeResult(HttpStatusCode.OK);
private void VerifyTask(HttpRequestBase ipnRequest)
var verificationResponse = string.Empty;
try
var verificationRequest = (HttpWebRequest)WebRequest.Create("https://www.sandbox.paypal.com/cgi-bin/webscr");
//Set values for the verification request
verificationRequest.Method = "POST";
verificationRequest.ContentType = "application/x-www-form-urlencoded";
var param = Request.BinaryRead(ipnRequest.ContentLength);
var strRequest = Encoding.ASCII.GetString(param);
//Add cmd=_notify-validate to the payload
strRequest = "cmd=_notify-validate&" + strRequest;
verificationRequest.ContentLength = strRequest.Length;
//Attach payload to the verification request
var streamOut = new StreamWriter(verificationRequest.GetRequestStream(), Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
//Send the request to PayPal and get the response
var streamIn = new StreamReader(verificationRequest.GetResponse().GetResponseStream());
verificationResponse = streamIn.ReadToEnd();
streamIn.Close();
catch ( Exception exception)
//Capture exception for manual investigation
ProcessVerificationResponse(verificationResponse);
private void LogRequest(HttpRequestBase request)
// Persist the request values into a database or temporary data store
private void ProcessVerificationResponse(string verificationResponse)
if (verificationResponse.Equals("VERIFIED"))
// check that Payment_status=Completed
// check that Txn_id has not been previously processed
// check that Receiver_email is your Primary PayPal email
// check that Payment_amount/Payment_currency are correct
// process payment
else if (verificationResponse.Equals("INVALID"))
//Log for manual investigation
else
//Log error
没有ActionResult,所以我打算如何提供一个URL。 我想到了这个,但它似乎返回无效
public ActionResult IPN()
Receive()
我已经问过之前的问题,但似乎仍然无法理解这个 IPN。
【问题讨论】:
【参考方案1】:对于任何看到这个的人来说,这是一个没有经验的我,我所要做的就是 返回 Ok() 所以我的操作结果如下所示:
public ActionResult IPN()
Receive();
return Ok();
【讨论】:
以上是关于Paypal IPN 示例代码没有 ActionResult。如果没有视图,我该如何提供网址?的主要内容,如果未能解决你的问题,请参考以下文章
Paypal IPN 协议:为啥示例中没有发送空的 HTTP 200 响应?