Чтобы иметь возможность проводить рекурретные платежи, необходимо сначала провести обычную покупку или авторизацию средств с передачей флага "зарегистрировать рекарринг"
Последовательность операций
-
запрос
purchase -
обработать уведомление (callback) и взять оттуда
registeredMethods[0].entity.id -
послать запрос
recurringс передачей значения токена
Примеры запросов и ответов
Purchase
POST /card/1-1/operations/purchase HTTP/1.1
W1-Signature: W4kTUzx/mh3C9mI71qbywmbir1frrBGGLvt38X5NNO4LOiiizH7BmnQYIgAfC20airFBB3TzK6/xKvxc9IEFYw++i0OgSXiCBo1h5opBy2TVAAwVdKjPhXrTHa74Bmfaj1DaA4yDH/8ySUxXP0KiaKD4DrY5n2e+xylntjLQtAcaC7bLo1HWEKOuMpJNqZSg/q3Apse10SD+UkOXNGct0Y66kbGUpyfyntC8+BPtImHWoPK0KhF5bap+RqZesP95cZsUECxaekbzWeNThqm6eojIs/ATSMOiu3hI8nd/xdqnKYm4SyBwShAHh8/YB+uYNjVLeFUiYhzfNhojZF/UTw==
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#66-1779575535226",
"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-54",
"status" : "SUCCEEDED",
"type" : "PURCHASE",
"externalId" : "ext#66-1779575535226",
"params" : { },
"actions" : {
"required" : [ ]
}
}
Уведомление клиента со стороны Flexo о покупке (Callback)
POST /test/emptycallback HTTP/1.1
W1-Signature: mZHlA8uy/N693Os69X+7FiSTQ6i5G388TIWaQcD0Y6g7Etno7sR95OQPmYNUaaD4W4mO2mHBZrE1sVEVUVcfwfGyqPMuMlvJH9f/+CSu0dHKTie0GbbsSK9jQ3URljcww/5hxwpZZ/jkz8w0F7y4ILm25HaJ/uUcYVsXswDLRiKkhrk+J86yishp6QrgEQTZ1KOHK+3eC7kGAd828uCHPpA4Ey4zXFjajxYdCdP2NAuC/zf7ZJgjppRZnDsHIPXkc+xe8l5wJt2FKdcTT0Q3Nc2me0NE13G1QhTXQPt3GF+KSu1SBibYtjQjjU+4zq5mUQvkZzNGVk8uJWRYJp4Dsg==
Content-Type: application/json
Host: payment.flexo.systems
Content-Length: 832
{
"id" : "1-1-a-54",
"type" : "PURCHASE",
"externalId" : "ext#66-1779575535226",
"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
W1-Signature: hBs+fpdI2VfDuXdWNB8PQki2hFg/Nnc1f21SGtna8QMXG9uNgwLzVbS+vQd8Zzb0HIYlZ0954v/lWQRin8uxZEy1eCSlQXJ7DhQux+doCUl8glRuME3Fy1CNqzsc/jw8pLys+FY42sMFMpRqM19sNrKQrI4TvHOtwCMo0LanqjC/wf9ewgIfkvxGlPrVS6n2Vc7yhvP80TO0iZNlm2HS83bNnzP7RJIVMkQIdyVzNQLyj6asaf4JGbdpLWsH/0yppzpK0WpQ970ACW+sjvDCWuJJR//a9mS9nDT5YSRKNfgP80kFMMnaRjtsOMbFFpt74OYkNExNuObPc/rh5qzEIg==
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#67-1779575536199",
"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-55",
"status" : "SUCCEEDED",
"type" : "RECURRING",
"externalId" : "ext#67-1779575536199",
"params" : { },
"actions" : {
"required" : [ ]
}
}
Уведомление клиента со стороны Flexo о рекурренте (Callback)
POST /test/emptycallback HTTP/1.1
W1-Signature: FVWn1G4aM62rUFnOmmmR+dk3TJ9/UNXd1uNkgPNcel/sI0/f+5AyL34r5PCLBt3jISGMi8qmtIQ2xPCYoKwKGiN7ZGWj8IjGNlV93LP31mAYzzltajsUzHUECTTJJlHl517UZ7nESVZ1GRqi2ZyPqPBapF4mgBaP07ORhmd0Z5zR+36PnLVl7tZmqJ4SlUVGknLndTu7dw7NiK0o25Gl/jSbXedDlvVThPblMJ+3hGjrTIHhymhPwc5LFBFGw3xqt3vMFZf+lQDqSjJA5GQhPdGk9DSslkyiy3QfDMGd3RuTnFn7KxXuC229hzi8C8hiKgiqTdZ+kZGAKpklfQnJEA==
Content-Type: application/json
Host: payment.flexo.systems
Content-Length: 646
{
"id" : "1-1-a-55",
"type" : "RECURRING",
"externalId" : "ext#67-1779575536199",
"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