PayPal-node-SDK`订阅开始日期应该大于当前日期`始终在上午12点之后发生

Red*_*ant 5 paypal paypal-subscriptions paypal-sandbox node.js paypal-rest-sdk

我住在香港,我总是在午夜之后得到这个沙盒paypal交易错误paypal.billingAgreement.execute().错误在下午消失,可能是因为paypal服务器所在的地方终于过了午夜.

{    name: 'SUBSCRIPTION_UNMAPPED_ERROR',
     message: 'Subscription start date should be greater than current date',
     information_link: 'https://developer.paypal.com/docs/api/payments.billing-agreements#errors',
     debug_id: 'd2e618eef4162',
     httpStatusCode: 400
 },
Run Code Online (Sandbox Code Playgroud)

我知道这是沙盒环境的时区问题,但我无法弄清楚如何解决它.

我的结算协议是根据PayPal-node-SDK中的示例创建的

process.env.TZ = 'utc';
var isoDate = new Date();
isoDate.setSeconds(isoDate.getSeconds() + 4);
isoDate.toISOString().slice(0, 19) + 'Z';

var billingAgreementAttributes = {
    "start_date": isoDate,
    /..../
}
Run Code Online (Sandbox Code Playgroud)

我已将TZ节点中的环境变量设置为utc;

我用来登录和订阅的沙箱帐户的时区设置:

在此输入图像描述

我也试过不同的区域,Eastern Time但它没有效果.

H. *_*ida 2

根据 PayPal 文档,StartDate 应为 UTC,看起来正在设置处理时区

 process.env.TZ = 'utc';
Run Code Online (Sandbox Code Playgroud)

对您的代码没有影响(有时可能会被兑现),您可以检查日期变量值是否采用 UTC 格式吗?

我建议改变

var isoDate = new Date();
Run Code Online (Sandbox Code Playgroud)

var isoDate = new Date().toISOString();
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!