[英]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.