如何使 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 中工作

从 Paypal 账单协议表单中删除送货地址

Magento paypal 快递评论页面和协议

PayPal .net REST API - 带有额外一次性付款的重复计费协议

PayPal REST API 计费计划和协议(订阅)