платежный шлюз — интеграция CyberSource Secure Acceptance с REST Api в переполнении стека

Я пытаюсь интегрировать Cyber ​​Source Платежный шлюз в php используя REST API. И я нашел следующую ссылку в GitHub

После необходимых изменений, наконец, я могу войти в систему (Authenticate) к источнику Cyber, но я получаю ниже ошибки. (Я могу проверить журналы из Cyber ​​Source)

req_reference_number: 474 => ОШИБКА 101 — Параметры запроса неверны или отсутствуют

signed: true

Array
(
[auth_trans_ref_no] => 474
[decision] => ERROR
[message] => Request parameters are invalid or missing
[reason_code] => 101
[req_access_key] => 5e00e27842d73381b0**************
[req_amount] => 569
[req_bill_to_address_city] => Mountain View
[req_bill_to_address_country] => US
[req_bill_to_address_line1] => 1 My Apartment
[req_bill_to_address_line2] => 2 nd street
[req_bill_to_address_postal_code] => 94043
[req_bill_to_address_state] => CA
[req_bill_to_email] => someemail@somedomain.com
[req_bill_to_forename] => Elavarasan
[req_bill_to_phone] => 6508764564
[req_bill_to_surname] => Natarajan
[req_currency] => USD
[req_customer_ip_address] => 127.0.0.1
[req_device_fingerprint_id] => v1rh0p44gpnhag1a7mfp9tst25
[req_item_0_code] => KFLTFDIV
[req_item_0_name] => KFLTFDIV
[req_item_0_quantity] => 1
[req_item_0_sku] => sku001
[req_item_0_unit_price] => 20.00
[req_item_1_code] => KFLTFD70
[req_item_1_name] => KFLTFD70
[req_item_1_quantity] => 1
[req_item_1_sku] => sku002
[req_item_1_unit_price] => 10.00
[req_line_item_count] => 2
[req_locale] => en-us
[req_merchant_defined_data1] => MDD1
[req_merchant_defined_data2] => MDD2
[req_merchant_defined_data3] => MDD3
[req_merchant_defined_data4] => MDD4
[req_merchant_descriptor] => Krungsri
[req_override_custom_cancel_page] => http://localhost/cyphp/sa-wm/response.php
[req_override_custom_receipt_page] => http://localhost/cyphp/sa-wm/response.php
[req_profile_id] => *******************************
[req_reference_number] => 474
[req_transaction_type] => sale
[req_transaction_uuid] => 5aa6329409169
[required_fields] => payment_method
[signature] => IJ0iEsOJLZe2W4dNrogdzp8op8Evon2wU1KvA3W6SzM=
[signed_date_time] => 2018-03-12T07:57:00Z
[signed_field_names] => decision,req_access_key,req_profile_id,req_transaction_uuid,req_transaction_type,req_reference_number,req_amount,req_currency,req_line_item_count,req_locale,req_override_custom_receipt_page,req_override_custom_cancel_page,auth_trans_ref_no,req_item_0_code,req_item_0_name,req_item_0_quantity,req_item_0_sku,req_item_0_unit_price,req_item_1_code,req_item_1_name,req_item_1_quantity,req_item_1_sku,req_item_1_unit_price,req_bill_to_forename,req_bill_to_surname,req_bill_to_email,req_bill_to_phone,req_bill_to_address_line1,req_bill_to_address_line2,req_bill_to_address_city,req_bill_to_address_state,req_bill_to_address_country,req_bill_to_address_postal_code,req_customer_ip_address,req_device_fingerprint_id,req_merchant_defined_data1,req_merchant_defined_data2,req_merchant_defined_data3,req_merchant_defined_data4,req_merchant_descriptor,required_fields,reason_code,message,signed_field_names,signed_date_time
[utf8] => ✓
)

Если я переименую или удалю какой-либо параметр, аутентификация не пройдена Поэтому я надеюсь, что я передаю неправильное значение. Но я не мог выяснить, какой из них ..

Я пытался изменить почти все значения полей, которые я передаю, но каждый раз получал одну и ту же ошибку

ОШИБКА 101 — Параметры запроса неверны или отсутствуют

введите описание изображения здесь

0

Решение

Я только сделал SOAP, но, посмотрев на пример rest v1, похоже, что API-ключ и секретный ключ передаются для создания Paytoken в Apiclient. Авторизационный платеж должен быть примерно таким (после установки SDK):

<?php
use \CyberSource\Authorizations as Authorizations;
use \CyberSource\Configuration as Configuration;

class CyberSource {

private $config;

function __construct($apiKey, $secretKey) {
// pass apikey and secretkey to configuration
$this->config = new Configuration($apiKey, $secretKey);
}

private function runAuth($this->config) {
$api = new Authorizations($this->config);
$jsonPayload = // ur json request payload

try{
// pass the request json payload object
$response = $api->createAuthorization($jsonPayload);
} catch (\E $e) {
//throw error here
}
}

}

если вы должны использовать v2, то вам нужно прочитать это PDF Есть несколько вещей, которые нужно добавить в заголовок для аутентификации учетной записи.

1

Другие решения

Наконец, я нашел пример кода (php) из Cyber ​​Source, мы просто должны настроить его согласно учетным данным. Здесь ссылка на сайт

Исходный код

Вы должны определить свой секретный ключ в security.php файл

define ('SECRET_KEY', '7f15d699ff14461b9a84*****');

А также,
access_key а также profile_id в signeddatafields.php файл

<input type="hidden" name="access_key" value="5e00e27842d73******">
<input type="hidden" name="profile_id" value="43C533AC-****-****-****-*********">

Вот и все.

0