现代信用卡处理系统是否允许在持卡人姓名中使用变音符号?

15
背景:很多人的名字带有无法用ASCII表示的变音符号,例如JOSÉ GONZÁLEZ。
似乎存在一些证据表明磁条上的编码只能处理卡持有者姓名中未带重音符号的拉丁字母A-Z。
这导致很多人阅读问题2004532,该问题已经几年了,并得出结论,他们不应该让人们在信用卡表单的“持卡人姓名”字段中输入变音符号。
实际最佳做法是什么? “现代”支付API(如stripe / braintree等)是否要求、允许或禁止在持卡人姓名中使用变音符号?
3个回答

9
这是一个很好的问题,我相信它会因处理器而异。但是如果我们想看大局,我认为答案可能还是“仍未支持”。
在搜索过程中,我发现:
- 捷克斯洛伐克联合银行的PDF建议省略变音符号(请参见第7页); - Authorize.Net不支持它们2); - Realx Payments不支持它们

我在 Braintree 或 Stripe 的 API 文档中没有找到特别提到有效字符的内容(至少在我搜索时没有找到。我还没有实现过任何一个 API,所以我不太了解它们)。

更新

我已经向 Braintree 发送了电子邮件,这是他们的回复:

我们允许使用特殊字符,例如变音符号作为客户和持卡人姓名。需要注意的是,客户 ID 不允许使用特殊字符。

更新2

我刚刚收到了 Authorize.Net 的回复(由我添加链接):

我们支持 ISO/IEC 8859-1 字符集 中的字符。

更新3

我刚刚收到了 Stripe 的回复:

Stripe 中的所有内容都使用 UTF-8,因此变音符号不会成为问题。


6
我在 Braintree 工作。由于大多数处理器不支持 UTF-8 编码,因此我们会在必要时清理输入内容后再传递。变音符号通常会被保留,因为一些处理器支持 8 位编码,例如 ISO/IEC 8859-1(Latin-1)。 - agf
约翰,这些网关/处理器在提交结算文件时必须处理(并丢失)变音符号。我找不到任何证据表明MasterCard/Visa等公司已更新其系统以支持变音符号。@agf,当你谈到保留编码时,是指发送给其他处理器的消息,还是直接提交给商户银行/卡方案的结算? - PaulG

3
我认为最佳实践仍然是对输入进行消毒。
在幕后,持卡人姓名不会在授权过程中使用,但在每日结算时(根据交易类型),有时会提交。这意味着您提供的名称对授权没有任何影响。
当它被提交进行结算时,必须不超过26个ITU-T.50字符,在16进制20-5F范围内。您可以在此处查看此表:http://www.zytrax.com/tech/ia5.html 此信息来自APACS 70标准,第三册。无法在线获取。
现代支付API仍必须符合银行业标准,而这些标准实际上已经存在几十年了。使用这些标准的系统数量使其几乎不可能进行现代化。如果支付处理器允许使用变音符号(如@agf在此评论中指出的那样),则必须由处理器在提交给商家银行之前进行消毒。

由于越来越多的信用卡处理器允许使用这些字符,也许更好的方法是在输入时保留和存储特殊字符,并在必要时像 Braintree 一样对输入进行清理后再传递。毕竟,Braintree 允许使用如变音符等特殊字符,Authorize.Net 支持 ISO/IEC 8859-1 字符集中的字符,而 Stripe 使用 UTF-8。这种方法将使您的系统更具未来性,并准备好使用更好的字符集支持的数据。 - Michael Innes

1
从我们的项目来看,Adyen、DataCash、EcorePay、EMP、MPI、NetPay、SafeCharge、SoEasyPay、Transact24、WireCard、LPS和Nerex都接受变音符号。 但是,LPS、Nerex和Authorize.NET需要持卡人的名字和姓氏分开,并且这可能会导致问题。
与NetGate Asia(日本卡处理器)最大的问题在于,它要求名字和姓氏只能使用[a-zA-Z],不允许使用撇号',甚至不允许数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接