Чтобы иметь возможность проводить рекурретные платежи, необходимо сначала провести обычную покупку или авторизацию средств с передачей флага "зарегистрировать рекарринг"

Последовательность операций

  1. запрос purchase

  2. обработать уведомление (callback) и взять оттуда registeredMethods[0].entity.id

  3. послать запрос recurring с передачей значения токена

Примеры запросов и ответов

Purchase

POST /card/1-1/operations/purchase HTTP/1.1
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
W1-Signature: oW9zKVZWQfjdMLra4Dz8KYMzMZhe+h6gMlkJ3G2X8+7U7jtWYHswGjS+wEoZcMEvTwIumbeUmJtNFVUZgSnUu2JcfyIzHubZV9TcvdDKTM+FtwxehY+QCTqdSfdLx3VHeaIjg8Sch5TPoQme5lcRwgIcp/yROjjgiXufzTxUJSkNQNVXSysumFODJJ8zi3B6QMS4D7h6t794/yqSVW3tZPBhmkF0Irg9ByKzAMwJQ43no7zVxWP16rs6a9mXb0y+ElyK/l0WJEj8ywjOHC7pUgLbUntNq2J4Xd5ASGmhoGcxkmQqsM7Ejwn1RrtMa77HymvxMV5nexdcFKPcmbJoxg==
Content-Type: application/json
Host: payment.flexo.systems
Content-Length: 764

{
  "notification" : {
    "url" : "http://127.0.0.1:8080/test/callback/default/",
    "version" : 1
  },
  "externalId" : "ext#68-1791069067472",
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "4111111111111111",
        "expMonth" : 5,
        "expYear" : 2030,
        "cvv" : "444"
      },
      "type" : "CARD"
    },
    "info" : {
      "phone" : "9001234567",
      "ip" : "127.0.0.1",
      "email" : "no-reply@example.com"
    }
  },
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  },
  "registerRecurring" : true,
  "tds" : {
    "notificationUrl" : "http://tds.notification.url:6789"
  }
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 182

{
  "operationId" : "1-1-a-58",
  "status" : "SUCCEEDED",
  "type" : "PURCHASE",
  "externalId" : "ext#68-1791069067472",
  "params" : { },
  "actions" : {
    "required" : [ ]
  }
}

Уведомление клиента со стороны Flexo о покупке (Callback)

POST /test/emptycallback HTTP/1.1
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
W1-Signature: Gdw/zPrGZ2f7i9Au7BgAsxMY/6SOdf4mDhfvCciGpfqPVdFEuLOAI+Teo/sfPkiiq/cLTP3fn0mv2Hhuk4sMVp/giGVEuJU7w/Rs+A0+9rombJb9NoVvIXyF2ZYivDNLeQv8t+OmAtrREToQ1Er2T/jayWPCixmV0eI9GAT91mHTQhY9dtSHy+ddpa9nSkbkcZD48YzAATAnRNHt3dkR4aqqgSihUlnFgx5uB+ZAQ6ouzOHf47CnAtAzD/IqOdo7W+5a02HO6PnT2sa2ePTnTz7ke0PME5r+Vqj/WLO7yni4Xt7qFB9t18kfI+F0ziX/beccLbe/4Ch7oaldw4KHFQ==
Content-Type: application/json
Host: payment.flexo.systems
Content-Length: 832

{
  "id" : "1-1-a-58",
  "type" : "PURCHASE",
  "externalId" : "ext#68-1791069067472",
  "successful" : true,
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "baseAmount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "registeredMethods" : [ {
    "entity" : {
      "id" : "1-4"
    },
    "type" : "RECURRING_TOKEN"
  }, {
    "entity" : {
      "id" : "payoutToken-411111-something-1111"
    },
    "type" : "PAYOUT_TOKEN"
  } ],
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  },
  "status" : "SUCCEEDED",
  "transactions" : [ {
    "type" : "PURCHASE",
    "status" : "SUCCEEDED"
  } ],
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "411111XXXXXX1111"
      },
      "type" : "MASKED_CARD"
    }
  }
}
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Recurring

POST /card/1-1/operations/recurring HTTP/1.1
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
W1-Signature: PG2MMADYVCmRwWBj0Xik2ESQ+XBgD/HyTih1H3N5f4/uGRFAOeGVNhLDplPAUuw+xyJSlAPGvltA0vTBn7Bka194BR3ZSMVRA4RLBhpHwJtBB57pypbLYPgDVcO5GjHelaLs84RGsmKV37P80NYPYW0GadNCx6I9cjxaaCbyzxiX4F0yoV9DqK1dwSY37FjCpoRD813Aa1hBw2KeutYlItOxUGTESHixpSx7RZLMidvmmN/m91S0wARmWQxgp690LTTDO5dZ4WAkekejqDo9l8lw6KT4jm0CTalzwL7iv1Nw8D6LC2OjxF9ApPD142z9LlPRIIIhUKYOOWZ0S2OyJA==
Content-Type: application/json
Host: payment.flexo.systems
Content-Length: 465

{
  "notification" : {
    "url" : "http://127.0.0.1:8080/test/callback/default/",
    "version" : 1
  },
  "externalId" : "ext#69-1791069068023",
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "id" : "1-4"
      },
      "type" : "RECURRING_TOKEN"
    }
  },
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  }
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 183

{
  "operationId" : "1-1-a-59",
  "status" : "SUCCEEDED",
  "type" : "RECURRING",
  "externalId" : "ext#69-1791069068023",
  "params" : { },
  "actions" : {
    "required" : [ ]
  }
}

Уведомление клиента со стороны Flexo о рекурренте (Callback)

POST /test/emptycallback HTTP/1.1
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
x-RequestId: acc-test-c9485544-40a5-4535-adce-c65ac88d7689
W1-Signature: W/yu8/Bv30z9I0r5j2htFBoSiNpXWI8OiSVmlLDj7/UZfdLfG/Svogci/h30UixjfR2MOINy9CbYXvSjN+UqPkrCZX0lUI29KYTP9SP2SyDAhJC9dBF7JI/Nx/WRjIAu3TVePXce82jP/zljANipBxxpjLUBr+o4sVDFmbjgKBR10TAbqC6uw4iZAEzprkWPXuOdJw+BX7PWHu4hGxadp4Qk3CVn8IWlZvWtwMrvwWmTRM+cQgSlKIF9Oh2fHFUPppo+8yYD4ETizJXEBGzYN7dWBIDqcoaJOg33HrzCJU3LvMLgFKZ0T8xvDv3RkP1SHjL7vNqCCty5BLoxu7zhtQ==
Content-Type: application/json
Host: payment.flexo.systems
Content-Length: 646

{
  "id" : "1-1-a-59",
  "type" : "RECURRING",
  "externalId" : "ext#69-1791069068023",
  "successful" : true,
  "amount" : {
    "amount" : 10.57,
    "currency" : "USD"
  },
  "baseAmount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "registeredMethods" : [ ],
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  },
  "status" : "SUCCEEDED",
  "transactions" : [ {
    "type" : "RECURRING",
    "status" : "SUCCEEDED"
  } ],
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "411111XXXXXX1111"
      },
      "type" : "MASKED_CARD"
    }
  }
}
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers