File "TransactionStatusController.php"
Full path: /home/dora/public_html/wp-content/plugins/transbank-webpay-plus-rest/src/Controllers/TransactionStatusController.php
File size: 2.61 KB
MIME-type: --
Charset: utf-8
<?php
namespace Transbank\WooCommerce\WebpayRest\Controllers;
use Transbank\Webpay\WebpayPlus\Exceptions\TransactionStatusException;
use Transbank\WooCommerce\WebpayRest\Models\Transaction;
use Transbank\WooCommerce\WebpayRest\PaymentGateways\WC_Gateway_Transbank_Oneclick_Mall_REST;
use Transbank\WooCommerce\WebpayRest\TransbankSdkWebpayRest;
class TransactionStatusController
{
public static function status()
{
// Check for nonce security
$nonce = sanitize_text_field($_POST['nonce']);
if (!wp_verify_nonce($nonce, 'my-ajax-nonce')) {
exit('Busted!');
}
$orderId = filter_input(INPUT_POST, 'order_id', FILTER_SANITIZE_NUMBER_INT);
$buyOrder = filter_input(INPUT_POST, 'buy_order', FILTER_SANITIZE_NUMBER_INT);
$token = filter_input(INPUT_POST, 'token', FILTER_SANITIZE_STRING);
$transaction = Transaction::getApprovedByOrderId($orderId);
if (!$transaction) {
wp_send_json([
'message' => 'No hay transacciones webpay aprobadas para esta orden',
], 401);
}
if ($transaction->product == Transaction::PRODUCT_WEBPAY_ONECLICK) {
if ($transaction->buy_order !== $buyOrder) {
wp_send_json([
'message' => 'El buy_order enviado y el buy_order de la transacción no coinciden',
], 401);
}
$oneclick = new WC_Gateway_Transbank_Oneclick_Mall_REST();
$status = $oneclick->getStatus($buyOrder);
$statusArray = json_decode(json_encode($oneclick->getStatus($buyOrder)), true);
$firstDetail = json_decode(json_encode($status->getDetails()[0]), true);
$response = array_merge($statusArray, $firstDetail);
unset($response['detail']);
wp_send_json([
'product' => $transaction->product,
'status' => $response,
'raw' => $status,
]);
return;
}
if ($transaction->token !== $token) {
wp_send_json([
'message' => 'El token enviado y el token de la transacción no coinciden',
], 401);
}
$sdk = new TransbankSdkWebpayRest();
try {
wp_send_json([
'product' => $transaction->product,
'status' => $sdk->status($transaction->token),
'raw' => $sdk->status($transaction->token),
]);
} catch (TransactionStatusException $e) {
wp_send_json([
'message' => $e->getMessage(),
], 422);
}
}
}