Чтобы иметь возможность проводить рекурретные платежи, необходимо сначала провести обычную покупку или авторизацию средств с передачей флага "зарегистрировать рекарринг"
Последовательность операций
-
запрос
purchase -
обработать уведомление (callback) и взять оттуда
registeredMethods[0].entity.id -
послать запрос
recurringс передачей значения токена
Примеры запросов и ответов
Purchase
POST /card/1-1/operations/purchase HTTP/1.1
W1-Signature: YtfVchZeg1m1qbPxwD7sEgmml/NTmFPb7ntXNRbx6xmxsfRugfaqc3q0JlDnM3kwpcaau2x++Csl6COPJbnYU3PWfE/elpqIpFv8U+2acWo6gF/VA9D8bVKQTi+mIJCdfxFW/cARM1nSX22kkY8uOxb4cCWYNjWbQUvbvuedGHqsMm+u0gA+gM0zx7J7UaaTPbV6KGDP7CvabSxgpDtDPRFO1Tjq8tiu9ClsZqFX/U0FArhwz6rTC+mX5XY5sDY8wa3eCUV0PZnJ43xn+WUetRTGDCjyUmVQ9ZorPV8CzmCmq6cVwOOzqYFKBWw+joxx+3oqL1e4BBDOmaLB0dQyxA==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 764
{
"notification" : {
"url" : "http://127.0.0.1:8080/test/callback/default/",
"version" : 1
},
"externalId" : "ext#66-1770570576196",
"amount" : {
"amount" : 10.55,
"currency" : "USD"
},
"payer" : {
"paymentMethod" : {
"entity" : {
"pan" : "4111111111111111",
"expMonth" : 5,
"expYear" : 2030,
"cvv" : "444"
},
"type" : "CARD"
},
"info" : {
"phone" : "9001234567",
"email" : "no-reply@example.com",
"ip" : "127.0.0.1"
}
},
"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: 183
{
"operationId" : "1-1-a-650",
"status" : "SUCCEEDED",
"type" : "PURCHASE",
"externalId" : "ext#66-1770570576196",
"params" : { },
"actions" : {
"required" : [ ]
}
}
Уведомление клиента со стороны Payhub о покупке (Callback)
POST /test/emptycallback HTTP/1.1
W1-Signature: ceHKAG3KabiZp+RDS65RXVfny9LrsQkFvF/r5mgGEWDaomkS/xFkvGfdJorG1ngNlymDol2dx6PdAp917OrisgTAJTS3u9GNgQ0MhF+lGeQr6+QCGwKw2yY1/SJdLD8BhmCAN74Z2qpqy09k8h6LjlW6aUpPE2RVaqhmw9Hy45CrS9z5RCZn6VbU58UMTZCcvWAgrBcGjC/oc1PWI3GdR9q6LEdJdfw4/SP0xvND7NN8Q6vm/zHiDtAsCfQDLbDis1wHbF6kVDF5/W+VObM+cWIs+GS4l1/bVnos8Fbt3WtU96pjVLr/zUFFfqvSfZgO6zBGZcnx70Q+bMKeKzEY7w==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 833
{
"id" : "1-1-a-650",
"type" : "PURCHASE",
"externalId" : "ext#66-1770570576196",
"successful" : true,
"amount" : {
"amount" : 10.55,
"currency" : "USD"
},
"baseAmount" : {
"amount" : 10.55,
"currency" : "USD"
},
"registeredMethods" : [ {
"entity" : {
"id" : "1-6"
},
"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: HH3lZpD+2335lZRVMzkoUJ/fvE+nlsnZsOLprDAcFfgY4PFhjzvx5ZgWPdLc36WdbVdbUoCfEoYLZ/jXzhHHJtBICTB5ZAaYtdwTS9uL0gQGJ78YIdMf+YuIJ5d3Q9GR3ZZdLpI8tAIcamFRJSF2yE24DfhNc/cvEcrAv+vu/5jXOSZ/gD4LIARpJAFx4NideleMF62BHV+GVwPKjzoHXKIg5vK1NAP6JwM8qBxQMDpUF95ZrsfNsVjKILjAsVm+tAg/D6Fe0dah+zcHafpONMjsIrzfzTGNJasoTb6bCMA3X3Dhu8EDz9O/yLVJqKM3QXA47ITTUKrjqaD4sjdJ5A==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 465
{
"notification" : {
"url" : "http://127.0.0.1:8080/test/callback/default/",
"version" : 1
},
"externalId" : "ext#67-1770570576736",
"amount" : {
"amount" : 10.55,
"currency" : "USD"
},
"payer" : {
"paymentMethod" : {
"entity" : {
"id" : "1-6"
},
"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: 184
{
"operationId" : "1-1-a-651",
"status" : "SUCCEEDED",
"type" : "RECURRING",
"externalId" : "ext#67-1770570576736",
"params" : { },
"actions" : {
"required" : [ ]
}
}
Уведомление клиента со стороны Payhub о рекурренте (Callback)
POST /test/emptycallback HTTP/1.1
W1-Signature: OW86ksUIFkVod4e0Aj1Ppe0frSKKb1CBdNYQGuaz5FvP2paE7ijIP5dIjS9zNrBeslP75RcQx77UqBNrPOlVTUsw79rAICX4IjguZLVxHeuyMHFmBQr7UfRrLUu0hTgk2f6ToFr5oGzNplj+86zO8fADlHH/unW9/TYpjOLXPnM7VIsLtHxuQ1eky290nh8K+EVbkirFmp2SiOHzYp4rG3amdIOOTUA9usugFbWcsCg9hb/Ay6tF/MI1G/+SNNp0V8EB+1AD022G0JtQ7U5p/GuIpIdyOoDMXXhkvKVs0qNFb1OzaTBoJTSO+7TpFGhgo4dkSZCueZ438Yg8fbOsNA==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 647
{
"id" : "1-1-a-651",
"type" : "RECURRING",
"externalId" : "ext#67-1770570576736",
"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