private function denormaliseAddresses(\ArrayAccess $array) { $addressData = $array['address']; if (is_null($addressData)) { return null; } $addresses = array(); foreach ($addressData as $address) { $address = new SafeArrayAccess($address); $addressObject = new Address(); $addressObject->addType($address['@type'])->addCode($address['code'])->addCountry($address['country']); $addresses[] = $addressObject; } return $addresses; }
/** * Tests and invalid currency value (null) */ public function testNullValueOnCurrency() { $card = new Card(); $card->addExpiryDate(SampleXmlValidationUtils::CARD_EXPIRY_DATE)->addNumber(SampleXmlValidationUtils::CARD_NUMBER)->addCardType(new CardType(CardType::VISA))->addCardHolderName(SampleXmlValidationUtils::CARD_HOLDER_NAME)->addCvn(SampleXmlValidationUtils::CARD_CVN_NUMBER)->addCvnPresenceIndicator(SampleXmlValidationUtils::$CARD_CVN_PRESENCE)->addIssueNumber(SampleXmlValidationUtils::CARD_ISSUE_NUMBER); $tssInfo = new TssInfo(); $businessAddress = new Address(); $businessAddress->addType(SampleXmlValidationUtils::$ADDRESS_TYPE_BUSINESS)->addCode(SampleXmlValidationUtils::ADDRESS_CODE_BUSINESS)->addCountry(SampleXmlValidationUtils::ADDRESS_COUNTRY_BUSINESS); $shippingAddress = new Address(); $shippingAddress->addType(SampleXmlValidationUtils::$ADDRESS_TYPE_SHIPPING)->addCode(SampleXmlValidationUtils::ADDRESS_CODE_SHIPPING)->addCountry(SampleXmlValidationUtils::ADDRESS_COUNTRY_SHIPPING); $tssInfo->addCustomerNumber(SampleXmlValidationUtils::CUSTOMER_NUMBER)->addProductId(SampleXmlValidationUtils::PRODUCT_ID)->addVariableReference(SampleXmlValidationUtils::VARIABLE_REFERENCE)->addCustomerIpAddress(SampleXmlValidationUtils::CUSTOMER_IP)->addAddress($businessAddress)->addAddress($shippingAddress); $autoSettle = new AutoSettle(); $autoSettle = $autoSettle->addFlag(SampleXmlValidationUtils::$AUTO_SETTLE_FLAG); $mpi = new Mpi(); $mpi->addCavv(SampleXmlValidationUtils::THREE_D_SECURE_CAVV)->addXid(SampleXmlValidationUtils::THREE_D_SECURE_XID)->addEci(SampleXmlValidationUtils::THREE_D_SECURE_ECI); $recurring = new Recurring(); $recurring->addFlag(SampleXmlValidationUtils::$RECURRING_FLAG)->addSequence(SampleXmlValidationUtils::$RECURRING_SEQUENCE)->addType(SampleXmlValidationUtils::$RECURRING_TYPE); $expectedCurrency = null; $request = new PaymentRequest(); $request->addAccount(SampleXmlValidationUtils::ACCOUNT)->addMerchantId(SampleXmlValidationUtils::MERCHANT_ID)->addType(PaymentType::AUTH)->addAmount(SampleXmlValidationUtils::AMOUNT)->addCurrency($expectedCurrency)->addCard($card)->addAutoSettle($autoSettle)->addTimestamp(SampleXmlValidationUtils::TIMESTAMP)->addChannel(SampleXmlValidationUtils::CHANNEL)->addOrderId(SampleXmlValidationUtils::ORDER_ID)->addHash(SampleXmlValidationUtils::REQUEST_HASH)->addComment(SampleXmlValidationUtils::COMMENT1)->addComment(SampleXmlValidationUtils::COMMENT2)->addPaymentsReference(SampleXmlValidationUtils::PASREF)->addAuthCode(SampleXmlValidationUtils::AUTH_CODE)->addRefundHash(SampleXmlValidationUtils::REFUND_HASH)->addFraudFilter(SampleXmlValidationUtils::FRAUD_FILTER)->addRecurring($recurring)->addTssInfo($tssInfo)->addMpi($mpi); // convert to XML $xml = $request->toXml(); // Convert from XML back to PaymentRequest /* @var PaymentRequest $fromXmlRequest */ $fromXmlRequest = new PaymentRequest(); $fromXmlRequest = $fromXmlRequest->fromXml($xml); $this->assertEquals($expectedCurrency, $fromXmlRequest->getAmount()->getCurrency()); }
/** * <p> * This helper method adds Address Verification Service (AVS) fields to the request. * </p> * <p> * The Address Verification Service (AVS) verifies the cardholder's address by checking the * information provided by at the time of sale against the issuing bank's records. * </p> * * @param string $addressLine * @param string $postcode * @param string $country * * @return PaymentRequest */ public function addAddressVerificationServiceDetails($addressLine, $postcode, $country) { //build code in format <digits from postcode>|<digits from address> $postcodeDigits = preg_replace("/\\D+/", "", $postcode); $addressLineDigits = preg_replace("/\\D+/", "", $addressLine); $code = $postcodeDigits . "|" . $addressLineDigits; //construct billing address from code $address = new Address(); $address->addCode($code)->addCountry($country)->addType(AddressType::BILLING); //add address to TSS Info if (is_null($this->tssInfo)) { $this->tssInfo = new TssInfo(); } $this->tssInfo->addAddress($address); return $this; }