PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.31.1
GiveWP – Donation Plugin and Fundraising Platform v2.31.1
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / PaymentGateways / Stripe / Models / AccountDetail.php
give / src / PaymentGateways / Stripe / Models Last commit date
AccountDetail.php 3 years ago
AccountDetail.php
166 lines
1 <?php
2
3 namespace Give\PaymentGateways\Stripe\Models;
4
5 use Exception;
6 use Give\Helpers\ArrayDataSet;
7 use Give\PaymentGateways\Exceptions\InvalidPropertyName;
8 use Give\PaymentGateways\Stripe\Traits\HasStripeStatementDescriptorText;
9
10 /**
11 * Class AccountDetail
12 *
13 * @package Give\PaymentGateways\Stripe\Models
14 * @since 2.10.2
15 *
16 * @property-read string $type
17 * @property-read string $accountName
18 * @property-read string $accountSlug
19 * @property-read string $accountEmail
20 * @property-read string $accountCountry
21 * @property-read string $accountId
22 * @property-read string $liveSecretKey
23 * @property-read string $livePublishableKey
24 * @property-read string $testSecretKey
25 * @property-read string $testPublishableKey
26 * @property-read string $statementDescriptor
27 */
28 class AccountDetail
29 {
30 use HasStripeStatementDescriptorText;
31
32 protected $args;
33 protected $propertiesArgs;
34 protected $requiredArgs = [
35 'type',
36 'account_name',
37 'account_slug',
38 'account_email',
39 'account_country',
40 'account_id',
41 'live_secret_key',
42 'live_publishable_key',
43 'test_secret_key',
44 'test_publishable_key',
45 'statement_descriptor',
46 ];
47
48 /**
49 * AccountDetail constructor.
50 *
51 * @since 2.10.2
52 *
53 * @param array $args
54 *
55 * @throws InvalidPropertyName
56 */
57 final public function __construct(array $args)
58 {
59 $this->args = $args;
60 $args = $this->addSupportFormNewStatementDescriptorParam($args);
61 $this->propertiesArgs = ArrayDataSet::camelCaseKeys($args);
62 $this->validate($args);
63 }
64
65 /**
66 * @since 2.13.0
67 * @throws InvalidPropertyName
68 */
69 public static function fromArray($array)
70 {
71 return new static($array);
72 }
73
74 /**
75 * @since 2.13.0
76 *
77 * @return array
78 */
79 public function toArray()
80 {
81 return [
82 'type' => $this->type,
83 'account_id' => $this->accountId,
84 'account_slug' => $this->accountSlug,
85 'account_name' => $this->accountName,
86 'account_country' => $this->accountCountry,
87 'account_email' => $this->accountEmail,
88 'live_secret_key' => $this->liveSecretKey,
89 'test_secret_key' => $this->testSecretKey,
90 'live_publishable_key' => $this->livePublishableKey,
91 'test_publishable_key' => $this->testPublishableKey,
92 'statement_descriptor' => $this->statementDescriptor,
93 ];
94 }
95
96 /**
97 * @since 2.10.2
98 *
99 * @param string $key
100 *
101 * @return mixed
102 * @throws InvalidPropertyName
103 */
104 public function __get($key)
105 {
106 if ( ! array_key_exists($key, $this->propertiesArgs)) {
107 throw new InvalidPropertyName(
108 sprintf(
109 '$1%s property does not exist in %2$s class',
110 $key,
111 __CLASS__
112 )
113 );
114 }
115
116 return $this->propertiesArgs[$key];
117 }
118
119 /**
120 * Validate array format.
121 *
122 * @since 2.10.2
123 *
124 * @param array $array
125 *
126 * @throws InvalidPropertyName
127 */
128 private function validate($array)
129 {
130 if (array_diff($this->requiredArgs, array_keys($array))) {
131 throw new InvalidPropertyName(
132 sprintf(
133 'To create a %1$s object, please provide valid: %2$s',
134 __CLASS__,
135 implode(' , ', $this->requiredArgs)
136 )
137 );
138 }
139 }
140
141 /**
142 * We decided to define statement descriptor per stripe account.
143 * Statement descriptor default text for each account will be set to blog title.
144 * @see : https://github.com/impress-org/givewp/issues/6021
145 *
146 * @since 2.19.0
147 * @since 2.19.1 Use old stripe statement descriptor requirements to filter text.
148 * https://github.com/impress-org/givewp/pull/6269
149 * @deprecated
150 *
151 * @param array $args
152 *
153 * @return array
154 */
155 private function addSupportFormNewStatementDescriptorParam($args)
156 {
157 $propertyName = 'statement_descriptor';
158 if ( ! array_key_exists($propertyName, $args) || empty($args[$propertyName])) {
159 $statementDescriptor = give_get_option('stripe_statement_descriptor', get_bloginfo('name'));
160 $args[$propertyName] = $this->filterOldStatementDescriptor($statementDescriptor);
161 }
162
163 return $args;
164 }
165 }
166