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

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

  1. запрос purchase

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

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

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

Purchase

POST /card/1-1/operations/purchase HTTP/1.1
Content-Type: application/json; charset=UTF-8
W1-Signature: DMtS6EOpkVVZrOAley3ZP8pIgkRx1HzHdb7c5cXJFOLv3e7f87nmQfL5IUEJ9FSU1085BCGLkRbiuEykOsTLkAfL46fSP+jUQzjDyGHYS33lWELvtvwSrOitK8PTHFhK0eHmWa7jG02j7svjgIwZ8L/mkl0AyhQSRHIvN4c8nrr33S6C9/YHjYgIQhMHG7wp0CLraBH/as9g0lr2TRUa+X3smD9iFU1LJc4mRLPhZrO+Fq13zrBT4pK75KwJw/MIov3ZIoCTrJvJxLUnD6TIk4limRp+MQ1dikP9m1BIiAJUVs7/A+eq0TWpcZFOxW8hpZ0VzMoMM8hyiLu2BiULzA==
Content-Length: 633
Host: localhost:8080

{
  "notification" : {
    "url" : "http://localhost:65456/callback",
    "version" : 1
  },
  "externalId" : "ext#9",
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "4111111111111111",
        "expMonth" : 11,
        "expYear" : 2020,
        "cvv" : "444"
      },
      "type" : "CARD"
    },
    "info" : {
      "email" : "no-reply@hashconnect.eu",
      "phone" : "9001234567",
      "ip" : "127.0.0.1"
    }
  },
  "merchantParameters" : {
    "param1" : "1",
    "param2" : "2",
    "param3" : "3"
  },
  "registerRecurring" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 166
Date: Wed, 03 Jul 2019 10:37:20 GMT
Transfer-Encoding: chunked

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

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

POST /test/emptycallback HTTP/1.1
Content-Type: application/json; charset=UTF-8
W1-Signature: C+pHwy0w2jkX/1YnPKgerdyEnJkGtHX4NJhqu7grXPITUwv7X/miyOp8h7Ph84criKI533Ex/9rRSovt+yYc59dqtlQhQXu/js9k5oi00sPhDb7eukEwkzhVJcYsfky4RJsr9O3Pt1KGH32p8dL7xy7FzqBcgcH+4xj7pjhLrXJb9drC+2ava4GZoixPxYkGTFW8Dns5ipWkLICHSpYfMBSsJIwDA0FeLmQqVfLoM0zJz3as6dpI75LqyPRuzSRh7GW6w5ABPshBYJcmu3F6+13AUftMQPKwSFQa4zRBr+zBpcK/LYsh/9PbRH+kyj1QdaOtd2qzX/V9vsU7YtHywA==
Host: localhost:8080
Content-Length: 785

{
  "id" : "1-1-a-8",
  "type" : "PURCHASE",
  "externalId" : "ext#9",
  "successful" : true,
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "baseAmount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "registeredMethods" : [ {
    "entity" : {
      "id" : "1-2"
    },
    "type" : "RECURRING_TOKEN"
  }, {
    "entity" : {
      "id" : "payoutToken-411111-something-1111"
    },
    "type" : "PAYOUT_TOKEN"
  } ],
  "merchantParameters" : {
    "param1" : "1",
    "param2" : "2",
    "param3" : "3"
  },
  "status" : "SUCCEEDED",
  "transactions" : [ {
    "type" : "PURCHASE",
    "status" : "SUCCEEDED"
  } ],
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "411111XXXXXX1111"
      },
      "type" : "MASKED_CARD"
    }
  }
}
HTTP/1.1 200 OK
Date: Wed, 03 Jul 2019 10:37:20 GMT

Recurring

POST /card/1-1/operations/recurring HTTP/1.1
Content-Length: 407
W1-Signature: XW71oE1nnDvdioIN4mA0cEeL2Dahy9y5/WwJtln7qGsulXFvNvgKbKAPd8jVuErzTB2nK70nvAhNbNWbmJQ5BXYCuYag143ZJtpHfKjcAMyugs1NHuJ5j5FdoO/3ycYrub72CWiFPKDEWIlNIDQ1ucPAMoJCGoGVdnPvwZ1gL12lBNp1nAutzuXgmsqjddNapKPyjjyPFlo3xmzFzgVadfjsuCLKOs+sCwLCf3+YSrkE+Ynte/4PzuFYWJqLA7WEJqWgCbMdVvAc06P/vatuFtpdbYzHDN/p3xk0yLDAjyw3ypauImaKCmff5Bprq+R1v6sDg/0GYEhtJjmJ2oVxHg==
Content-Type: application/json; charset=UTF-8
Host: localhost:8080

{
  "notification" : {
    "url" : "http://localhost:65456/callback",
    "version" : 1
  },
  "externalId" : "ext#10",
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "id" : "1-2"
      },
      "type" : "RECURRING_TOKEN"
    }
  },
  "merchantParameters" : {
    "param1" : "1",
    "param2" : "2",
    "param3" : "3"
  }
}
HTTP/1.1 200 OK
Content-Type: application/json
Date: Wed, 03 Jul 2019 10:37:20 GMT
Transfer-Encoding: chunked
Content-Length: 168

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

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

POST /test/emptycallback HTTP/1.1
Content-Type: application/json; charset=UTF-8
Content-Length: 600
W1-Signature: kBComENaISRiWWvgRfcH1J7KDNGIJLujx5Tp+DlgWIpiakNBCsSANx5sUpirbUo28wJElNx5NT6RjLLPZi8NLtQO7ybPytmSvqwVb5Pans7LdrWLvIEaf44ujvdKlPqwwECobiZvM1/9HvfBAnGElbCcly4pT9OgmcfL37HvwH+HRKRjXCY7soBb7pYuu965SdEvfrDkwn5dv5uHU4/InVddN6LuOUI3JBGPsfkt0W3u1y1KdTJpukMa6GyiY6EcSaBikdD8tHqt9BwCMqceE2DkEn5YygYZkAGjDXYucZh95Ycv0ask5j51bJ7a7h0D7em8PtpdNwg4jpkaJOSRQQ==
Host: localhost:8080

{
  "id" : "1-1-a-9",
  "type" : "RECURRING",
  "externalId" : "ext#10",
  "successful" : true,
  "amount" : {
    "amount" : 10.57,
    "currency" : "USD"
  },
  "baseAmount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "registeredMethods" : [ ],
  "merchantParameters" : {
    "param1" : "1",
    "param2" : "2",
    "param3" : "3"
  },
  "status" : "SUCCEEDED",
  "transactions" : [ {
    "type" : "RECURRING",
    "status" : "SUCCEEDED"
  } ],
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "411111XXXXXX1111"
      },
      "type" : "MASKED_CARD"
    }
  }
}
HTTP/1.1 200 OK
Date: Wed, 03 Jul 2019 10:37:21 GMT