问题标签 [mastercard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1219 浏览

php - MPGS 集成 CREATE_CHECKOUT_SESSION cURL

我正在尝试配置 MPGS 并尝试设置回调 url。它需要使用 REST 创建会话。

代码类似于下面的代码。我不确定应该如何使用 cURL 编写代码。谁能帮忙

谢谢

0 投票
0 回答
52 浏览

c# - 确定来自内部库/NuGet 包的序列化错误的原因

有时当通过 NuGet 包 MasterCard-Match 调用 Mastercard MATCH API 时,我会得到一个 JSON 反序列化异常:

解析值时遇到意外字符:<。路径 '',第 0 行,第 0 位置。

异常来自 MasterCard.Core,内部异常来自 Newtonsoft.Json,两者都有相同的消息。

看起来我正在接收 HTML('<' 在第 0 行,第 0 位)并且库正在尝试将其反序列化为 JSON。我的猜测是 MasterCard API 发送回一个 HTML 错误页面而不是 JSON 错误。但是我不能在抛出异常之前进入函数调用来“查看”它得到的响应。

根据文档,我使用提供的数据和调用创建了一个请求映射TerminationInquiryRequest.Create(map),这是引发异常的行。这个函数调用是一个黑匣子,我无法进入它,它只是抛出异常。

我已经使用这个库进行了超过 11,000 次调用,只有 32 次出现了这个错误,但我当然每次都会听到它。

有什么方法可以调试我不知道的库,或者查看库从 API 获得的响应吗?

我已经有一些逻辑可以等待并在失败时重试呼叫。

0 投票
1 回答
2065 浏览

payment-gateway - 带会话 ID 的 MaterCard 支付网关完成回调

我想知道是否有人使用 MPGS 托管的结帐付款 i 参数构建了 API,它没问题,交易正确移动并显示收据页面,但问题是当收据页面显示给客户时,没有重定向到我的网站;我搜索了如何进行回调:

完成回调完成:

  1. 使用创建结帐会话操作创建结帐会话
  2. 将 session.id 传递给 checkout.configure ()
  3. 提供 callback.complete 函数或 url

创建结帐会话的代码是:

但我不知道如何将它放在上面的脚本中。

我该如何解决?

请指教 ,

0 投票
1 回答
951 浏览

javascript - JSON 解析引发的意外令牌错误

需要一些帮助来找出页面加载时引发的 JSON.parse 错误。

未捕获的 SyntaxError:JSON.parse () 位置 0 处的 JSON 中的意外标记 m

这只是 Mastercard 支付网关文档中提供的示例代码。我正在尝试使用商家提供的测试数据对其进行测试。我通过验证器运行代码,它没有返回任何错误。

这是我要执行的代码。

在此处输入图像描述

0 投票
1 回答
604 浏览

javascript - MPGS(万事达卡)集成安全性

根据 MPGS 集成指南,如果商户想在支付成功后显示收据,则 MPGS 将重定向到商户站点回调 URL,并带有 resultIndicator。商户网站需要将 resultIndicator 与之前存储的 successIndicator 进行比较。

黑客可以先启动 MPGS 支付会话而无需支付。然后假装是 MPGS 并通过使用不同的 resultIndicator 调用该商家站点回调 URL 反复进行暴力尝试,直到它与存储的 successIndicator 匹配。商家随后认为黑客已经付款。

这可能吗?如果是,如何避免这个漏洞?在不信任 resultIndicator 的情况下收到回调时需要调用 Inquiry API?

0 投票
0 回答
434 浏览

payment-gateway - 无法调用基本回调万事达卡

实际上,我已经集成了万事达卡托管结帐并且它工作正常。 https://ap-gateway.mastercard.com/api/documentation/integrationGuidelines/hostedCheckout/integrationModelHostedCheckout.html

但对于进一步的流程,我必须调用基本回调来取消付款并将客户重定向到商家网站(如错误、取消、完成回调)。

但我无法调用这些回调。

0 投票
1 回答
4004 浏览

android - 如何创建/更新会话?(MasterCard Gateway 集成在 android 和 iOS 中)

我正在尝试使用卡信息更新会话。

我正在遵循本指南:

https://ap-gateway.mastercard.com/api/documentation/apiDocumentation/rest-json/version/51/operation/Session%3a%20Update%20Session.html?locale=en_US

在“更新会话”部分中,它说:

您可以请求添加或更新会话中包含的请求字段。


使用邮递员,我设置

授权:基本身份验证为用户名部分中的“商家。{您的网关商家 ID}”和密码部分中的 API 密码。

网址:“ https://ap-gateway.mastercard.com/api/rest/version/51/merchant/{merchantId}/session/{sessionId }

方法:

正文:“原始”为 JSON,如下所示:

问题:得到响应。

我是如何获得 Session id 的!

我已遵循本指南:

https://ap-gateway.mastercard.com/api/documentation/apiDocumentation/rest-json/version/51/operation/Session%3a%20Create%20Session.html?locale=en_US


使用邮递员,我设置

授权:基本身份验证为用户名部分中的“商家。{您的网关商家 ID}”和密码部分中的 API 密码。

网址:https://ap-gateway.mastercard.com/api/rest/version/51/merchant/{merchantId}/session

方法:POST

正文:“原始”为 JSON,如下所示:

成功:得到响应。

我在上述请求中收到的会话 ID 已传递给更新会话请求。

我希望更新的会话包含卡信息,但收到错误:“不支持直接提供持卡人数据。考虑使用会话或令牌。”

0 投票
2 回答
4019 浏览

javascript - 万事达卡付款集成完成付款后如何重定向到链接

付款完成后我需要重定向到一个 URL

我使用了文档中提供的代码

一切正常,但付款完成后我无法重定向,所以我可以做些什么来让它在付款完成后重定向到一个 url?

0 投票
1 回答
56 浏览

java - 如何使用 Selenium for Java 自动设置“https://stage.masterpassteststore.com/configuration”?

使用 Selenium for Java,我尝试自动设置 2 个元素 -Merchant integration version (v5/v6)https://stage.masterpassteststore.com/configurationMerchant Checkout ID (Sandbox-V7-STD-9CCBB)页面。

我已经解决了设置环境(Sandbox/Production),但仅此而已。

欢迎来自聪明人的任何帮助。:)

“Dmitri T”的唯一一个建议以以下错误结尾:

在端口 37781 上启动 ChromeDriver 75.0.3770.140 (2d9f97485c7b07dc18a74666574f19176731995c-refs/branch-heads/3770@{#1155}) 仅允许本地连接。请保护 ChromeDriver 和相关测试框架使用的端口,防止恶意代码访问。Srp 23, 2019 12:57:04 ODP。org.openqa.selenium.remote.ProtocolHandshake createSession INFO:检测到的方言:W3C 环境选择成功:线程“main”中的沙盒异常 org.openqa.selenium.ElementClickInterceptedException:元素单击被拦截:元素 ... 在点不可单击(669 , 464)。其他元素将收到点击:...(会话信息:chrome=75.0.3770.80)构建信息:版本:'3.9.1',修订:'63f7b50',时间:'2018-02-07T22:42:22.379Z '系统信息:主机:'*', ip: '10.45.1.194', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_221' 驱动信息: org. openqa.selenium.chrome.ChromeDriver Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 75.0.3770.80, chrome: {chromedriverVersion: 75.0.3770.140 (2d9f97485c7b..., userDataDir: C:\Users*\AppDat...}, goog:chromeOptions: {debuggerAddress: localhost:55213}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), setWindowRect: true, strictFileInteractability :false,超时:{implicit:0,pageLoad:300000,脚本:30000},unhandledPromptBehavior:dismiss and notify} 会话 ID:903a3ae8fe6f8d9e7260742bb2ffa419 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance( NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec .createException(W3CHttpResponseCodec.java:187) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 在 org.openqa.selenium.remote.HttpCommandExecutor。在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) 执行(HttpCommandExecutor.java:160) .openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:279) 在 org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83) 在 App.main(App.java:36)在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) 执行(HttpCommandExecutor.java:160) .openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:279) 在 org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83) 在 App.main(App.java:36)在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) 执行(HttpCommandExecutor.java:160) .openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:279) 在 org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83) 在 App.main(App.java:36)

0 投票
2 回答
1973 浏览

cryptography - MasterCard PIN 更改发行者脚本失败,Thales HSM 用于 MAC 生成。EMV

我使用泰雷兹 Payshield 9000 HSM。到目前为止,所有命令都有效,一切都达到了我想要的。

现在的问题是在尝试更改 ATM 中的密码时。检查万事达卡文档时,生成了密码更改脚本,格式看起来没问题。

我们的 PIN 更改脚本如下所示:86158424000210PPPPPPPPPPPPPPPPMMMMMMMMMMMMMMMM其中 16 个 P 字母是 DE125 中发送的 PIN 块,16 M 个字母代表 MAC。(我屏蔽了它们,但下面将使用示例中的数据)

有了这个脚本,从我这边看来一切正常。现在我怀疑问题是MAC生成。

要生成 MAC,我们使用以下 HSM 命令:

  • HA(生成 TAK(它是一个随机密钥,每次(每次 PIN 更改操作)我都调用此命令,密钥不同)) - 输入为:key = PVK key (U+32Hex symbols under LMK), delimiter = ';', keySchemeTmk = 'U', keySchemeLmk = 'U'; 然后收到TAK密钥
  • M6(生成 MAC) - 输入为:modeFlag = 0, inputFormatFlag = 2, macSize = 1, macAlgorithm = 3, paddingMethod = 0, keyType = '003', key = 'Tak key from HA command', messagelength = '0030', message = '8424000210345755BFDC4F2903A392B3E1229A502C892680'(消息像上面的屏幕截图一样连接:命令头 + ApplicationtransactionCounter + ARQC + PIN Block)(这里的消息数据来自屏幕截图中的示例)

因此,当执行这两个命令时,我会收到我需要的 16HEX 符号 MAC。所以脚本是这样准备的: 8424000210 B3E1229A502C8926 422A8FF11056ACD4:header => 8424000210pinBlock => B3E1229A502C8926MAC => 422A8FF11056ACD4

当我去 ATM 并更改密码时,我的密码永远不会改变,我会收到反转消息。

任何人都可以解释这些标志是什么,我不确定应该使用哪些标志(命令 M6):

所以问题是:

  • HSM 命令 M6 是否正确命令为 PIN 更改/解锁脚本生成 MAC?它需要 TAK 密钥,而 MasterCard 文档明确指出应该使用 SMI 密钥完成。
  • 尝试检索 MAC 哈希时,我的 M6 命令配置是否不正确?

更新

我设法让 KU 命令工作,它给我带来了响应,但 PIN 更改本身没有成功完成。下面我将向您展示我对 KU 命令生成的请求:

{ "mode_flag": "3", "scheme_id": "1", "mk_smi": "U25A22A6553A7F68ABACBD1E04BBD8889", "pan": "7891234567891200", "integrity_session_data": "55BFDC4F2903A392", "plaintext_message_data_length": "0018", "plaintext_message": "8424000210345755BFDC4F2903A392B3E1229A502C892680", "delimiter": ";", "confidentiality_session_data": "55BFDC4F2903A392", "offset": "000F", "cipher_text_message_data_length": "0008", "cipher_text_message_data": "B3E1229A502C8926", "delimiter2": ";", "source_pin_encryption_key_type": "0", "source_pin_encryption_key": "UBAAAA3488AA6AA564AAC8AA3AAC1AAA2", "source_pin_block_format_code": "01", "destination_pin_block_format_code": "35", "pan2": "891234567891" }

密钥和敏感数据被屏蔽,因此此处使用 PAN:5678912345678912和序列号000。对于第一个pan参数,使用的最后 14 个 PAN 数字 + 序列号的最后两个数字。对于pan2参数,仅使用最后 12 个 PAN 数字,不包括校验位。

我是否使用正确的偏移标志将明文数据中的 PIN 块替换为新的加密 pin 块?