# 银行卡号如何与 Apple Pay 和 Google Pay 配合使用？什么是 dynamic_last4？

当客户将其银行卡添加到 Apple 或 Google Pay 后，Apple 和 Google 将自动生成一个新的卡号，称为 DPAN（设备 PAN），随附新的有效期。DPAN 与真实卡号完全不同：
* 如果客户将同一张银行卡添加到多个设备，系统每次都会生成不同的 DPAN
* 如果客户将银行卡从他们的设备中移除，系统会自动使 DPAN 失效
* 如果再次添加同一张银行卡，系统会生成新的 DPAN
发卡行通常为每个 PAN BIN 使用配对的 "DPAN BIN"（具有相同的资金类型，长度通常为 8 位），但这不能保证一致。
这一切都是在幕后进行的，并未明确地向持卡人公开。每当客户使用 Apple 或 Google Pay 付款时，系统都会将此 DPAN 发送给商家/处理商，确保他们绝对不会看到真实的卡号或真实的有效期。
但是，该流程存在的一个问题在于，商家可以显示的有关购买相关银行卡的信息不同于客户的真实卡号，因为商家会引用 DPAN 的最后 4 位数字。
Apple 和 Google 将真实卡号的最后 4 位数字连同 DPAN 发送给处理商，以解决这个问题。这意味着我们将从 DPAN 扣款，但会在 API 的 `last4` [属性](https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-last4)中显示真实卡号的最后 4 位数字。这使商家更容易报告有关所使用银行卡的详细信息。另外，我们也会将 DPAN 的最后 4 位数字放在 `dynamic_last4` [属性](https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-wallet-dynamic_last4)中，以便商家可以确认我们从中扣款的 DPAN 的详细信息。_请注意，_对于添加到 Apple Pay 的 [_Apple Cards_](https://card.apple.com/)_，Apple 不会显示真实卡号的最后 4 位数字。在这种情况下，_`last4` _和_ `dynamic_last4` _两者都是指 DPAN 的最后 4 位数字。这是一种特例，目的是将 Apple Cards 与 Apple Pay 配合使用这是一个独特的案例。_
由于我们没有真实的卡号，因此将根据 DPAN 而不是真实的卡号来计算 `fingerprint` [值](https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-fingerprint)。这意味着，如果将同一张银行卡添加到两个不同的设备，则同一张银行卡会指向两个不同的 DPAN，并会导致 API 或管理平台中出现两个不同的指纹。
在测试模式下，银行卡的 last4 属性仍将匹配原始银行卡的最后 4 位数字。但是，对于 Apple Pay，我们会忽略 DPAN 并自动使用测试银行卡号 `4242424242424242`。由于测试银行卡号 `4242` 属于 Visa 卡，这意味着，管理平台和 API 中反映的银行卡品牌和资金类型分别为 Visa 和信用卡，即使实际使用的银行卡来自不同的品牌或具有不同的资金类型。 对于 Google Pay，Google 将 DPAN 替换为其测试套件中的测试银行卡号之一，这会存在与实际使用的银行卡不匹配的问题。