Example #1
0
 /**
  * Build a payment entity based on a json-decoded payment stdClass
  *
  * @param  stdClass $response The payment data
  * @return Syspay_Merchant_Entity_Payment The payment object
  */
 public static function buildFromResponse(stdClass $response)
 {
     $payment = new self();
     $payment->setId(isset($response->id) ? $response->id : null);
     $payment->setReference(isset($response->reference) ? $response->reference : null);
     $payment->setAmount(isset($response->amount) ? $response->amount : null);
     $payment->setCurrency(isset($response->currency) ? $response->currency : null);
     $payment->setStatus(isset($response->status) ? $response->status : null);
     $payment->setExtra(isset($response->extra) ? $response->extra : null);
     $payment->setDescription(isset($response->description) ? $response->description : null);
     $payment->setWebsite(isset($response->website) ? $response->website : null);
     $payment->setFailureCategory(isset($response->failure_category) ? $response->failure_category : null);
     $payment->setChipAndPinStatus(isset($response->chip_and_pin_status) ? $response->chip_and_pin_status : null);
     $payment->setPaymentType(isset($response->payment_type) ? $response->payment_type : null);
     $payment->setWebsiteUrl(isset($response->website_url) ? $response->website_url : null);
     $payment->setContract(isset($response->contract) ? $response->contract : null);
     $payment->setDescriptor(isset($response->descriptor) ? $response->descriptor : null);
     $payment->setAccountId(isset($response->account_id) ? $response->account_id : null);
     $payment->setMerchantLogin(isset($response->merchant_login) ? $response->merchant_login : null);
     $payment->setMerchantId(isset($response->merchant_id) ? $response->merchant_id : null);
     if (isset($response->settlement_date) && !is_null($response->settlement_date)) {
         $payment->setSettlementDate(Syspay_Merchant_Utils::tsToDateTime($response->settlement_date));
     }
     if (isset($response->processing_time) && !is_null($response->processing_time)) {
         $payment->setProcessingTime(Syspay_Merchant_Utils::tsToDateTime($response->processing_time));
     }
     if (isset($response->billing_agreement) && $response->billing_agreement instanceof stdClass) {
         $billingAgreement = Syspay_Merchant_Entity_BillingAgreement::buildFromResponse($response->billing_agreement);
         $payment->setBillingAgreement($billingAgreement);
     }
     if (isset($response->subscription) && $response->subscription instanceof stdClass) {
         $subscription = Syspay_Merchant_Entity_Subscription::buildFromResponse($response->subscription);
         $payment->setSubscription($subscription);
     }
     if (isset($response->payment_method) && $response->payment_method instanceof stdClass) {
         $paymentMethod = Syspay_Merchant_Entity_PaymentMethod::buildFromResponse($response->payment_method);
         $payment->setPaymentMethod($paymentMethod);
     }
     $payment->raw = $response;
     return $payment;
 }
Example #2
0
 /**
  * Build a billing agreement entity based on a json-decoded billing agreement stdClass
  *
  * @param  stdClass $response The billing agreement data
  * @return Syspay_Merchant_Entity_BillingAgreement The billing agreement object
  */
 public static function buildFromResponse(stdClass $response)
 {
     $billingAgreement = new self();
     $billingAgreement->setId(isset($response->id) ? $response->id : null);
     $billingAgreement->setStatus(isset($response->status) ? $response->status : null);
     $billingAgreement->setCurrency(isset($response->currency) ? $response->currency : null);
     $billingAgreement->setExtra(isset($response->extra) ? $response->extra : null);
     $billingAgreement->setEndReason(isset($response->end_reason) ? $response->end_reason : null);
     if (isset($response->expiration_date) && !is_null($response->expiration_date)) {
         $billingAgreement->setExpirationDate(Syspay_Merchant_Utils::tsToDateTime($response->expiration_date));
     }
     if (isset($response->payment_method) && $response->payment_method instanceof stdClass) {
         $paymentMethod = Syspay_Merchant_Entity_PaymentMethod::buildFromResponse($response->payment_method);
         $billingAgreement->setPaymentMethod($paymentMethod);
     }
     if (isset($response->customer) && $response->customer instanceof stdClass) {
         $customer = Syspay_Merchant_Entity_Customer::buildFromResponse($response->customer);
         $billingAgreement->setCustomer($customer);
     }
     return $billingAgreement;
 }
 /**
  * @param $parameters
  * @param Environment $environment
  * @param bool        $skipSignature skip signature check true / false
  *
  * @return Response
  *
  * @throws InvalidArgumentException
  * @throws NotValidSignatureException
  */
 public static function create($parameters, Environment $environment, $skipSignature = false)
 {
     $response = new self();
     $parameters = array_change_key_case($parameters, CASE_UPPER);
     $missing = array_diff(Parameter::$requiredPostSaleParameters, array_keys($parameters));
     if (count($missing) > 0) {
         throw new InvalidArgumentException(sprintf('Missing parameter(s) %s of PostFinance post-sale response', implode(', ', $missing)));
     }
     if (!$skipSignature) {
         $string = '';
         $p = Parameter::$postSaleParameters;
         sort($p);
         foreach ($p as $key) {
             if ($key === Parameter::SIGNATURE || !isset($parameters[$key]) || $parameters[$key] === '') {
                 continue;
             }
             $string .= sprintf('%s=%s%s', $key, $parameters[$key], $environment->getShaOut());
         }
         if (strtoupper(hash($environment->getHashAlgorithm(), $string)) !== $parameters[Parameter::SIGNATURE]) {
             throw new NotValidSignatureException();
         }
     }
     $response->setOrderId($parameters[Parameter::ORDER_ID])->setAmount($parameters[Parameter::AMOUNT])->setCurrency($parameters[Parameter::CURRENCY])->setAcceptance($parameters[Parameter::ACCEPTANCE])->setStatus($parameters[Parameter::STATUS])->setCardNumber($parameters[Parameter::CARD_NUMBER])->setPaymentId($parameters[Parameter::PAYMENT_ID])->setError($parameters[Parameter::NC_ERROR])->setCardExpirationDate($parameters[Parameter::EXPIRATION_DATE])->setTransactionDate(\DateTime::createFromFormat('m/d/Y', $parameters[Parameter::TRANSACTION_DATE]))->setCardHolderName($parameters[Parameter::CARD_HOLDER])->setIp($parameters[Parameter::IP]);
     if (isset($parameters[Parameter::ALIAS]) && !empty($parameters[Parameter::ALIAS])) {
         $response->setAlias($parameters[Parameter::ALIAS]);
     }
     switch ($parameters['PM']) {
         case 'CreditCard':
             $response->setPaymentMethod(PaymentMethod::CREDITCARD);
             switch ($parameters['BRAND']) {
                 case 'MasterCard':
                     $response->setBrand(Brand::MASTERCARD);
                     break;
                 case 'Visa':
                     $response->setBrand(Brand::VISA);
                     break;
             }
             break;
         case 'PostFinance e-finance':
             $response->setPaymentMethod(PaymentMethod::POSTFINANCE_EFINANCE);
             $response->setBrand(Brand::POSTFINANCE_EFINANCE);
             break;
         case 'PostFinance Card':
             $response->setPaymentMethod(PaymentMethod::POSTFINANCE_CARD);
             $response->setBrand(Brand::POSTFINANCE_CARD);
             break;
     }
     return $response;
 }
Example #4
0
 /**
  * Build a subscription entity based on a json-decoded subscription stdClass
  *
  * @param  stdClass $response The subscription data
  * @return Syspay_Merchant_Entity_Subscription The subscription object
  */
 public static function buildFromResponse(stdClass $response)
 {
     $subscription = new self();
     $subscription->setId(isset($response->id) ? $response->id : null);
     $subscription->setPlanId(isset($response->plan_id) ? $response->plan_id : null);
     $subscription->setPlanType(isset($response->plan_type) ? $response->plan_type : null);
     $subscription->setReference(isset($response->reference) ? $response->reference : null);
     $subscription->setStatus(isset($response->status) ? $response->status : null);
     $subscription->setPhase(isset($response->phase) ? $response->phase : null);
     $subscription->setExtra(isset($response->extra) ? $response->extra : null);
     $subscription->setEmsUrl(isset($response->ems_url) ? $response->ems_url : null);
     $subscription->setWebsiteId(isset($response->website_id) ? $response->website_id : null);
     $subscription->setCreated(isset($response->created) ? Syspay_Merchant_Utils::tsToDateTime($response->created) : null);
     $subscription->setStartDate(isset($response->start_date) ? Syspay_Merchant_Utils::tsToDateTime($response->start_date) : null);
     $subscription->setEndDate(isset($response->end_date) ? Syspay_Merchant_Utils::tsToDateTime($response->end_date) : null);
     $subscription->setEndReason(isset($response->end_reason) ? $response->end_reason : null);
     if (isset($response->payment_method) && $response->payment_method instanceof stdClass) {
         $paymentMethod = Syspay_Merchant_Entity_PaymentMethod::buildFromResponse($response->payment_method);
         $subscription->setPaymentMethod($paymentMethod);
     }
     if (isset($response->customer) && $response->customer instanceof stdClass) {
         $customer = Syspay_Merchant_Entity_Customer::buildFromResponse($response->customer);
         $subscription->setCustomer($customer);
     }
     if (isset($response->plan) && $response->plan instanceof stdClass) {
         $plan = Syspay_Merchant_Entity_Plan::buildFromResponse($response->plan);
         $subscription->setPlan($plan);
     }
     if (isset($response->next_event) && $response->next_event instanceof stdClass) {
         $nextEvent = Syspay_Merchant_Entity_SubscriptionEvent::buildFromResponse($response->next_event);
         $subscription->setNextEvent($nextEvent);
     }
     $subscription->raw = $response;
     return $subscription;
 }