如何解决CRYPTOGRAM_3DS-为什么它不是唯一的选择?
我正在尝试将Google Pay支持添加到我们已经为本地应用程序工作的网站。应用内实现不允许PAN_ONLY
卡(由于高退款率),仅允许CRYPTOGRAM_3DS
。这样就可以了。
当我将网站配置为仅允许CRYPTOGRAM_3DS
时,我永远无法使paymentsClient.isReadyToPay()
返回true。我尝试了不同的Android设备,这些设备无法进行应用内付款。需要说明的是-如果我允许PAN_ONLY
,则Google Pay可以正常工作,并且我可以获取令牌。
如何解决这种情况的原因?如果您从设置配置中删除PAN_ONLY
,它是否对其他人有用?
谢谢!
解决方法
CRYPTOGRAM_3DS
指代币卡。也就是说,已添加并存储在您的Android设备上的卡。这些卡可用于通过点按付款在店内(而非应用内)付款。
如果仅使用CRYPTOGRAM_3DS
,则意味着它当前仅在用户保存了令牌卡的Android设备上运行。
我将以下示例放在一起进行演示(确保您在具有适当卡的Android设备上进行测试):https://jsfiddle.net/w5ptorbd/
<script src="https://unpkg.com/@google-pay/button-element@2.x/dist/index.umd.js"></script>
<google-pay-button environment="TEST"></google-pay-button>
const button = document.querySelector('google-pay-button');
button.paymentRequest = {
apiVersion: 2,apiVersionMinor: 0,allowedPaymentMethods: [
{
type: 'CARD',parameters: {
allowedAuthMethods: ['CRYPTOGRAM_3DS'],allowedCardNetworks: ['MASTERCARD','VISA'],},tokenizationSpecification: {
type: 'PAYMENT_GATEWAY',parameters: {
gateway: 'example',gatewayMerchantId: 'exampleGatewayMerchantId',],merchantInfo: {
merchantId: '12345678901234567890',merchantName: 'Demo Merchant',transactionInfo: {
totalPriceStatus: 'FINAL',totalPriceLabel: 'Total',totalPrice: '100.00',currencyCode: 'USD',countryCode: 'US',};
button.addEventListener('loadpaymentdata',event => {
console.log('load payment data',event.detail);
});
button.addEventListener('readytopaychange',event => {
console.log('ready to pay change',event.detail);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。