@lllyx

Как напечатать объект в JSON?

Объект
class Required3DS
{
    /**
     * @var integer
     */
    protected $transactionId;
    /**
     * @var string
     */
    protected $token;
    /**
     * @var string
     */
    protected $url;
    /**
     * @return integer
     */
/**
     * @param $params
     * @return Required3DS
     */
    public static function fromArray($params)
    {
        $model = new Required3DS();
        $model->setTransactionId($params['TransactionId']);
        $model->setToken($params['PaReq']);
        $model->setUrl($params['AcsUrl']);
        return $model;
    }
}

Вызов функции и передача массива
public function chargeCard($amount, $currency, $ipAddress, $cardHolderName, $cryptogram, $params = [], $requireConfirmation = false)
    {
        $endpoint = $requireConfirmation ? '/payments/cards/auth' : '/payments/cards/charge';
        $defaultParams = [
            'Amount' => $amount,
            'Currency' => $currency,
            'IpAddress' => $ipAddress,
            'Name' => $cardHolderName,
            'CardCryptogramPacket' => $cryptogram
        ];
        $response = $this->sendRequest($endpoint, array_merge($defaultParams, $params));
        if ($response['Success']) {
            return Transaction::fromArray($response['Model']);
        }
        if ($response['Message']) {
            throw new RequestException($response);
        }
        if (isset($response['Model']['ReasonCode']) && $response['Model']['ReasonCode'] !== 0) {
            throw new PaymentException($response);
        }

        return Required3DS::fromArray($response['Model']);

    }

Сам контроллер
if (Yii::$app->request->post('CardCryptogramPacket')){
            $transaction = $client->chargeCard(230, 'RUB', Yii::$app->request->userIP, Yii::$app->request->post('Name'), Yii::$app->request->post('CardCryptogramPacket'), ['Email'=>'lllyx93@gmail.com', 'phone'=>'89178950879'], false);
            \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
            //$transaction = ArrayHelper::toArray($transaction);
            //$transaction = Json::decode($transaction);
            return $transaction;

        }

На что приходит пустота

vardump выдает
object(app\modules\main\module\CloudPayments\Model\Required3DS)#107 (3) { ["transactionId":protected]=> int(143396325) ["token":protected]=> string(234) "+/eyJNZXJjaGFudE5hbWUiOm51bGwsIkZpcnN0U2l4IjoiNDI0MjQyIiwiTGFzdEZvdXIiOiI0MjQyIiwiQW1vdW50IjoyMzAuMCwiQ3VycmVuY3lDb2RlIjoiUlVCIiwiRGF0ZSI6IjIwMTktMDUtMDlUMDA6MDA6MDArMDM6MDAiLCJDdXN0b21lck5hbWUiOm51bGwsIkN1bHR1cmVOYW1lIjoicnUtUlUifQ==" ["url":protected]=> string(33) "https://demo.cloudpayments.ru/acs" }

Подскажите, пожалуйста, как вывести в JSON правильно
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
@lllyx Автор вопроса
Для печати объекта, в моем случае класс Required3DS, нужно преобразовать его в массив, а потом в JSON
$json = (array) $transaction;  //преобразуем в массив

Преобразовываем в JSON и выводим
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$json1 = Json::encode($json);
return $json1;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы