Update the Smart Transaction

In our example we will:

  • update the basket (basket/products);

  • add a secucard (idents);

  • add a customer reference (merchantRef);

  • add an order ID (transactionRef).

You can change the Smart Transaction as long as the payment has not been executed. The endpoint for doing this is PUT /api/v2/Smart/Transactions/{id}.

You need to send the full Smart Transaction with your modifications.

Request
PUT /api/v2/Smart/Transactions/STX_KJXJDUN542NR3WMRHRVU5WWM6ZQEA2 HTTP/1.1
Host: connect-testing.secupay-ag.de
Authenticate: Bearer qb56tjj1bcvo9n2nj4u38k84lo
Content-Type: application/json
Accept: application/json
 
{
"idents": [
{
"type": "card",
"value": "9276004429942845"
}
],
"basket": {
"products": [
{
"id": 1,
"parent": null,
"articleNumber": 30037,
"ean": null,
"desc": "Sandwich Romano",
"quantity": 1,
"priceOne": 349,
"tax": 7
},
{
"id": 2,
"parent": null,
"articleNumber": 30200,
"ean": null,
"desc": "Fruit salad, small bowl",
"quantity": 1,
"priceOne": 249,
"tax": 7
},
{
"id": 3,
"parent": null,
"articleNumber": 51,
"ean": "4999012345678",
"desc": "Water, mildly sprinkling, 0.25 ltr.",
"quantity": 2,
"priceOne": 99,
"tax": 19
}
]
},
"basket_info": {
"sum": 796,
"currency": "EUR"
},
"merchantRef": "customer nr. 123",
"transactionRef": "order nr. 123"
}

This creates a Smart Transaction about €7.96. The gross unit prices of the articles in the basket are €3.49, €2.49 and €0.99.

Monetary amounts are expressed in the smallest currency unit (e. g. Euro Cent). The same applies to the card details in the response.

Successful response:

Response
HTTP/1.1 200 OK
Content-Type: application/json
...
 
{
"object": "smart.transactions",
"id": "STX_KJXJDUN542NR3WMRHRVU5WWM6ZQEA2",
"merchant": {
"object": "general.merchants",
"id": "MRC_35SZ3R5GGQQP4T0U2T5GFAN9P6C4PG",
"companyname": "John's Bakery"
},
"created": "2020-09-17T09:18:14+02:00",
"status": "created",
// ...
"merchantRef": "customer nr. 123",
"transactionRef": "order nr. 123",
"basket": {
"products": [
{
"id": 1,
"parent": null,
"articleNumber": 30037,
"ean": null,
"desc": "Sandwich Romano",
"quantity": 1,
"priceOne": 349,
"tax": 7,
// ...
},
{
"id": 2,
"parent": null,
"articleNumber": 30200,
"ean": null,
"desc": "Fruit salad, small bowl",
"quantity": 1,
"priceOne": 249,
"tax": 7,
// ...
}
{
"id": 3,
"parent": null,
"articleNumber": 51,
"ean": "4999012345678",
"desc": "Water, mildly sprinkling, 0.25 ltr.",
"quantity": 2,
"priceOne": 99,
"tax": 19,
// ...
}
],
// ...
},
"basket_info": {
"sum": 796,
"currency": "EUR",
// ...
},
"idents": [
{
"object": "smart.idents",
"id": "smi_1",
"prefix": "9276",
"name": "secucard Kundenkarte",
"type": "card",
"value": "9276004429942845",
"valid": true,
"merchantcard": {
"object": "loyalty.merchantcards",
"id": "MCD_2RXTNXPRM2YG9922UMBHHAEWEGN6AJ",
"merchant": {
"object": "general.merchants",
"id": "MRC_35SZ3R5GGQQP4T0U2T5GFAN9P6C4PG"
},
"created_for_merchant": {
"object": "general.merchants",
"id": "MRC_35SZ3R5GGQQP4T0U2T5GFAN9P6C4PG"
},
"card": {
"object": "loyalty.cards",
"id": "CRD_2U7MTNAMM3PMBPAB50C9G2AEHA9GPJ",
"cardnumber": "9276004429942845",
"created": "2015-09-28T16:01:20+02:00"
},
"cardgroup": {
"object": "loyalty.cardgroups",
"id": "CRG_2BESGJNETJJRZVVYS8R7JWGVWK4PRZ",
"display_name": "Geschenkgutschein",
"display_name_raw": "Geschenkgutschein",
"stock_warn_limit": 0,
"picture": "https://connect.secucard.com/ds_g/8e79737df1e2513db48908b342c3cc436edf501a"
},
"created_for_store": {
"object": "general.stores",
"id": "STO_2ZCZRU9V6U8QA7B49K94667UP6C4PJ"
},
"customer": {
"object": "loyalty.customers",
"id": "CUS_2YBREKK0A2MNAXJ752TSDD9DH3PKAJ",
"contact": {
"name": "Max Mustermann",
"forename": "Max",
"surname": "Mustermann",
"dob": "1981-02-14T00:00:00+00:00"
},
"created": "2018-05-03T10:14:06+02:00",
"consent_for_communication": true
},
"is_base_card": true,
"points": 0,
"cash_balance": 500,
"bonus_balance": 0,
"balance": 500,
"last_usage": "2020-03-17T07:22:36+01:00",
"last_charge": "2019-12-10T12:56:08+01:00",
"stock_status": "active",
"lock_status": "unlocked",
"passcode": 0,
"expiry_date": null
},
"customer": {
"object": "loyalty.customers",
"id": "CUS_2YBREKK0A2MNAXJ752TSDD9DH3PKAJ",
"contact": {
"name": "Max Mustermann",
"forename": "Max",
"surname": "Mustermann",
"dob": "2018-02-14T00:00:00+00:00"
},
"created": "2018-05-03T10:14:06+02:00",
"consent_for_communication": true
}
}
],
"is_demo": true,
// ...
}

As you see, the secucard is recognized.

Here a subsection taken from the Merchant Card details:

Excerpt of the Merchant Card
{
// ...
"points": 12,
"cash_balance": 500,
"bonus_balance": 0,
"balance": 500,
"last_usage": "2020-03-17T07:22:36+01:00",
"last_charge": "2019-12-10T12:56:08+01:00",
"stock_status": "active",
"lock_status": "unlocked",
"passcode": 0
}

And here the explanation:

Field

Description

cash_balance

Money credit reveived for payment

bonus_balance

Money credit received as bonus for a former buy

balance

Total money credit (cash and bonus balance can be spent the same time)

stock_status

Life cycle of the card:

  • stored

  • active

  • inactive

lock_status

  • locked

  • unlocked

passcode

Whether you have to check the passcode before the card is used:

  • 0: passcode check is not needed;

  • 1: passcode check is needed.

All money amounts are expressed in the smallest currency unit (e. g. Euro Cent).

This means, applied to our example:

  • There is €5.00 of money balance received for a payment.

  • There is no money balance received as a bonus for a former buy.

  • The buyer can pay €5.00 using this card.

  • There are also a few bonus points.

  • The card can be used. It is active, and there are no locks.

  • You don't need to bother the buyer with the card passcode (card security code).

The above means, you can use the card balance for the next payment. But the customer can also save it for later. Read more on this in the section about how to carry out the payment.