[英]Validating PayPal Webhook calls with PayPal .NET SDK in Sandbox
我一直在嘗試設置 PayPal Webhooks(在沙盒模式下)以接收有關拒絕和成功付款的通知。 我的問題是我無法進行驗證。 關於我的嘗試的一些細節:
我嘗試通過兩種方式監聽 Webhook 調用:
嘗試創建一個 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.