Неверный идентификатор платежа

Я всегда получаю эту ошибку:

Произошла ошибка при обработке вашей транзакции Неверный идентификатор платежа

всякий раз, когда я использую созданный токен оплаты из секретного ключа песочницы. документация показывает, что verifyCharge() принимает токен оплаты в качестве параметра, но когда я передаю его, я получил указанную ошибку.

PaymentTokenAPI

use com\checkout;
class PaymentTokenAPI {
private $apiClient;
private $tokenService;
private $tokenPayload;

function __construct($secretKey) {
$this->apiClient = new checkout\ApiClient($secretKey);
$this->tokenService = $this->apiClient->tokenService();
$this->tokenPayload = new checkout\ApiServices\Tokens\RequestModels\PaymentTokenCreate();
}
public function setInvestmentValue($value) {
$this->tokenPayload->setCurrency('PHP');
$this->tokenPayload->setValue("$value");
}
public function createPaymentToken() {
$paymentToken = $this->tokenService->createPaymentToken($this->tokenPayload);
return $paymentToken;
}
}

VerifyPaymentTokenAPI

use com\checkout;
class VerifyPaymentTokenAPI {
private $apiClient;
private $charge;

function __construct($secretKey) {
$this->apiClient = new checkout\ApiClient($secretKey);
$this->charge = $this->apiClient->chargeService();
}

public function getCharge($paymentToken) {
$chargeResponse = $this->charge->verifyCharge($paymentToken);
return $chargeResponse;
}
}

использование

$paymentToken = new PaymentTokenAPI('sk_test_aaaaaaaaaaaaaaaaa');
$paymentToken->setInvestmentValue('1000');
try {
$token = ($paymentToken->createPaymentToken())->getId();
}catch (checkout\helpers\ApiHttpClientCustomException $e) {
echo 'Caught exception Message: ',  $e->getErrorMessage(), "\n";
echo 'Caught exception Error Code: ',  $e->getErrorCode(), "\n";
echo 'Caught exception Event id: ',  $e->getEventId(), "\n";
}

$getCharge = new VerifyPaymentTokenAPI('sk_test_aaaaaaaaaaaaaaaaa');
try {
$charge = $getCharge->getCharge($token);
}catch (checkout\helpers\ApiHttpClientCustomException $e) {
echo 'Caught exception Message: ',  $e->getErrorMessage(), "\n";
echo 'Caught exception Error Code: ',  $e->getErrorCode(), "\n";
echo 'Caught exception Event id: ',  $e->getEventId(), "\n";
}

Что еще я пропустил? Для простоты я опустил другие детали, которые являются необязательными только при создании токена оплаты.

Просто чтобы быть уверенным, я повторил $tokenи показывает токен оплаты.

0

Решение

Проблема в том, что собственно токен оплаты передаваться при проверке будет переменная с именем СКО-платежно-токен, а не недавно созданный токен оплаты.

Это можно получить после успешного платежа в Лайтбокс оплаты, вот так:

if (isset($_POST['cko-payment-token'])) {
$ckoPaymentToken = $_POST['cko-payment-token'];
//then put the verifying code here, passing $ckoPaymentToken
$verifyPaymentToken = new VerifyPaymentTokenAPI('sk_test_aaaaaaaaaaaaaaaaa');
try {
$verifyPaymentTokenObj = $verifyPaymentToken->verifyPaymentToken($ckoPaymentToken);
}catch (checkout\helpers\ApiHttpClientCustomException $e) {
echo 'Caught exception Message: ',  $e->getErrorMessage(), "\n";
echo 'Caught exception Error Code: ',  $e->getErrorCode(), "\n";
echo 'Caught exception Event id: ',  $e->getEventId(), "\n";
}
}
0

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

Других решений пока нет …