2013-04-10 45 views
1

有其他人看到了这一点,或者你可以验证看到这种行为?以0(零)开始的CVV编号在执行期间失败?

我使用PayPal的新的REST API。事实上,信用卡上的一些CVV数字以0(零)开头。然而,以零开头的CVV号码向PayPal REST API发送请求失败。这是因为“funding_instrument”对象中的“cvv2”值预期为一个数字,以零开头的数字是无效的JSON。当我尝试执行我的请求时,无论如何,我收到一个“INTERNAL_SERVICE_ERROR”错误作为我的回应。

为了解决这个问题,我将CVV编号用引号括起来作为字符串处理,然后重新提交我的请求。这次我收到一个“VALIDATION_ERROR”回应,告诉我CVV编号必须是数字。所以,除非有一些方式来逃避在JSON数字的前导零没有办法接受PayPal REST API卡在CVV包含零作为它的第一个数字。

任何帮助?

回答

1

这是我们新的REST API中的一个错误 - 其中cvv2字段被定义为整数而不是字符串以容纳以零开头的值(例如011,001)。我们正在修复 - 一旦修复完成,将更新此线程。

+0

只是一个更新 - 看起来修复将在4/18发布。一旦活着,我会再次更新。 – Praveen 2013-04-15 18:22:05

+0

Paveen,你会支持在请求中提交一个数字和一个字符串吗?如果您只是简单地将字符串转换为字符串而不是数字,那么如果他们不知道会发生这种情况,您可能会破坏某些人的实现。 – 2013-04-16 17:56:43

+0

是的 - 我们将支持这两种情况,并且在发送单个或两个数字值时处理这种情况,我们会在使用它之前预先使用0来使其成为3位数值。 – Praveen 2013-04-17 05:53:44

0

其中十进制表示以“0”开头的唯一整数是零,这在JSON中完全合法。你描述的问题是不可能的。您必须将CVV2代码从您拥有的任何表示转换为规范十进制数,因为这是JSON规范所要求的。

你从来没有真正从用户那里得到CVV 号码(或任何来源)。您试图将表示直接转换为JSON。直接转换表达会让你陷入麻烦 - 而是通过数字进行转换。

信用卡上的“012”表示数字十二。在JSON中表示的数字12是“12”。当试图将数字从一种表示转换为另一种表示时,几乎总是最好先将其转换为数字。

根据JSON规范,“012”不是任何数字的合法表示。试图发送它违反了该规范,并表明你从来没有真正得到CVV 号码,而是试图使用它的表示就好像它是代表的数字。这就像吃食谱,可能会给你,和贝宝API,消化不良。

更新:显然,该错误在PayPal API中。 CVV代码是而不是数字。没有“CVV号码”这样的东西。 PayPal API要求您提供不存在的内容,并在没有与CVV代码对应的号码时提供。

+0

所以我们说一个CVV数量例如为012你说我应该送12? – 2013-04-10 00:16:46

+0

如果CVV号码是12,你应该把它作为“12”,为*号*十二正确的JSON表示。你在混淆数字和表示。不管表示你在CVV号码(您可能会收到它盲文或二进制为所有的API关心),以JSON发送您必须将其转换为正确的JSON *表示*为*号*。 – 2013-04-10 00:17:18

+0

我在说的是API要求将CVV编号作为数字传递。如果我尝试将它作为字符串传递,它会失败。所以再说一次,如果CVV号码是012,那么API调用将正确地发送什么? – 2013-04-10 00:18:48