question

darkatwork avatar image
darkatwork asked Mike M commented

Clover remote-pay-windows: retrieve emv tags for external receipts

This is for a POS "semi-integrated" approach using the remote-pay-windows REST service.

At this point in time, our requirement is to pretty much ignore the Clover Mini's internal receipt printer in favor of using already available 3" thermal receipt printers with auto-cutter (bypassing the Clover unit entirely).

How can I retrieve emv tags and other data required for printing on Sale Receipts, Return, Decline, and Void Receipts?

Does Clover/First Data have any receipt content requirements beyond the minimums provided by the card issuers?

Clover Mini
10 |2000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

Mike M avatar image
Mike M answered Mike M commented

This is a bit complicated, so I've included an image of a compliant receipt and the JSON that would be expected from the payment object. I'll list the required fields and some comments for each.

  1. Tender/sale type (payment.tender): should be able to use tender.label as shown in JSON below. Should be usually "DEBIT CARD" or "CREDIT CARD"; your app will need to determine how to handle tender types that are not one of those two.
  2. payment.cardTransaction.type: Confusingly this will typically come back as 'PREAUTH' or 'AUTH', but the receipt should say 'AUTH' or 'SALE' for those results, respectively.
  3. payment.clientCreatedTime: The receipt of course, must display the time of transaction somewhere
  4. Amount (payment.amount): Should be obvious
  5. Method (payment.cardTransaction.entryType): See image below for translation from "EMV_CONTACT" to "EMV" for example.
  6. Card label, should be either in payment.cardTransaction.applicationLabel for EMV and most NFC transactions, or should use the tender type (credit card or debit card) as mentioned above. Unfortunately, the applicationLabel is stored as a hex string of the bytes that can be converted into an ASCII string. You can decode the hex characters into bytes and then render those as a string in code, or if on a Unix machine, you can do the same by running "echo '5649534120435245444954' | xxd -revert -p", which would return "VISA CREDIT" in the below example.
  7. Reference number (payment.cardTransaction.referenceId): Usually used for chargebacks
  8. Authorization code (payment.cardTransaction.authCode): Definitely required
  9. MID: This is obtainable via the web services via "/v3/merchants/{merchantId}?expand=gateway" call (I've shown an example below).
  10. AID: (payment.cardTransaction.extra.applicationIdentifier): Application identifier (EMV only)
  11. Cardholder verification method (aka CVM) - (payment.cardTransaction.extra.cvmResult)

nocardholderverification --- NO CARDHOLDER VERIFICATION

pin_verified --- PIN VERIFIED

device_verified --- DEVICE VERIFIED

signature_verified --- SIGNATURE VERIFIED

pinandsignature_verified --- PIN & SIGNATURE VERIFIED

receipt example

entry types

Payment object JSON example: {baseUrl}/v3/merchants/{mId}/payments/{pId}?expand=cardTransaction,tender

{
    "amount": 39,
    "cardTransaction": {
        "authCode": "032973",
        "cardType": "VISA",
        "entryType": "EMV_CONTACT",
        "extra": {
            "applicationIdentifier": "A0000000031010",
            "applicationLabel": "5649534120435245444954", /** ("VISA CREDIT") **/
            "card": "{\"SourceReasonCode\":\"3\",\"CardLevelResult\":\"A \",\"ACI\":\"E\",\"TransID\":\"305351679480093FRGX\"}",
            "common": "{\"LocalDateTime\":\"20151217185226\",\"POSEntryMode\":\"051\",\"POSID\":\"0217\",\"MerchID\":\"RCTST0000008099\",\"TermEntryCapablt\":\"04\",\"STAN\":\"000238\",\"POSCondCode\":\"00\",\"TermID\":\"00000001\",\"TrnmsnDateTime\":\"20151217185226\"}",
            "cvmResult": "SIGNATURE",
            "func": "CREDIT",
            "iccContainer": "82025C005F3401019F02060000000000399F03060000000000005F2A0208409F0702FF009F0D05F0400088009F0E0500100000009F0F05F040009800500B56495341204352454449549F2608D4C76E51FFF28C839F0607A00000000310109F3602002F9F0902008C9F2701809F34031E03009F100706010A03A000009F3901059F3303E0F8C89F1A0208409F3501229505020000C0009A031512179B02E8009C01009F3704B77EA08B9F21031052278407A0000000031010"
        },
        "last4": "0010",
        "paymentRef": {
            "id": "05NAGREFN0K9C"
        },
        "referenceId": "535100000238",
        "state": "PENDING",
        "transactionNo": "000012", /** optional **/
        "type": "PREAUTH"
    },
    "cashbackAmount": 0,
    "clientCreatedTime": 1450378346000, /** 17 Dec 2015 10:49:44 AM **/
    "createdTime": 1450378347000,
    "device": {
        "id": "1d57378e-549c-4176-11d8-a2cb7a514ef9"
    },
    "employee": {
        "id": "ERDY7VA92Y3MP"
    },
    "id": "05NAGREFN0K9C",
    "modifiedTime": 1450378348000,
    "offline": false,
    "order": {
        "id": "XHBWZG3RNGJ2J"
    },
    "result": "SUCCESS",
    "taxAmount": 0,
    "tender": {
        "editable": false,
        "enabled": true,
        "href": "http://192.168.1.100:9001/v3/merchants/KWMJ1P0WCPBW4/tenders/J3S838WQESYAA",
        "id": "J3S838WQESYAA",
        "label": "Credit Card",
        "labelKey": "com.clover.tender.credit_card",
        "opensCashDrawer": false,
        "visible": true
    }
}

"/v3/merchants/{merchantId}?expand=gateway" example:

{
    "address": {
        "href": "http://192.168.1.100:9001/v3/merchants/KWMJ1P0WCPBW4/address"
    },
    "createdTime": 1448058800000,
    "gateway": {
        "accountName": "USA MOORE CONSULTING",
        "authorizationFrontEnd": "Nashville",
        "backendMid": "RCTST0000008099",
        "frontendMid": "RCTST0000008099",
        "mid": "RCTST0000008099",
        "newBatchCloseEnabled": true,
        "paymentGatewayApi": "FDCRCIP",
        "supportsNakedCredit": true,
        "supportsTipAdjust": true,
        "supportsTipping": true,
        "tid": "00000001"
    },
    "href": "http://192.168.1.100:9001/v3/merchants/KWMJ1P0WCPBW4",
    "id": "KWMJ1P0WCPBW4",
    "isBillable": true,
    "merchantPlan": {
        "id": "Q94B0SXGP7JJ6"
    },
    "modifierGroups": {
        "href": "http://192.168.1.100:9001/v3/merchants/KWMJ1P0WCPBW4/modifier_groups"
    },
    "name": "USA MOORE CONSULTING",
...
}
1 comment
10 |2000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Mike M avatar image Mike M commented ·

Just wanted to follow up on this. The answer above is incorrect in that it was tailored for using the REST API. That being said, I am told that the local REST service that communicates between the Mini and Windows POS "should get the same info back (for the most part)."

Currently, I believe only the Remote Pay Cloud SDK has the ability to retrieve additional receipt data back from the Mini. This is a feature that we are also investigating for the Windows SDK however I am unable to provide a timeframe for its development.

0 Likes 0 ·

Welcome to the
Clover Developer Community