> ## Documentation Index
> Fetch the complete documentation index at: https://devzone.nayax.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 执行交易

`doTransaction` 方法可在 TweezerComm 协议中发起并处理支付交易。它使销售点 (POS) 系统或电子收银机 (ECR) 等客户端应用程序能够与 Agamento 支付终端交互，以安全地执行交易。

此方法支持多种交易类型，包括：

* 常规交易：使用信用卡或闭环支付方式的标准支付。
* 退款：对先前交易进行部分或全额退款。
* 预授权：在客户卡上预留指定金额，以供后续确认。
* 延迟付款：即使在没有即时网络连接的情况下也能批准交易。
* MOTO（邮购/电话订购）交易：安全处理无卡交易。
* 预授权完成与取消：完成或撤销先前已授权的交易。

以下各部分将详细介绍请求参数：

## 要求

> [!NOTE]
>
> JSON-RPC 2.0
>
> TweezerComm 中的所有方法都遵循 JSON-RPC 2.0 结构。有关请求的结构和发送方式的更多详细信息，请参阅[“入门指南”](/docs/integrate-pos-device/tweezercomm/tweezercomm-get-started.md) 。

请在请求中确保配置以下内容：

* `method` 字段需要设置为 `doTransaction`。
* The service must be set to `ashrait` in the `params`.

```json theme={null}
{
    "jsonrpc": "2.0",
    "method": "doTransaction",
    "params": [
        "ashrait",
        {
            "amount": 2000,
            "vuid": "1234567890",
            "currency": "376",
            "creditTerms": 1,
            "tranCode": 1,
            "tranType": 1,
            "cardNumber": "4580000000000000",
            "expDate": "2308",
            "cvv": "666"
        }
    ],
    "id": 1
}
```

### 请求参数

下表描述了该请求的参数：

> [!WARNING]
>
> 必填字段
>
> `vuid`、`amount` 和 `tranType` 是所有请求的必填项。其他参数则取决于所进行的交易类型。

<table>
  <thead>
    <tr>
      <th>
        姓名
      </th>

      <th>
        类型
      </th>

      <th>
        描述
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `vuid`
      </td>

      <td>
        string
      </td>

      <td>
        供应商（客户）唯一交易标识符。
      </td>
    </tr>

    <tr>
      <td>
        `amount`
      </td>

      <td>
        整数
      </td>

      <td>
        金额（以分为单位）。
      </td>
    </tr>

    <tr>
      <td>
        `tranCode`
      </td>

      <td>
        整数
      </td>

      <td>
        交易代码。以下是该参数的可能取值：
        `1`：单步交易
        `2`：退款（支持部分退款）
        `3`：预授权
        `4`：延迟
        `5`：MOTO
        `6`：完成预授权
        `7`：取消预授权
      </td>
    </tr>

    <tr>
      <td>
        `tranType`
      </td>

      <td>
        整数
      </td>

      <td>
        交易类型代码。以下是该参数的可能取值：
        `1` - 常规
        `3` - 强制交易
        `6` - 现金返还
        `7` - 现金
        `30` - 余额
        `53` - 退款
      </td>
    </tr>

    <tr>
      <td>
        `originalTransactionId`
      </td>

      <td>
        string
      </td>

      <td>
        原始交易 ID，此参数用于退款交易时使用。
      </td>
    </tr>

    <tr>
      <td>
        `pan`
      </td>

      <td>
        string
      </td>

      <td>
        MOTO 交易的卡号（PAN）。
      </td>
    </tr>

    <tr>
      <td>
        `exp`
      </td>

      <td>
        string
      </td>

      <td>
        卡的有效期。
      </td>
    </tr>

    <tr>
      <td>
        `cvv`
      </td>

      <td>
        string
      </td>

      <td>
        卡验证码（3 位数）。
      </td>
    </tr>

    <tr>
      <td>
        `apmCode`
      </td>

      <td>
        整数
      </td>

      <td>
        其他支付方式（非 EMV）。以下是该参数的可能取值：
        `2`：Nayax 预付卡
        `4`：10BIS
        `5`：Cibus
        `9`：Multipass
        `28`：Goodi
      </td>
    </tr>

    <tr>
      <td>
        `cardNumber`
      </td>

      <td>
        string
      </td>

      <td>
        该卡号用于 MOTO 支付方式（非 EMV）。MOTO 为必填项。对其他支付方式无关紧要。
      </td>
    </tr>

    <tr>
      <td>
        `productInfo`
      </td>

      <td>
        string
      </td>

      <td>
        将产品信息发送至 DCS。
      </td>
    </tr>
  </tbody>
</table>

## 回复

成功的请求将返回类似于以下代码块中的响应：

```json theme={null}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "statusCode": 0,
        "statusMessage": "TRANSACTION APPROVED",
        "appVersion": "01.05.22",
        "retailerId": "0883012013",
        "ecrNo": "1",
        "vuid": "ee5e7af5-7719-4726-992f-0eb2915b992a",
        "tranCode": 1,
        "currency": "376",
        "amount": 100,
        "mutag": 1,
        "mutagName": "Mastercard",
        "manpik": 2,
        "solek": 2,
        "cardNumber": "*********",
        "expDate": "2305",
        "cardName": "Mastercard",
        "tokenizedCardNumber": "c8ae19356dd1d7e946165fab67a14516",
        "tranType": 1,
        "posEntryMode": 5,
        "isClub": false,
        "isPrepaid": false,
        "creditTerms": 1,
        "uid": "23031212432508830123729",
        "rrn": "948767075   ",
        "authCodeManpik": 1,
        "issuerAuthNum": "0652073",
        "acquirerMerchantID": "6543505",
        "sysTraceNumber": "01001001",
        "merchantReceipt": [
            {
                "fieldName": "סכום",
                "fieldValue": "1000"
            },
            {
                "fieldName": "ATC",
                "fieldValue": "0289"
            }
        ],
        "customerReceipt": [
            {
                "fieldName": "סכום",
                "fieldValue": "1000"
            },
            {
                "fieldName": "ATC",
                "fieldValue": "0289"
            }
        ]
    }
}
```

### 响应参数

下面是一个包含所有可能的响应参数及其描述的表格：

<table>
  <thead>
    <tr>
      <th>
        姓名
      </th>

      <th>
        类型
      </th>

      <th>
        描述
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `statusCode`
      </td>

      <td>
        整数
      </td>

      <td>
        操作的状态。`0` 表示成功。
      </td>
    </tr>

    <tr>
      <td>
        `statusMessage`
      </td>

      <td>
        string
      </td>

      <td>
        描述状态的消息，例如 "OK"。
      </td>
    </tr>

    <tr>
      <td>
        `mutag`
      </td>

      <td>
        整数
      </td>

      <td>
        卡品牌。
      </td>
    </tr>

    <tr>
      <td>
        `solek`
      </td>

      <td>
        整数
      </td>

      <td>
        收单机构。
      </td>
    </tr>

    <tr>
      <td>
        `manpik`
      </td>

      <td>
        整数
      </td>

      <td>
        发卡机构。
      </td>
    </tr>

    <tr>
      <td>
        `uid`
      </td>

      <td>
        string
      </td>

      <td>
        交易唯一标识符。
      </td>
    </tr>

    <tr>
      <td>
        `posEntryMode`
      </td>

      <td>
        整数
      </td>

      <td>
        POS 输入方式，卡交易的类型。可选值包括：`0`（磁条 MSR）、`5`（非接触磁条 CTLS MSR）、`40`（接触式 EMV）、`50`（电话）、`51`（仅签名）、`80`（回退（错误））以及 `81`（回退（无 AID））。
      </td>
    </tr>

    <tr>
      <td>
        `cardNumber`
      </td>

      <td>
        string
      </td>

      <td>
        掩码个人账号 (PAN)。
      </td>
    </tr>

    <tr>
      <td>
        `rrn`
      </td>

      <td>
        string
      </td>

      <td>
        来自授权实体的交易授权号。
      </td>
    </tr>

    <tr>
      <td>
        `issuerAuthNum`
      </td>

      <td>
        string
      </td>

      <td>
        发卡方授权号。
      </td>
    </tr>

    <tr>
      <td>
        `acquirerMerchantID`
      </td>

      <td>
        string
      </td>

      <td>
        收单方系统中的商户 ID。
      </td>
    </tr>

    <tr>
      <td>
        `authCodeManpik`
      </td>

      <td>
        整数
      </td>

      <td>
        授权代码。可选值包括：
        `0`（未授权），
        `1`（发卡方已授权），
        `2`（发卡方已拒绝），
        `3`（Stip 已批准），
        `4`（Stip 已拒绝），
        `5`（语音批准），
        `6`（语音拒绝），
        `7`（预授权已批准），
        `8`（银行卡已批准）。
      </td>
    </tr>

    <tr>
      <td>
        `gatewayToken`
      </td>

      <td>
        string
      </td>

      <td>
        该卡的网关令牌。
      </td>
    </tr>

    <tr>
      <td>
        `appVersion`
      </td>

      <td>
        string
      </td>

      <td>
        支付应用程序版本。
      </td>
    </tr>

    <tr>
      <td>
        `retailerId`
      </td>

      <td>
        string
      </td>

      <td>
        终端零售商 ID。
      </td>
    </tr>

    <tr>
      <td>
        `ecrNo`
      </td>

      <td>
        string
      </td>

      <td>
        POS 标识符。
      </td>
    </tr>

    <tr>
      <td>
        `vuid`
      </td>

      <td>
        string
      </td>

      <td>
        供应商唯一标识符。
      </td>
    </tr>

    <tr>
      <td>
        `tranCode`
      </td>

      <td>
        string
      </td>

      <td>
        交易代码。
      </td>
    </tr>

    <tr>
      <td>
        `merchantReceipt`
      </td>

      <td>
        键/值数组
      </td>

      <td>
        要打印或保存的商户小票数据。
      </td>
    </tr>

    <tr>
      <td>
        `customerReceipt`
      </td>

      <td>
        键/值数组
      </td>

      <td>
        要打印的客户小票数据。
      </td>
    </tr>
  </tbody>
</table>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.