Чтобы иметь возможность проводить рекурретные платежи, необходимо сначала провести обычную покупку или авторизацию средств с передачей флага "зарегистрировать рекуррент"
Последовательность операций
-
запрос
purchase
-
обработать уведомление (callback) и взять оттуда
registeredMethods[0].entity.id
-
послать запрос
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