Заранее спасибо. Я строю собственный платежный шлюз для woocommerce. С чем я борюсь, так это с тем, что сервер моего платежного шлюза принимает запрос, только когда я отправляю форму. Поэтому я отправляю форму с перенаправлением на адрес шлюза оплаты. Проблема в том, что woocommerce не выполняет мой form.submit в методе process_payment.
Поэтому я попытался использовать wp_remote_post, используя curl, но ни один из них не работает для меня, потому что мне нужно перенаправить на свой платежный шлюз с данными, как в form.submit.
public function process_payment( $order_id ) {
global $woocommerce;
// Get this Order's information so that we know
// who to charge and how much
$customer_order = new WC_Order( $order_id );
//Here i take some data and put it inside $a
echo '<form name="customForm" action="https://gateway.com/web" method="post" id="customForm">
<input type="hidden" name="token" id="token" value="<?php echo $token;?>">
<input type="hidden" name="key" id="key" value="<?php echo $a->key;?>">
<input type="hidden" name="callbackUrl" id="callbackUrl" value="<?php echo $a->callbackUrl;?>">
<!-- callback url where alif sends information about status of transactions -->
<input type="hidden" name="returnUrl" id="returnUrl" value="<?php echo $a->returnUrl;?>">
<input type="hidden" name="amount" id="amount" value="<?php echo $a->amount;?>" required>
<input type="hidden" name="orderId" id="orderId" value="<?php echo $a->orderid;?>">
<input type="hidden" name="info" id="info" value="<?php echo $a->info;?>">
<input type="hidden" name="email" id="email" value="<?php echo $a->email;?>">
<input type="hidden" name="phone" id="phone" value="<?php echo $a->phone;?>">
</form>';
?><script type="text/javascript">
document.getElementById('customForm').submit();
</script><?php
}
Я ожидал, что меня перенаправят на адрес платежного шлюза, но я не получаю перенаправление и получаю недопустимое сообщение в форме в woocommerce.
2 ответа
Я думаю, что вам нужно сначала создать фильтр хука, как это:
add_filter('woocommerce_receipt_' . $this->id, array(&$this, 'receipt_page'));
А потом:
public function receipt_page($order_id)
{
// Get this Order's information so that we know
// who to charge and how much
$customer_order = new WC_Order($order_id);
//Here i take some data and put it inside $a
echo '<form name="customForm" action="https://gateway.com/web" method="post" id="customForm">
<input type="hidden" name="token" id="token" value="<?php echo $token;?>">
<input type="hidden" name="key" id="key" value="<?php echo $a->key;?>">
<input type="hidden" name="callbackUrl" id="callbackUrl" value="<?php echo $a->callbackUrl;?>">
<!-- callback url where alif sends information about status of transactions -->
<input type="hidden" name="returnUrl" id="returnUrl" value="<?php echo $a->returnUrl;?>">
<input type="hidden" name="amount" id="amount" value="<?php echo $a->amount;?>" required>
<input type="hidden" name="orderId" id="orderId" value="<?php echo $a->orderid;?>">
<input type="hidden" name="info" id="info" value="<?php echo $a->info;?>">
<input type="hidden" name="email" id="email" value="<?php echo $a->email;?>">
<input type="hidden" name="phone" id="phone" value="<?php echo $a->phone;?>">
</form>';
}
Я думаю, что проблема с неправильным синтаксисом. Попробуйте использовать этот синтаксис:
echo <<<HTML
<form name="customForm" action="https://gateway.com/web" method="post" id="customForm">
<input type="hidden" name="token" id="token" value="{$token}">
<input type="hidden" name="key" id="key" value="{$a->key}">
<input type="hidden" name="callbackUrl" id="callbackUrl" value="{$a->callbackUrl}">
<!-- callback url where alif sends information about status of transactions -->
<input type="hidden" name="returnUrl" id="returnUrl" value="{$a->returnUrl}">
<input type="hidden" name="amount" id="amount" value="{$a->amount}" required>
<input type="hidden" name="orderId" id="orderId" value="{$a->orderid}">
<input type="hidden" name="info" id="info" value="{$a->info}">
<input type="hidden" name="email" id="email" value="{$a->email}">
<input type="hidden" name="phone" id="phone" value="{$a->phone}">
</form>
<script type="text/javascript">
document.getElementById('customForm').submit();
</script>
HTML;
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.