首页 > 解决方案 > 如果我为 Paymenttokenization 选项选择“DIRECT”方法,Google Pay“快速启动演示”不显示卡列表

问题描述

我已按照此处提供的教程进行操作。 可以在这里找到快速入门演示。

如果我在下面的方法中选择“tokenizationSpecification”参数,

private static JSONObject getGatewayTokenizationSpecification() throws JSONException {
return new JSONObject(){{
  put("type", "PAYMENT_GATEWAY");
  put("parameters", new JSONObject(){{
    put("gateway", "example");
    put("gatewayMerchantId", "exampleGatewayMerchantId");
    }
  });
}};

}

它工作正常,但如果我选择以下方法,

private static JSONObject getDirectTokenizationSpecification()
        throws JSONException, RuntimeException {
    if (Constants.DIRECT_TOKENIZATION_PARAMETERS.isEmpty()
            || Constants.DIRECT_TOKENIZATION_PUBLIC_KEY.isEmpty()
            || Constants.DIRECT_TOKENIZATION_PUBLIC_KEY == null
            || Constants.DIRECT_TOKENIZATION_PUBLIC_KEY == "REPLACE_ME") {
        throw new RuntimeException(
                "Please edit the Constants.java file to add protocol version & public key.");
    }
    JSONObject tokenizationSpecification = new JSONObject();

    tokenizationSpecification.put("type", "DIRECT");
    JSONObject parameters = new JSONObject(Constants.DIRECT_TOKENIZATION_PARAMETERS);
    tokenizationSpecification.put("parameters", parameters);

    return tokenizationSpecification;
}

它不工作。[不显示我的卡片列表。]

注意:-我已经执行了以下方法来生成公钥并将其替换为常量文件。

# 生成私钥 openssl ecparam -name prime256v1 -genkey -noout -out key.pem

# generate a base64-encoded public key

openssl ec -in key.pem -pubout -text -noout 2> /dev/null | grep "pub:" -A5 | sed 1d | xxd -r -p | base64 | paste -sd "\0" -

问题:- - 我必须在 google pay 中有开发者资料才能运行演示吗?

标签: androidpaymentgoogle-pay

解决方案


在这种情况下,国家可能是一个因素。

为了消除这种情况,您可以尝试创建一个新的 Google 帐户用于测试目的吗?在美国创建此 Google 帐户并将付款方式/信用卡添加到该帐户。

使用以下示例对其进行测试:https ://jsfiddle.net/pxsb4jhn/ (它适用于我,我位于美国)

const allowedCardNetworks = ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"];

const tokenizationSpecification = {
  "type": "DIRECT",
  "parameters": {
    "protocolVersion": "ECv2",
    "publicKey": "BOdoXP+9Aq473SnGwg3JU1aiNpsd9vH2ognq4PtDtlLGa3Kj8TPf+jaQNPyDSkh3JUhiS0KyrrlWhAgNZKHYF2Y="
  }
};

如果它工作并显示该卡,则可能是您使用的用户所在国家/地区现在可以使用 DIRECT 集成的问题。

它仍然无法正常工作,这可能是卡不支持直接集成的问题,在这种情况下,请尝试使用另一张卡(最好来自美国等其他国家 - 如果您没有可用的卡,这可能会很困难)。


推荐阅读