跳转到内容

预授权

预授权

您可以通过在 POST Payment 请求中将 autoCapture 的值设置为 false 来发起预授权交易。后续您可以根据消费者实际的交易金额通过 POST Capture 请求进行预授权完成,需要注意的是 EVO Cloud 仅支持小于等于预授权金额的预授权完成。

主要流程如下:

  1. 在调用 Payment 接口时需要包含但不限于以下参数,字段详情参考 API 文档:
    • autoCapture:固定值 false,表示预授权。
    • paymentMethod.type:表明支付方式的字段,如果是卡交易则使用 card
    • paymentMethod.card:包含消费者卡信息以及终端信息的结构体。当 paymentMethod.typecard 时必填。
    • transAmount:包含交易金额和交易币种的结构体。
    • merchantTransInfo:包含商户商户订单号的结构体。
    • pspInfo:包含卡组织资质信息的结构体。
预授权请求报文样例
js
curl 'https://hkg-online-uat.everonet.com/g2/v0/payment/acq/10130014/evo.offline.payment' \
-H 'Authorization: ce7bfb5b8e015954ea2f64f99e4973520ddb40d098ce3c76c946338663b95906' \
-H 'DateTime: 20240306115720+0800' \
-H 'SignType: SHA256' \
-H 'Content-Type: application/json' \
-H 'MsgID: M20240306115720557' \
-d '{
    "merchantTransInfo": {
        "merchantTransID": "T20240306115720557",
        "merchantTransTime": "2024-03-06T11:57:20+08:00"
    },
    "paymentMethod": {
        "type": "card",
        "card": {
            "posEntryMode":"manual",
            "pinFlag":false,
            "termReadability":"5",
            "cardInfo": {
                "cardNumber": "4761340000000043"
            }
        }
    },
    "transAmount": {
        "currency":"HKD",
        "value":"1.00"
    },
    "autoCapture": false,
    "pspInfo": {
        "mcc": "5499",
        "sponsorCode": "441378",
        "merchantID": "202106305812001",
        "terminalID":"00000001",
        "merchantName": "Test",
        "storeID": "202106305812001",
        "storeName": "Test Store",
        "street": "Test street",
        "city": "MYS",
        "postCode": "202000",
        "nation": "MYS"
    }
}'
  1. 检查 EVO Cloud 应答中的 payment.status 字段内容。如果字段的值为 Authorised 则表示交易成功,否则就需要查看 result.code 以及 result.message 来查看交易失败原因。
  2. 如果您没有收到来自 EVO Cloud 的应答报文,则需要您调用 GET Payment 来查询交易结果。当收到查询应答时,您同样也需要通过 payment.status 字段内容来判断交易结果,判断方式与第 2 步一致。如果交易失败,您需要通过 payment.failureCode 以及 payment.failureReason 来查看交易失败原因。
  3. 如果您在 POST Payment 请求中上送了 webhook,您也可以通过异步通知来获取交易结果。同样也需要通过 payment.status 字段内容来判断交易结果,判断方式与第 2 步一致。
  4. 向消费者展示付款结果。