Я пытаюсь подтвердить онлайн-платеж.
После того, как я подключусь к банк используя function actionToken
и оплатите, банк отправит мне некоторую информацию для подтверждения оплаты с POST
метод, но я не могу получить информацию с POST
метод.
Вот мой payment controller
, function actionToken
для отправки данных с моего сайта, таких как количество ,а также function actionVerify
для подтверждения оплаты, что я получил банковскую информацию. Вот моя проблема, я не знаю, что мне делать.
<?php
namespace frontend\controllers;
use Yii;
use common\models\Order;
class PaymentController extends \yii\web\Controller {
public function actionRequest() {
include_once('lib/nusoap.php');
$terminalId = "xxxx"; // Terminal ID
$userName = "xxxx"; // Username
$userPassword = "xxxxxxx"; // Password
$orderId = time(); // Order ID
$amount = $amount.'0'; // Price / Rial
$localDate = date('Ymd'); // Date
$localTime = date('Gis'); // Time
$additionalData = $model['notes'];
$callBackUrl = "http://dastsazkala.com/payment/verify?id=".$id; // Callback URL
$payerId = $id;
$parameters = [
'terminalId' => $terminalId,
'userName' => $userName,
'userPassword' => $userPassword,
'orderId' => $orderId,
'amount' => $amount,
'localDate' => $localDate,
'localTime' => $localTime,
'additionalData' => $additionalData,
'callBackUrl' => $callBackUrl,
'payerId' => $payerId];
$client = new \nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
$namespace='http://interfaces.core.sw.bps.com/';
$result = $client->call('bpPayRequest', $parameters, $namespace);
}
public function actionVerify($id = null, $check = null) {
//my promblem is in this function, that I cant receive posts.
if ($_POST['ResCode'] == '0') {
//payment is correct
include_once('lib/nusoap.php');
$client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
$namespace='http://interfaces.core.sw.bps.com/';
$terminalId = "xxxx"; // Terminal ID
$userName = "xxxxx"; // Username
$userPassword = "xxxxx"; // Password
$orderId = $_POST['SaleOrderId']; // Order ID
$verifySaleOrderId = $_POST['SaleOrderId'];
$verifySaleReferenceId = $_POST['SaleReferenceId'];
$parameters = [
'terminalId' => $terminalId,
'userName' => $userName,
'userPassword' => $userPassword,
'orderId' => $orderId,
'saleOrderId' => $verifySaleOrderId,
'saleReferenceId' => $verifySaleReferenceId];
// Call the SOAP method
$result = $client->call('bpVerifyRequest', $parameters, $namespace);
if($result == 0) {
//verify is correct
echo 'The transaction was successful';
} else {
//error in pyament
}
} else {
//error in pyament
}
}
}
В этом function
Я ничего не получаю.
Должен ли я что-то делать в поведении моего контроллера или что-то еще?
Почему я не могу получать сообщения в моем контроллере?
Общий хром:
Request URL: http://dastsazkala.com/payment/verify
Request Method: POST
Status Code: 301 Moved Permanently
Remote Address: 138.201.30.123:80
Referrer Policy: no-referrer-when-downgrade
Вот что я получаю:
Проблема была в следующем: URL моего сайта www
в начале, но был нет www
в callBackUrl
,
Итак, я изменился
$callBackUrl = "http://www.dastsazkala.com/payment/verify?id=".$id; //add www. in the beginning
вместо
$callBackUrl = "http://dastsazkala.com/payment/verify?id=".$id;
и я могу получить Данные формы с POST
метод из банка
dastsazkala.com/payment/verify Перенаправляет на www.dastsazkala.com/payment/verify уведомление о www!
Результат запроса:
Status Code: 301 Moved Permanently
ясно намекает на то, что может происходить перенаправление