模拟并撤销交易
了解事务,以及如何模拟和撤销授权事务。
概述
交易 是指进行支付的过程。我们可以使用 Marqeta 支付卡完成支付操作。授权交易 请求包含用户提供的授权信息,并生成一个电子消息,其中包含用于支付处理的信息。
在本课程中,我们将学习如何模拟一次授权交易及其撤销操作。
模拟授权交易
我们可以通过向 {BASE_URL}/simulate/authorization 端点发送 POST 请求来模拟授权交易。该端点需要携带 card_token 和其他授权详情。
注意: 此端点仅在沙箱环境中可用,即测试环境。它在生产环境中不可用。其目的是让我们能够测试在沙箱中创建的卡片、用户及其他对象。
请求参数
| 参数 | 类型 | 必填性 | 描述 |
|---|---|---|---|
| card_token | 字符串 | 必需 | 用于交易的卡片令牌,最大长度:255 个字符 |
| amount | 十进制数 | 必需 | 交易金额 |
| mid | 字符串 | 必需 | 参与交易的商户标识符,最大长度:50 个字符 |
| network_fees | 数组 | 可选 | 包含针对交易收取的不同类型费用 |
| webhook | 对象 | 可选 | 用于异步将信息发送到我们环境中的端点 |
| cash_back_amount | 十进制数 | 可选 | 如果交易模拟的是从 POS 系统获取现金返还,则表示现金金额 |
| is_pre_auth | 布尔值 | 可选 | 设置为 True 表示仅作为授权金额,否则为 False。默认值:False |
| pin | 字符串 | 可选 | 如适用,为卡片的 PIN 码,最大长度:4 个字符 |
| card_options | 对象 | 可选 | 包含关于卡片使用的信息 |
| card_acceptor | 对象 | 可选 | 包含商户的描述信息 |
| transaction_options | 对象 | 可选 | 包含关于交易的附加信息 |
注意: 请参阅本课程的附录了解
card_acceptor、card_options、transaction_options、network_fees和webhook对象的详细说明。
第 4 行: 我们输入必需参数 amount 的值。
第 5 行: 由于我们仅在测试环境中模拟交易,因此为 mid 属性添加一个任意数字 123456789。
第 6 行: 我们使用之前保存的 CARD_TOKEN 值作为 card_token。
注意: 您也可以填写上表中列出的其他可选参数的值。
点击下方代码窗口中的“运行”按钮以查看输出结果。
1url = '{{BASE_URL}}simulate/authorization' 2 3data = json.dumps({ 4 "amount": "", 5 "mid": "123456789", 6 "card_token": "{{CARD_TOKEN}}" 7}) 8 9response = requests.post(url, headers=headers, data=data) 10 11printResponse(response)
当代码成功执行后,输出将显示包含所有请求数据字段的完整交易对象。我们还会提取 token 和 amount 值,分别存储为 TRANSACTION_TOKEN 和 TRANSACTION_AMOUNT。
若执行失败,则会显示相应的错误信息。
模拟交易撤销
我们可以通过向 {BASE_URL}/simulate/reversal 端点发送 POST 请求来模拟授权交易的撤销操作。该端点需要提供 original_transaction_token 和 amount 的值。交易撤销会将资金退还至原始交易的资金来源账户,这通常发生在授权交易所冻结的资金被释放时。
请求参数
| 参数 | 类型 | 必填性 | 描述 |
|---|---|---|---|
| original_transaction_token | 字符串 | 必需 | 我们希望撤销的交易的令牌 |
| amount | 十进制数 | 必需 | 交易金额 |
| network_fees | 数组 | 可选 | 包含针对交易收取的不同类型费用 |
| webhook | 对象 | 可选 | 用于异步将信息发送到我们环境中的端点 |
注意:
network_fees和webhook是可选参数,分别用于传递费用明细和异步通知信息。
第 4–5 行: 我们使用提取出的 TRANSACTION_TOKEN 和 TRANSACTION_AMOUNT 值分别作为必需参数 original_transaction_token 和 amount。
注意: 您也可以填写上表中列出的其他可选参数的值。
点击下方代码窗口中的“运行”按钮以查看输出结果。
1url = '{{BASE_URL}}simulate/reversal' 2 3data = json.dumps({ 4 "original_transaction_token": "{{TRANSACTION_TOKEN}}", 5 "amount": "{{TRANSACTION_AMOUNT}}" 6}) 7 8response = requests.post(url, headers=headers, data=data) 9 10printResponse(response)
当代码成功执行后,输出将显示包含所有请求数据字段的完整交易对象。
若执行失败,则会显示相应的错误信息。