繁体   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