PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 1.9.0
GiveWP – Donation Plugin and Fundraising Platform v1.9.0
4.16.4 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 4 years ago
AccountDetail.php
164 lines
1 <?php
2
3 namespace Give\PaymentGateways\Stripe\Models;
4
5 use Give\Helpers\ArrayDataSet;
6 use Give\PaymentGateways\Exceptions\InvalidPropertyName;
7 use Give\PaymentGateways\Stripe\Traits\HasStripeStatementDescriptorText;
8
9 /**
10 * Class AccountDetail
11 *
12 * @package Give\PaymentGateways\Stripe\Models
13 * @since 2.10.2
14 *
15 * @property-read string $type
16 * @property-read string $accountName
17 * @property-read string $accountSlug
18 * @property-read string $accountEmail
19 * @property-read string $accountCountry
20 * @property-read string $accountId
21 * @property-read string $liveSecretKey
22 * @property-read string $livePublishableKey
23 * @property-read string $testSecretKey
24 * @property-read string $testPublishableKey
25 * @property-read string $statementDescriptor
26 */
27 class AccountDetail
28 {
29 use HasStripeStatementDescriptorText;
30
31 protected $args;
32 protected $propertiesArgs;
33 protected $requiredArgs = [
34 'type',
35 'account_name',
36 'account_slug',
37 'account_email',
38 'account_country',
39 'account_id',
40 'live_secret_key',
41 'live_publishable_key',
42 'test_secret_key',
43 'test_publishable_key',
44 'statement_descriptor',
45 ];
46
47 /**
48 * AccountDetail constructor.
49 *
50 * @since 2.10.2
51 *
52 * @param array $args
53 *
54 * @throws InvalidPropertyName
55 */
56 public function __construct(array $args)
57 {
58 $this->args = $args;
59 $args = $this->addSupportFormNewStatementDescriptorParam($args);
60 $this->propertiesArgs = ArrayDataSet::camelCaseKeys($args);
61 $this->validate($args);
62 }
63
64 /**
65 * @since 2.13.0
66 * @throws InvalidPropertyName
67 */
68 public static function fromArray($array)
69 {
70 return new static($array);
71 }
72
73 /**
74 * @since 2.13.0
75 *
76 * @return array
77 */
78 public function toArray()
79 {
80 return [
81 'type' => $this->type,
82 'account_id' => $this->accountId,
83 'account_slug' => $this->accountSlug,
84 'account_name' => $this->accountName,
85 'account_country' => $this->accountCountry,
86 'account_email' => $this->accountEmail,
87 'live_secret_key' => $this->liveSecretKey,
88 'test_secret_key' => $this->testSecretKey,
89 'live_publishable_key' => $this->livePublishableKey,
90 'test_publishable_key' => $this->testPublishableKey,
91 'statement_descriptor' => $this->statementDescriptor,
92 ];
93 }
94
95 /**
96 * @since 2.10.2
97 *
98 * @param string $key
99 *
100 * @return mixed
101 * @throws InvalidPropertyName
102 */
103 public function __get($key)
104 {
105 if (!array_key_exists($key, $this->propertiesArgs)) {
106 throw new InvalidPropertyName(
107 sprintf(
108 '$1%s property does not exist in %2$s class',
109 $key,
110 __CLASS__
111 )
112 );
113 }
114
115 return $this->propertiesArgs[$key];
116 }
117
118 /**
119 * Validate array format.
120 *
121 * @since 2.10.2
122 *
123 * @param array $array
124 *
125 * @throws InvalidPropertyName
126 */
127 private function validate($array)
128 {
129 if (array_diff($this->requiredArgs, array_keys($array))) {
130 throw new InvalidPropertyName(
131 sprintf(
132 'To create a %1$s object, please provide valid: %2$s',
133 __CLASS__,
134 implode(' , ', $this->requiredArgs)
135 )
136 );
137 }
138 }
139
140 /**
141 * We decided to define statement descriptor per stripe account.
142 * Statement descriptor default text for each account will be set to blog title.
143 * @see: https://github.com/impress-org/givewp/issues/6021
144 *
145 * @since 2.19.0
146 * @deprecated
147 *
148 * @param array $args
149 *
150 * @return array
151 */
152 private function addSupportFormNewStatementDescriptorParam($args)
153 {
154 $propertyName = 'statement_descriptor';
155 if (!array_key_exists($propertyName, $args) || empty($args[$propertyName])) {
156 $statementDescriptor = give_get_option('stripe_statement_descriptor', get_bloginfo('name'));
157 $this->validateStatementDescriptor($statementDescriptor);
158 $args[$propertyName] = $statementDescriptor;
159 }
160
161 return $args;
162 }
163 }
164