2016-02-11 12 views
1

Я работаю над страницей обработки платежей. Мы используем Authorize.net для обработки транзакций. Я импортировал библиотеку php Authorize и все ее зависимости.

При попытке обработать тестовую транзакцию, я получаю следующее сообщение об ошибке:

Fatal error: Using $this when not in object context in /home/ticketstroyfair/public_html/include/authorize/vendor/jms/serializer/src/JMS/Serializer/Serializer.php on line 99 

Сначала я думал, что это было что-то в моем коде, так что я попытался запустить транзакцию PHP пример уполномочить и получить ту же ошибку.

Сериализатор был только что загружен вчера из GitHub. https://github.com/schmittjoh/serializer

Вот Авторизоваться Пример кода:

<?php 
require 'include/authorize/autoload.php'; 
use net\authorize\api\contract\v1 as AnetAPI; 
use net\authorize\api\controller as AnetController; 

define("AUTHORIZENET_LOG_FILE","phplog"); 

// Common setup for API credentials 
    $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); 
    $merchantAuthentication->setName("YOU_API_LOGIN_ID"); 
    $merchantAuthentication->setTransactionKey("YOUR_TRANSACTION_KEY"); 
    $refId = 'ref' . time(); 

// Create the payment data for a credit card 
    $creditCard = new AnetAPI\CreditCardType(); 
    $creditCard->setCardNumber("4111111111111111"); 
    $creditCard->setExpirationDate("2038-12"); 
    $paymentOne = new AnetAPI\PaymentType(); 
    $paymentOne->setCreditCard($creditCard); 

// Create a transaction 
    $transactionRequestType = new AnetAPI\TransactionRequestType(); 
    $transactionRequestType->setTransactionType("authCaptureTransaction"); 
    $transactionRequestType->setAmount(151.51); 
    $transactionRequestType->setPayment($paymentOne); 
    $request = new AnetAPI\CreateTransactionRequest(); 
    $request->setMerchantAuthentication($merchantAuthentication); 
    $request->setRefId($refId); 
    $request->setTransactionRequest($transactionRequestType); 
    $controller = new AnetController\CreateTransactionController($request); 
    $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); 

if ($response != null) 
{ 
    $tresponse = $response->getTransactionResponse(); 
    if (($tresponse != null) && ($tresponse->getResponseCode()=="1")) 
    { 
    echo "Charge Credit Card AUTH CODE : " . $tresponse->getAuthCode() . "\n"; 
    echo "Charge Credit Card TRANS ID : " . $tresponse->getTransId() . "\n"; 
    } 
    else 
    { 
    echo "Charge Credit Card ERROR : Invalid response\n"; 
    } 
} 
else 
{ 
    echo "Charge Credit Card Null response returned"; 
} 
?> 

Любые идеи о том, что вызывает ошибку?

+0

Итак, где код, в котором вы указываете сериализатор? –

+0

Я просто добавил код авторизации, который я пытался запустить. Один из методов из библиотеки Authorize вызывает Serializer. –

ответ

2

Моя ставка заключается в том, что версия PHP, которую вы используете, старше, чем 5.4.0, правильно?

Вызов $ this в анонимной функции не поддерживается ниже этой версии. См Using $this in anonymous function

и здесь http://php.net/manual/en/functions.anonymous.php

Если я правильно, я высоко совет для обновления по крайней мере PHP 5.6.x

Надежда Я мог бы помочь немного.

+0

Это должно быть. Я на PHP версии 5.3.29. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^