簡體   English   中英

在沙盒中使用 PayPal .NET SDK 驗證 PayPal Webhook 調用

[英]Validating PayPal Webhook calls with PayPal .NET SDK in Sandbox

我一直在嘗試設置 PayPal Webhooks(在沙盒模式下)以接收有關拒絕和成功付款的通知。 我的問題是我無法進行驗證。 關於我的嘗試的一些細節:

  1. 該應用程序是一個 OWIN 自托管 Web API 2.
  2. 作為 Azure Web 應用程序托管,也在 Azure 上進行了測試。
  3. 我在 Paypal 儀表板中將 Paypal Webhook 接收器 URL 設置為我在 Azure 上的端點的 URL。
  4. 我使用來自 Paypal 儀表板的 Paypal Webhooks 模擬器向 Azure 端點發送消息。

我嘗試通過兩種方式監聽 Webhook 調用:

  1. ASP.NET Webhook 接收器 ( http://blogs.msdn.com/b/webdev/archive/2015/09/04/introducing-microsoft-asp.net-webhooks-preview.aspx ),它不起作用。 我收到錯誤消息“WebHook 驗證失敗:”
  2. 嘗試創建一個 Web API 端點來接收和驗證請求,也沒有用。 代碼在這里:

     [HttpPost] public async Task<IHttpActionResult> PaymentCaptureCompleted() { // Get the received request's headers NameValueCollection nvc = new NameValueCollection(); foreach (var item in Request.Headers) { nvc.Add(item.Key, string.Join(",", item.Value)); } // Get the received request's body var requestBody = await Request.Content.ReadAsStringAsync(); var isValid = WebhookEvent.ValidateReceivedEvent(Api, nvc, requestBody, ConfigurationManager.AppSettings["paypal.webhook.id"]); if (isValid) { return Ok(); } else { return BadRequest("Could not validate request"); } }

當然還有很多細節,但我不確定需要多少信息才能回答我的問題。 讓我知道你需要什么,我會編輯這個問題。

請參考PayPal Dot Net SDK以獲得代碼示例。 https://github.com/paypal/PayPal-NET-SDK

另外,如果您的模擬器不起作用,要排除webhook或天藍色的配置是否有問題,您可能要使用Runscope。 Ypu可以將Runscope存儲桶配置為Webhook終結點,如果在那里收到Webhook通知,則可能需要在Azure配置中進行更改。

真的不要去看文檔。 它很舊,但物體仍然不錯。 您可以使用WebhookEvent類。 只需在控制器中使用此操作即可。

public JsonResult Index(WebhookEvent event)
{
    // event has all the data 
    return Json(new { success = true });
}

驗證不適用於模擬中的IPN沙箱或Webhook事件。 在PayPal文檔中有說明。 驗證僅適用於PayPal的生產環境。

在 try catch 中包裝 WebhookEvent.ValidateReceivedEvent。 如果調用失敗,它可以掛起而不用掛起。 異常將向您顯示錯誤。

  try
  {
    var isValid = WebhookEvent.ValidateReceivedEvent(apiContext, nv, requestBody, hookId);
  }
  catch(Exception e)
  {

  }

在我的例子中,異常顯示“無法加載受信任的證書”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM