我已经在我的应用程序中集成了@stripe/stripe-react-native,它运行良好,很高兴scanarios。
<CardField
postalCodeEnabled
placeholder={{
number: CLAUSE.CARD_NUMBER,
}}
cardStyle={styles.cardStyle}
style={styles.containerStyle}
onCardChange={info => setCardData(info)}
/>
我面临的问题是无效的到期年份和邮政编码。如果我输入的到期年份小于当前年份,即 23 及以下,则文本会变为红色,表明我输入了正确的无效年份。
但是,当我输入上限为 80 或以上的无效年份时,UI 文本不会变成红色,返回的信息表示有效的到期年份,但当我执行付款条带付款时失败,给出 “无效属性” 错误。
卡信息回复:
{"brand": "Visa", "complete": true, "expiryMonth": 12, "expiryYear": 85, "last4": "4242", "postalCode": "11111", "validCVC": "Valid", "validExpiryDate": "Valid", "validNumber": "Valid"}
您可以看到 expiryYear 为 85,但 validExpiryDate 为 true。
与邮政编码类似,无论我输入的字符数如何,邮政编码都是可接受的。
这是一个两步过程。
首先,Stripe 对用户输入进行一些基本检查,例如过期时间是否已过,或者卡号是否与 Luhn 算法匹配。如果这些检查中的任何一个失败,那么您将看到表单中突出显示的错误。
其次,Stripe将卡信息发送给银行,银行会做更高级的检查。如果银行拒绝付款,那么您将收到错误消息,但具体错误不会在表单中突出显示。
所以你所看到的都是预期的。