PHP 7.4.33
Preview: WebhookNotification.php Size: 5.46 KB
/home/godevadmin/www/admin/braintree/final/braintree_php-master/lib/Braintree/WebhookNotification.php

<?php
namespace Braintree;

class WebhookNotification extends Base
{
    const SUBSCRIPTION_CANCELED = 'subscription_canceled';
    const SUBSCRIPTION_CHARGED_SUCCESSFULLY = 'subscription_charged_successfully';
    const SUBSCRIPTION_CHARGED_UNSUCCESSFULLY = 'subscription_charged_unsuccessfully';
    const SUBSCRIPTION_EXPIRED = 'subscription_expired';
    const SUBSCRIPTION_TRIAL_ENDED = 'subscription_trial_ended';
    const SUBSCRIPTION_WENT_ACTIVE = 'subscription_went_active';
    const SUBSCRIPTION_WENT_PAST_DUE = 'subscription_went_past_due';
    const SUB_MERCHANT_ACCOUNT_APPROVED = 'sub_merchant_account_approved';
    const SUB_MERCHANT_ACCOUNT_DECLINED = 'sub_merchant_account_declined';
    const TRANSACTION_DISBURSED = 'transaction_disbursed';
    const TRANSACTION_SETTLED = 'transaction_settled';
    const TRANSACTION_SETTLEMENT_DECLINED = 'transaction_settlement_declined';
    const DISBURSEMENT_EXCEPTION = 'disbursement_exception';
    const DISBURSEMENT = 'disbursement';
    const DISPUTE_OPENED = 'dispute_opened';
    const DISPUTE_LOST = 'dispute_lost';
    const DISPUTE_WON = 'dispute_won';
    const PARTNER_MERCHANT_CONNECTED = 'partner_merchant_connected';
    const PARTNER_MERCHANT_DISCONNECTED = 'partner_merchant_disconnected';
    const PARTNER_MERCHANT_DECLINED = 'partner_merchant_declined';
    const CHECK = 'check';
    const ACCOUNT_UPDATER_DAILY_REPORT = 'account_updater_daily_report';

    public static function parse($signature, $payload)
    {
        if (preg_match("/[^A-Za-z0-9+=\/\n]/", $payload) === 1) {
            throw new Exception\InvalidSignature("payload contains illegal characters");
        }

        Configuration::assertGlobalHasAccessTokenOrKeys();
        self::_validateSignature($signature, $payload);

        $xml = base64_decode($payload);
        $attributes = Xml::buildArrayFromXml($xml);
        return self::factory($attributes['notification']);
    }

    public static function verify($challenge)
    {
        if (!preg_match('/^[a-f0-9]{20,32}$/', $challenge)) {
            throw new Exception\InvalidChallenge("challenge contains non-hex characters");
        }
        Configuration::assertGlobalHasAccessTokenOrKeys();
        $publicKey = Configuration::publicKey();
        $digest = Digest::hexDigestSha1(Configuration::privateKey(), $challenge);
        return "{$publicKey}|{$digest}";
    }

    public static function factory($attributes)
    {
        $instance = new self();
        $instance->_initialize($attributes);
        return $instance;
    }

    private static function _matchingSignature($signaturePairs)
    {
        foreach ($signaturePairs as $pair)
        {
            $components = preg_split("/\|/", $pair);
            if ($components[0] == Configuration::publicKey()) {
                return $components[1];
            }
        }

        return null;
    }

    private static function _payloadMatches($signature, $payload)
    {
        $payloadSignature = Digest::hexDigestSha1(Configuration::privateKey(), $payload);
        return Digest::secureCompare($signature, $payloadSignature);
    }

    private static function _validateSignature($signatureString, $payload)
    {
        $signaturePairs = preg_split("/&/", $signatureString);
        $signature = self::_matchingSignature($signaturePairs);
        if (!$signature) {
            throw new Exception\InvalidSignature("no matching public key");
        }

        if (!(self::_payloadMatches($signature, $payload) || self::_payloadMatches($signature, $payload . "\n"))) {
            throw new Exception\InvalidSignature("signature does not match payload - one has been modified");
        }
    }

    protected function _initialize($attributes)
    {
        $this->_attributes = $attributes;

        if (isset($attributes['subject']['apiErrorResponse'])) {
            $wrapperNode = $attributes['subject']['apiErrorResponse'];
        } else {
            $wrapperNode = $attributes['subject'];
        }

        if (isset($wrapperNode['subscription'])) {
            $this->_set('subscription', Subscription::factory($attributes['subject']['subscription']));
        }

        if (isset($wrapperNode['merchantAccount'])) {
            $this->_set('merchantAccount', MerchantAccount::factory($wrapperNode['merchantAccount']));
        }

        if (isset($wrapperNode['transaction'])) {
            $this->_set('transaction', Transaction::factory($wrapperNode['transaction']));
        }

        if (isset($wrapperNode['disbursement'])) {
            $this->_set('disbursement', Disbursement::factory($wrapperNode['disbursement']));
        }

        if (isset($wrapperNode['partnerMerchant'])) {
            $this->_set('partnerMerchant', PartnerMerchant::factory($wrapperNode['partnerMerchant']));
        }

        if (isset($wrapperNode['dispute'])) {
            $this->_set('dispute', Dispute::factory($wrapperNode['dispute']));
        }

        if (isset($wrapperNode['accountUpdaterDailyReport'])) {
            $this->_set('accountUpdaterDailyReport', AccountUpdaterDailyReport::factory($wrapperNode['accountUpdaterDailyReport']));
        }

        if (isset($wrapperNode['errors'])) {
            $this->_set('errors', new Error\ValidationErrorCollection($wrapperNode['errors']));
            $this->_set('message', $wrapperNode['message']);
        }
    }
}
class_alias('Braintree\WebhookNotification', 'Braintree_WebhookNotification');

Directory Contents

Dirs: 9 × Files: 89

Name Size Perms Modified Actions
Dispute DIR
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
Error DIR
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
Exception DIR
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
Result DIR
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
Test DIR
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
Xml DIR
- drwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.12 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.42 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
579 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1005 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
4.10 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
9.22 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.38 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.65 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.79 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.69 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.17 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
3.38 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.88 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
3.46 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
15.30 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
4.33 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
9.73 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
15.39 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.34 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.32 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.52 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
11.98 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
19.88 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.64 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
134 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.69 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.45 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
752 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
462 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
775 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.59 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
259 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.78 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
303 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
696 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
3.65 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
6.49 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.90 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
431 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
432 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
988 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.17 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
5.80 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.34 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
553 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
946 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.01 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
839 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
4.00 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
818 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.61 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
691 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
430 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1009 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
564 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.12 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
11.11 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.42 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.70 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.81 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
5.34 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.33 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
854 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
822 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
3.54 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
655 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.11 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.88 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
486 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
4.06 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
7.20 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.60 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.46 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
269 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
690 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
19.16 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
17.70 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
7.79 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
3.13 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
9.12 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
1.71 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.57 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
3.05 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
14.96 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
2.01 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
688 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
5.46 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
13.65 KB lrwxrwxr-x 2023-11-07 19:59:46
Edit Download
760 B lrwxrwxr-x 2023-11-07 19:59:46
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).