Overview

Classes

  • Syspay_Merchant_AstroPayBanksRequest
  • Syspay_Merchant_BillingAgreementCancellationRequest
  • Syspay_Merchant_BillingAgreementInfoRequest
  • Syspay_Merchant_BillingAgreementListRequest
  • Syspay_Merchant_BillingAgreementRequest
  • Syspay_Merchant_ChargebackInfoRequest
  • Syspay_Merchant_ChargebackListRequest
  • Syspay_Merchant_Client
  • Syspay_Merchant_ConfirmRequest
  • Syspay_Merchant_EMS
  • Syspay_Merchant_Entity
  • Syspay_Merchant_Entity_AstroPayBank
  • Syspay_Merchant_Entity_BillingAgreement
  • Syspay_Merchant_Entity_Chargeback
  • Syspay_Merchant_Entity_Creditcard
  • Syspay_Merchant_Entity_Customer
  • Syspay_Merchant_Entity_Eterminal
  • Syspay_Merchant_Entity_Payment
  • Syspay_Merchant_Entity_PaymentMethod
  • Syspay_Merchant_Entity_PaymentRecipient
  • Syspay_Merchant_Entity_Plan
  • Syspay_Merchant_Entity_Refund
  • Syspay_Merchant_Entity_Subscription
  • Syspay_Merchant_Entity_SubscriptionEvent
  • Syspay_Merchant_EterminalRequest
  • Syspay_Merchant_IpAddressesRequest
  • Syspay_Merchant_PaymentInfoRequest
  • Syspay_Merchant_PaymentListRequest
  • Syspay_Merchant_PaymentRequest
  • Syspay_Merchant_PlanInfoRequest
  • Syspay_Merchant_PlanRequest
  • Syspay_Merchant_PlanUpdateRequest
  • Syspay_Merchant_RebillRequest
  • Syspay_Merchant_Redirect
  • Syspay_Merchant_RefundInfoRequest
  • Syspay_Merchant_RefundListRequest
  • Syspay_Merchant_RefundRequest
  • Syspay_Merchant_Request
  • Syspay_Merchant_SubscriptionCancellationRequest
  • Syspay_Merchant_SubscriptionInfoRequest
  • Syspay_Merchant_SubscriptionRebillRequest
  • Syspay_Merchant_SubscriptionRequest
  • Syspay_Merchant_Utils
  • Syspay_Merchant_VoidRequest

Interfaces

  • Syspay_Merchant_Entity_ReturnedEntityInterface

Exceptions

  • Syspay_Merchant_EMSException
  • Syspay_Merchant_RedirectException
  • Syspay_Merchant_RequestException
  • Syspay_Merchant_UnexpectedResponseException
  • Overview
  • Class
  • Tree
 1: <?php
 2: 
 3: /**
 4:  * Handle Redirections
 5:  */
 6: class Syspay_Merchant_Redirect
 7: {
 8:     protected $secrets = array();
 9:     protected $skipAuthCheck;
10: 
11:     /**
12:      * Build an Redirect handler
13:      * @param array   $secrets  An array where each key is your merchant login and the value is the related passphrase
14:      * @param boolean $skipAuthCheck Skip the checksum validation
15:      */
16:     public function __construct(array $secrets, $skipAuthCheck = false)
17:     {
18:         $this->secrets       = $secrets;
19:         $this->skipAuthCheck = $skipAuthCheck;
20:     }
21: 
22:     /**
23:      * Return the payment decoded from the redirection parameters
24:      * @param  array $source An array that contains a 'result', 'merchant', and 'checksum' parameters.
25:      *                       Typically this can be $_GET or $_REQUEST.
26:      * @return Syspay_Merchant_Entity_Payment The decoded payment
27:      * @throws Syspay_Merchant_RedirectException If something went wrong while parsing the request
28:      */
29:     public function getResult(array $source)
30:     {
31:         $result   = isset($source['result'])?$source['result']:null;
32:         $merchant = isset($source['merchant'])?$source['merchant']:null;
33:         $checksum = isset($source['checksum'])?$source['checksum']:null;
34: 
35:         if (!$this->skipAuthCheck) {
36:             $this->checkChecksum($result, $merchant, $checksum);
37:         }
38: 
39:         $result = base64_decode($result);
40:         if ($result === false) {
41:             throw new Syspay_Merchant_RedirectException(
42:                 'Unable to decode the result parameter',
43:                 Syspay_Merchant_RedirectException::CODE_INVALID_CONTENT
44:             );
45:         }
46: 
47:         $result = json_decode($result);
48:         if ($result === null || empty($result->payment)) {
49:             throw new Syspay_Merchant_RedirectException(
50:                 'Unable to decode the result parameter',
51:                 Syspay_Merchant_RedirectException::CODE_INVALID_CONTENT
52:             );
53:         }
54:         return Syspay_Merchant_Entity_Payment::buildFromResponse($result->payment);
55:     }
56: 
57:     /**
58:      * Validate the request's checksum
59:      * @throws Syspay_Merchant_RedirectException If the checksum didn't validate
60:      */
61:     private function checkChecksum($result, $merchant, $checksum)
62:     {
63:         if (empty($merchant) || empty($checksum) || empty($result)) {
64:             throw new Syspay_Merchant_RedirectException(
65:                 'Missing parameter',
66:                 Syspay_Merchant_RedirectException::CODE_MISSING_PARAM
67:             );
68:         }
69: 
70:         if (empty($this->secrets[$merchant])) {
71:             throw new Syspay_Merchant_RedirectException(
72:                 'Unknown merchant: ' . $merchant,
73:                 Syspay_Merchant_RedirectException::CODE_UNKNOWN_MERCHANT
74:             );
75:         }
76: 
77:         if (!Syspay_Merchant_Utils::checkChecksum($result, $this->secrets[$merchant], $checksum)) {
78:             throw new Syspay_Merchant_RedirectException(
79:                 'Invalid checksum',
80:                 Syspay_Merchant_RedirectException::CODE_INVALID_CHECKSUM
81:             );
82:         }
83:     }
84: }
85: 
Syspay Merchant SDK API documentation generated by ApiGen 2.8.0