You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PayPal Webhooks时,WebClient请求失败而HttpClient成功的原因排查

PayPal Webhook签名验证:WebClient调用失败而HttpClient成功的解决方法

问题分析

同样的请求JSON和access_token,使用WebClient调用PayPal的webhook签名验证接口始终返回FAILURE,但HttpClient调用正常返回SUCCESS,核心差异在于两者对请求头和内容编码的处理细节不同:

  • HttpClient的StringContent会自动在Content-Type头中追加; charset=utf-8,明确告知服务器内容的编码格式
  • WebClient仅设置了content-type: application/json,未指定字符编码,PayPal的验证接口可能对编码标识有严格要求
  • 此外,WebClient的UploadString在某些场景下可能对字符串做额外转义,导致请求内容与预期不符

修复后的WebClient代码

var client = new WebClient();
client.Headers.Add("authorization", "Bearer " + accessToken);
// 明确指定Content-Type的字符编码
client.Headers.Add("content-type", "application/json; charset=utf-8");
client.Encoding = Encoding.UTF8;
string response = client.UploadString("https://api.sandbox.paypal.com/v1/notifications/verify-webhook-signature", "POST", paypalVerifyRequestJsonString);

额外排查建议

  • 抓包对比两个请求的完整内容(包括请求头、请求体),确认是否存在其他差异(比如请求体的编码、字符转义)
  • 检查paypalVerifyRequestJsonString是否包含特殊字符,WebClient是否对其做了额外处理(比如自动转义Unicode字符)

内容的提问来源于stack exchange,提问作者Programmer Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:40:02