我住在香港,我总是在paypal.billingAgreement.execute()
午夜之后收到这个沙盒paypal交易错误。这个错误在下午消失了,可能是因为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
},
我知道这是沙盒环境的时区问题,但我无法弄清楚如何解决它。
我的结算协议是根据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,
/..../
}
我已将节点中的TZ
环境变量设置为utc
;
我用于登录和订阅的沙盒帐户的时区设置:
我还尝试过不同的区域,例如Eastern Time
,但它没有效果。
答案 0 :(得分:2)
根据PayPal Docs,StartDate应该是UTC,看起来 设置处理时区
process.env.TZ = 'utc';
对您的代码没有影响(有时可能会兑现),您能检查日期变量值是否为UTC?
我建议改变
var isoDate = new Date();
到
var isoDate = new Date().toISOString();
希望它有所帮助!