代码之家  ›  专栏  ›  技术社区  ›  Art Geigel

以0(零)开头的CVV数字在执行过程中失败?

  •  2
  • Art Geigel  · 技术社区  · 12 年前

    其他人看到了吗?或者你能证实看到了这种行为吗?

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

    为了纠正这一点,我将CVV编号用引号括起来,将其视为字符串,然后重新提交了我的请求。这一次,我得到一个“VALIDATION_ERROR”响应,告诉我CVV编号必须是数字。因此,除非有某种方法可以避开JSON中数字的前导零,否则无法通过PayPal REST API接受卡片,其中CVV包含一个零作为其第一个数字。

    有什么帮助吗?

    2 回复  |  直到 12 年前
        1
  •  1
  •   Praveen    12 年前

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

        2
  •  0
  •   David Schwartz    12 年前

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

    你从来没有真正得到过CVV 数字 来自用户(或任何来源)。您试图转换 代表 直接转换为JSON。直接转换表示会给你带来麻烦——相反,要通过数字进行转换。

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

    根据JSON规范,“012”不是任何数字的合法表示。试图发送它违反了该规范,并表明您从未真正获得CVV 数字 但却试图使用 代表 就好像它是所代表的数字一样。这就像吃食谱一样,很可能会让你和PayPal API消化不良。

    使现代化 :显然,该漏洞存在于PayPal API中。CVV代码为 数字。没有所谓的“CVV编号”。PayPal API要求您提供一些不存在的东西,并且在没有与CVV代码对应的数字时出现故障。