首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误:访问未声明的静态属性(具有realexpayments)

致命错误:访问未声明的静态属性(具有realexpayments)
EN

Stack Overflow用户
提问于 2018-10-26 03:09:55
回答 1查看 97关注 0票数 -1

我在第38行得到了这个错误:

访问未声明的静态属性: com\realexpayments\remote\sdk\domain\CardType::$cardType时出现

致命错误

第38行:

代码语言:javascript
复制
->addType(CardType::$cardType)

我的代码:

代码语言:javascript
复制
$numCard = isset($_POST['numCard']);
$expCardMont = isset($_POST['expCardMont']);
$expCardYear = isset($_POST['expCardYear']);
$expDate = $expCardMont.$expCardYear;
$cvnCard = isset($_POST['cvnCard']);
$titulaireNameCard = isset($_POST['titulaireNameCard']);
$cardType = isset($_POST['cardType']);
$total = isset($_POST['total']);

// var_dump($numCard);

require_once ( dirname(__FILE__) . '/vendor/autoload.php');
use com\realexpayments\remote\sdk\domain\Card;
use com\realexpayments\remote\sdk\domain\CardType;
use com\realexpayments\remote\sdk\domain\PresenceIndicator;
use com\realexpayments\remote\sdk\domain\payment\AutoSettle;
use com\realexpayments\remote\sdk\domain\payment\AutoSettleFlag;
use com\realexpayments\remote\sdk\domain\payment\PaymentRequest;
use com\realexpayments\remote\sdk\domain\payment\PaymentResponse;
use com\realexpayments\remote\sdk\domain\payment\PaymentType;
use com\realexpayments\remote\sdk\domain\payment\Mpi;
use com\realexpayments\remote\sdk\RealexClient;
use com\realexpayments\remote\sdk\RealexException;
use com\realexpayments\remote\sdk\RealexServerException;
use com\realexpayments\remote\sdk\http\HttpConfiguration;

$card = (new Card())
->addType(CardType::$cardType)
->addNumber($numCard)
->addExpiryDate($expDate)
->addCvn($cvnCard)
->addCvnPresenceIndicator(PresenceIndicator::CVN_PRESENT)
->addCardHolderName($titulaireNameCard);

$request = (new PaymentRequest())
->addType(PaymentType::AUTH)
->addMerchantId("xxx")
->addAccount("internet")
->addAmount($total)
->addCurrency("CAD")
->addCard($card)
->addAutoSettle((new AutoSettle())->addFlag(AutoSettleFlag::TRUE));

$httpConfiguration = new HttpConfiguration();
$httpConfiguration->setEndpoint("https://test.realexpayments.com/epage-remote.cgi");
$client = new RealexClient("xxx", $httpConfiguration);

try {
$paymentResponse = $client->send($request);
echo $paymentResponse->getResult(); // '00' == success
//get the details required for Transaction Management requests
$paymentsReference = $paymentResponse->getPaymentsReference();
$authCode = $paymentResponse->getAuthCode();
$orderId = $paymentResponse->getorderId();

return $paymentResponse->getMessage();
}
catch ( RealexServerException $e ) {
return $e->getMessage();
}
catch ( RealexException $e ) {
return $e->getMessage();
}

​​的一个想法为什么?谢谢!

CardType代码(如果需要):

代码语言:javascript
复制
<?php


namespace com\realexpayments\remote\sdk\domain;


use com\realexpayments\remote\sdk\EnumBase;


/**
 * Enumeration representing card types.
 */
class CardType extends EnumBase {

    const __default = self::VISA;

    const VISA = "VISA";
    const MASTERCARD = "MC";
    const AMEX = "AMEX";
    const CB = "CB";
    const DINERS = "DINERS";
    const JCB = "JCB";

    /**
     * @var string The card type
     */
    private $type;

    /**
     * @param string $type
     */
    public function __construct( $type ) {
        parent::__construct( $type );

        $this->type = $type;
    }

    /**
     * Getter for the card type
     *
     * @return string
     */
    public function getType() {
        return $this->type;
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-26 03:19:42

代码状态

代码语言:javascript
复制
$cardType = isset($_POST['cardType']);

它将$cardType设置为布尔值,因此CardType::$cardType不仅无效,而且在技术上没有意义。

你可能想要的是

代码语言:javascript
复制
$cardType = isset($_POST['cardType']) ? $_POST['cardType'] : null;

然后

代码语言:javascript
复制
->addType(new CardType($cardType))

总体而言,配置更好的输入验证将对您有很大帮助,因为$cardTypenull可能也会抛出错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52996481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档