- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Stripe.Net 来处理付款。当我开始测试“charge.refund”webhook 时,我在后面的代码中得到 NULL 发票属性,但发票值存在于 Stripe webhook 事件中,并且我确认发票也存在仪表板。
注意到 Stripe.Net 中的版本和配置的 webhook API 不同。
仪表板 Webhook API 版本:2017-08-15
Stripe.Net版本:16.12.0.0(支持2018-02-06)。
这是 Stripe webhook 事件
这是中断代码(charge.Invoice.SubscriptionId 中断为空引用)
以前有人遇到过这个问题吗?
谢谢
最佳答案
查看source code for the Stripe.Mapper<T>.MapFromJson
// the ResponseJson on a list method is the entire list (as json) returned from stripe.
// the ObjectJson is so we can store only the json for a single object in the list on that entity for
// logging and/or debugging
public static T MapFromJson(string json, string parentToken = null, StripeResponse stripeResponse = null)
{
var jsonToParse = string.IsNullOrEmpty(parentToken) ? json : JObject.Parse(json).SelectToken(parentToken).ToString();
var result = JsonConvert.DeserializeObject<T>(jsonToParse);
// if necessary, we might need to apply the stripe response to nested properties for StripeList<T>
ApplyStripeResponse(json, stripeResponse, result);
return result;
}
public static T MapFromJson(StripeResponse stripeResponse, string parentToken = null)
{
return MapFromJson(stripeResponse.ResponseJson, parentToken, stripeResponse);
}
private static void ApplyStripeResponse(string json, StripeResponse stripeResponse, object obj)
{
if (stripeResponse == null)
{
return;
}
foreach (var property in obj.GetType().GetRuntimeProperties())
{
if (property.Name == nameof(StripeResponse))
{
property.SetValue(obj, stripeResponse);
}
}
stripeResponse.ObjectJson = json;
}
使用 JSON.Net 反序列化 JSON,
事实是 StripeCharge.Invoice
property is marked with [JsonIgnore]
attribute 。
#region Expandable Invoice
/// <summary>
/// ID of the invoice this charge is for if one exists.
/// </summary>
public string InvoiceId { get; set; }
[JsonIgnore]
public StripeInvoice Invoice { get; set; }
[JsonProperty("invoice")]
internal object InternalInvoice
{
set
{
StringOrObject<StripeInvoice>.Map(value, s => this.InvoiceId = s, o => this.Invoice = o);
}
}
#endregion
最后如何 InternalInvoice
属性通过StringOrObject<T>
映射
StringOrObject<StripeInvoice>.Map(value, s => this.InvoiceId = s, o => this.Invoice = o);
在类定义中可以看到
internal static class StringOrObject<T>
where T : StripeEntityWithId
{
public static void Map(object value, Action<string> updateId, Action<T> updateObject)
{
if (value is JObject)
{
T item = ((JToken)value).ToObject<T>();
updateId(item.Id);
updateObject(item);
}
else if (value is string)
{
updateId((string)value);
updateObject(null);
}
}
}
如果传递的值是string
,它将设置 Invoice
对象属性为 null
else if (value is string)
{
updateId((string)value);
updateObject(null);
}
因此,您描述的行为是根据显示的数据和代码设计的。
您可能需要提取 InvoiceId
并尝试检索它(发票)以便使用其成员。
关于c# - 处理 charge.refund webhook 时 Stripe.Net 发票属性为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51458690/
如果成员(member)正在订阅和/或一次付款并且他们要求退款、撤销或部分退款,那么下面的脚本是否适用于通过 IPN 发送的 IPN 消息? if($payment_status == "Refund
我在测试应用内结算时遇到了问题。 (使用 Google Play In-app Billing Version 3 API) 问题: 已退款的应用内购买仍存在于购买列表中,该列表由 BillingCl
我能够成功执行以下 API /v2/checkout/orders /v2/checkout/orders/{order_id}/authorize /v2/checkout/orders/{orde
因此,在我们的应用中,我们不会立即收费,而只是创建将charge设置为capture的带区false,这样就不会立即向客户收费。 问题:尽管我们以未捕获的方式创建了收费,但我们是否仍应为客户发出Ref
我正在使用 Paypal NVP Refund Api 进行退款 Paypal 交易。一切正常,但当我尝试调用 api 时,它给出了以下响应。 Array ( [TIMESTAMP] => 2
我正在尝试编写代码来为自适应付款进行部分退款。 虽然我读过https://developer.paypal.com/docs/classic/api/adaptive-payments/Refund_
我正在使用来自自适应支付 API 的预批准和延迟链式支付。 我从中使用 api 的测试业务帐户也是主要接收方帐户。 在使用预批准启动延迟付款后,我得到了生成的付款码。主要收款人准确地收到钱款。我的
Internet 上的大多数问题都集中在 Order、OrderItem 上。设计一个全面处理在线零售所有方面(订单、订单项目、返回、退款、换货)的数据库几乎没有什么问题。 我只是基本了解这个数据模型
我拥有多个附属网站,我目前正在开发一款与 GA 访问者的点击和销售相匹配的软件。这让我可以直接在 GA 中查看我的收入、交易数量和最佳广告商,而不必汇总来自不同网络的不同佣金。 但是,有时广告商会拒绝
我正在使用 Stripe.Net 来处理付款。当我开始测试“charge.refund”webhook 时,我在后面的代码中得到 NULL 发票属性,但发票值存在于 Stripe webhook 事件
当我尝试使用 PayerID 调用 RefundTransaction API 方法时,出现错误“13606 功能未启用。您未启用此功能。”。 这是什么意思?有没有办法启用它? 要复制你可以去http
我在 PHP 中使用 PayPal API 来创建交易,既可以使用信用卡,也可以通过 PayPal 本身。此外,我需要能够退还这些交易。我使用的代码主要直接来自 PayPal API 示例,适用于信用
当我使用 RefundTransaction API 操作在我的网站上发放部分退款时,退款处理成功。但是,我的 IPN 监听器不断收到此交易的付款状态 Refunded。我不确定为什么不是 Parti
我是一名优秀的程序员,十分优秀!