MPGS(万事达卡):如何标记交易(如何创建令牌)?

MPGS (mastercard): How to tokenize a transaction (how to create token)?

我正在尝试使用 MPGS 创建令牌。

我正在遵循此指南:

https://sample-sub.domain.mastercard.com/api/documentation/integrationGuidelines/supportedFeatures/pickAdditionalFunctionality/tokenization/tokenization.html?locale=en_US#x_tokenConfiguration

在 "Token Operations" > "Tokenize" 部分,它说:

You can use this operation to create or update a token by storing payment details against the token. ...

我发布这篇文章是为了帮助像我一样对 MPGS 感到沮丧的人。我遇到了一系列问题,并多次扯掉我的头发。所以这是我面临的问题以及如何解决它们(我被问题 #4 困住了)。


问题 #1: 凭据无效。

修正:确保你打的是正确的URL。

https://示例子域.mastercard.com/..

https://some.other-示例.mastercard.com/..

https://百万种可能性。mastercard.com/..

甚至文档指南 link 也有这些相同的子域,因此请确保您输入的是正确的 URL,并确保您遵循的是正确的文档 link.


问题 #2: 参数无效,或者尽管您提供了参数但服务器仍要求提供参数。

修复: 如果使用 Postman,请确保将 "Body" > "raw" 中的参数设置为 JSON,像这样:

{
    "sourceOfFunds": {
        "provided": {
            "card": {
                "expiry": {
                    "month": "05",
                    "year": "21"
                },
                "number": "5123456789012346"
            }
        },
        "type": "CARD"
    }
}

问题 #3: 需要授权

修复: 如果使用 Postman,请单击 "Authorization",将 "Type" 设置为 Basic Auth,对于 "Username" 将其设置为 merchant.YOUR_MERCHANT_ID,对于 "Password" 将其设置为 YOUR_API_PASSWORD


问题 #4(卡在这里):值“9999999999999999”无效。不得提供卡令牌

方法:PUT

URL: https://test-my.sample.gateway.mastercard.com/api/rest/version/46/merchant/MY_MERCHANT_ID/token/9999999999999999

授权:在授权选项卡中正确设置

正文 > 原始:

{
    "sourceOfFunds": {
        "provided": {
            "card": {
                "expiry": {
                    "month": "05",
                    "year": "21"
                },
                "number": "5123456789012346"
            }
        },
        "type": "CARD"
    }
}

回复:

{
    "error": {
        "cause": "INVALID_REQUEST",
        "explanation": "Value '9999999999999999' is invalid. Card token must not be supplied",
        "field": "tokenid",
        "validationType": "INVALID"
    },
    "result": "ERROR"
}

问: 不确定如何对交易进行代币化……?!我被 问题 #4.

困住了

好吧,终于想通了。 MPGS 有两种获取 create/update 代币的方式:

  1. Tokenization where YOU provide the token(注意:PUT方法)
  2. Tokenization where MPGS generate the token for you(注意:POST方法)

它们非常相似。

我使用了第二个选项。

注意:这是POST方法!!

方法:POST

URL: https://SUBDOMAIN_YOU_SHOULD_BE_USING.mastercard.com/api/rest/version/50/merchant/YOUR_MERCHANT_ID/代币

在邮递员中,设置授权(如问题中所述,在问题#3中)。

要发送的示例数据(在 postman 中,这应该在 Body > raw 中):

{
    "sourceOfFunds": {
        "provided": {
            "card": {
                "expiry": {
                    "month": "05",
                    "year": "21"
                },
                "number": "5123456789012346"
            }
        },
        "type": "CARD"
    }
}

响应示例:

{
    "repositoryId": "1000000000002",
    "response": {
        "gatewayCode": "BASIC_VERIFICATION_SUCCESSFUL"
    },
    "result": "SUCCESS",
    "sourceOfFunds": {
        "provided": {
            "card": {
                "brand": "MASTERCARD",
                "expiry": "0521",
                "fundingMethod": "CREDIT",
                "issuer": "BANCO DEL PICHINCHA, C.A.",
                "number": "512345xxxxxx2346",
                "scheme": "MASTERCARD"
            }
        },
        "type": "CARD"
    },
    "status": "VALID",
    "token": "9717501974559694",
    "usage": {
        "lastUpdated": "2019-02-25T09:36:54.928Z",
        "lastUpdatedBy": "1015",
        "lastUsed": "2019-02-25T09:36:54.928Z"
    },
    "verificationStrategy": "BASIC"
}