sergiocharm
Опытный

Ребята, подскажите как реализовать интеграцию?
В общем, мы заключили договор с Купит в кредит, они нам выслали инструкцию https://www.kupivkredit.ru/join, но моих познаний не хватает чтобы ее реализовать.
Помогите чем смогите. Получается мне как то надо передать цену, и вообще это все реализовать пока не знаю как.
В общем, мы заключили договор с Купит в кредит, они нам выслали инструкцию https://www.kupivkredit.ru/join, но моих познаний не хватает чтобы ее реализовать.
Помогите чем смогите. Получается мне как то надо передать цену, и вообще это все реализовать пока не знаю как.
Код:
CREATE
Используется для создания заявки на стороне Банка. В конверте ответа возвращает ссылку на форму заявки.
URL вызова: https://tcb-qa.tcsbank.ru/api/partners/v1/payu/create
HTTP-метод: POST
Заголовки:
Заголовок Значение
Content-Type application/json
Cache-Control no-cache
X-Api-Key kvk_store
X-Api-Signature signature (см. алгоритм формирования подписи)
Конверт запроса:
{
"requestId":"123e4567-e89b-12d3-a456-426655440000",
"timestamp": 1469553689761883,
"sellerUserId":"tcs", /
"requestedAmount": {
"value" : 5100.20 ,
"currency": "RUB" },
"orderItems": [{
"price": {
"value" : 100.01 ,
"currency": "RUB" },
"category": "Courier Delivery",
"quantity": 1,
"title": "Доставка курьером на работу"
},
{
"price": {
"value" : 5000.19 ,
"currency": "RUB" },
"category": "Cats",
"quantity": 1,
"title": "Чеширский кот, 1 год"
}],
"applicationFields":{
"requestedTerm": 12
}
}
Алгоритм формирования подписи:
Подпись заказа генерируется по алгоритму SHA256withRSA на основании тела запроса.
В PHP можно воспользоваться встроенными функциями openssl_sign и openssl_verify. Публичный и приватный ключ вы найдете во вложении к письму.
protected function getSignature($data, $private_key, $public_key) {
assert(is_string($data));
assert(is_string($private_key));
assert(is_string($public_key));
openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_SHA256);
if (openssl_verify( $data, $signature ,$public_key, "sha256WithRSAEncryption") == 1) {
return bin2hex($signature);
} else {
return null;
}
}
Конверт ответа:
{
"requestId":"123e4567-e89b-12d3-a456-426655440000",
"timestamp": 1469553689761884,
"url":"http://www.tinkoff.ru/online/574f02061400005800a47fa0",
"externalReferenceId":"574f02061400005800a47fa0"
}
Пример реализации на PHP (на примере Zend Http Client):
public function create($order)
{
$private_key = file_get_contents($this->options['path']['private_key']);
$public_key = file_get_contents($this->options['path']['public_key']);
$order = array(
'timestamp' => time(),
'requestId' => $order->number,
"orderItems" => array(
array(
'price' => array(
'value' => $order->price,
'currency' => 'RUB'
),
'category' => $order->product->category,
'title' => $order->product->name,
)
),
"requestedAmount" => array(
'value' => $order->price,
'currency' => 'RUB'
),
"applicationFields" => array(
"requestedTerm" => 10
),
"sellerUserId" => "tcs",
);
$data = json_encode($order);
$signature = $this->getSignature($data, $private_key, $public_key);
if (is_null($signature)) {
return null;
}
$headers = array(
'Content-Type' => 'application/json',
'X-Api-Key' => 'kvk_store',
'Cache-Control' => 'no-cache',
'X-Api-Signature' => $signature,
);
$client = new HttpClient();
$client->setMethod("POST");
$client->setUri("https://tcb-qa.tcsbank.ru/api/partners/v1/payu/create");
$client->setHeaders($headers);
$client->setRawBody($data);
$client->setAdapter("\Zend\Http\Client\Adapter\Curl");
/** @var HttpResponse $response */
$response = $client->send();
//var_export($response->getBody());
if ($response->isSuccess()) {
return json_decode($response->getContent());
}
if ($response->isClientError() || $response->isServerError()) {
return json_decode($response);
}
return null;
}