如何使 PayPal 协议 start_date 在 PayPal SDK for ASP.NET 中有效
Posted
技术标签:
【中文标题】如何使 PayPal 协议 start_date 在 PayPal SDK for ASP.NET 中有效【英文标题】:How to make PayPal Agreement start_date valid in PayPal SDK for ASP.NET 【发布时间】:2019-04-23 03:18:00 【问题描述】:正如 PayPal docs 所说:
...开始日期必须在当前日期之后不少于 24 小时...
此外,根据PayPal Source code repository start_should 判断,应该看起来像"2016-02-19T00:37:04Z"
我所做的是:
var agreement = new Agreement()
name = Plan.name,
description = $"Agreement for Plan.description",
start_date = DateTime.Now.AddHours(25).ToUniversalTime().ToString("yyyy-MM-ddTHH:mmZ"),
payer = payer,
plan = new Plan() id = Plan.id ,
;
agreement.Create(myAPIContext);
结果如下。我的start_date
似乎是对的。
但在那之后我立即捕捉到一个异常:
那么,有什么问题呢?
【问题讨论】:
根据这一行 github.com/paypal/PayPal-NET-SDK/blob/develop/Samples/Source/… ,您可能需要使用这种格式"yyyy-MM-ddTHH:mm:ssZ"
。你可以试试这个DateTime.UtcNow.AddHours(25).ToString("yyyy-MM-ddTHH:mm:ssZ");
@Niladri,是的,你完全正确!不敢相信我错过了!该评论应该是一个答案。
ok 把它作为答案发布.. 你能接受吗?
@Niladri,当然!
我已将其发布为答案
【参考方案1】:
根据 Paypal documentation,start_date
参数接受格式化为 ISO 8601 日期时间的字符串。在这种情况下,它的格式为 yyyy-MM-ddTHH:mm:ssZ
(根据示例代码)。因此你的代码应该是这样的
var agreement = new Agreement()
name = Plan.name,
description = $"Agreement for Plan.description",
start_date = DateTime.UtcNow.AddHours(25).ToString("yyyy-MM-ddTHH:mm:ssZ"),
payer = payer,
plan = new Plan() id = Plan.id ,
;
agreement.Create(myAPIContext);
【讨论】:
以上是关于如何使 PayPal 协议 start_date 在 PayPal SDK for ASP.NET 中有效的主要内容,如果未能解决你的问题,请参考以下文章
PayPal Rest API:如何将卡添加或更新到计费协议 api?
如何使 paypal 按钮在 asp.net webform 中工作