This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /** |
||
3 | * @copyright Anton Tuyakhov <[email protected]> |
||
4 | */ |
||
5 | namespace tuyakhov\braintree; |
||
6 | |||
7 | use yii\base\Component; |
||
8 | use yii\base\InvalidConfigException; |
||
9 | |||
10 | class Braintree extends Component |
||
11 | { |
||
12 | public $environment = 'sandbox'; |
||
0 ignored issues
–
show
Coding Style
introduced
by
![]() |
|||
13 | public $merchantId; |
||
0 ignored issues
–
show
|
|||
14 | public $publicKey; |
||
0 ignored issues
–
show
|
|||
15 | public $privateKey; |
||
0 ignored issues
–
show
|
|||
16 | public $clientSideKey; |
||
0 ignored issues
–
show
|
|||
17 | |||
18 | public $options; |
||
0 ignored issues
–
show
|
|||
19 | |||
20 | /** |
||
0 ignored issues
–
show
|
|||
21 | * Sets up Braintree configuration from config file |
||
0 ignored issues
–
show
|
|||
22 | * @throws \yii\base\InvalidConfigException |
||
0 ignored issues
–
show
|
|||
23 | */ |
||
0 ignored issues
–
show
|
|||
24 | public function init() |
||
0 ignored issues
–
show
|
|||
25 | { |
||
0 ignored issues
–
show
|
|||
26 | foreach (['merchantId', 'publicKey', 'privateKey', 'environment'] as $attribute) { |
||
0 ignored issues
–
show
|
|||
27 | if ($this->$attribute === null) { |
||
0 ignored issues
–
show
|
|||
28 | throw new InvalidConfigException(strtr('"{class}::{attribute}" cannot be empty.', [ |
||
0 ignored issues
–
show
|
|||
29 | '{class}' => static::className(), |
||
0 ignored issues
–
show
|
|||
30 | '{attribute}' => '$' . $attribute |
||
0 ignored issues
–
show
|
|||
31 | ])); |
||
0 ignored issues
–
show
|
|||
32 | } |
||
0 ignored issues
–
show
|
|||
33 | \Braintree_Configuration::$attribute($this->$attribute); |
||
0 ignored issues
–
show
|
|||
34 | } |
||
0 ignored issues
–
show
|
|||
35 | $this->clientSideKey = \Braintree_ClientToken::generate(); |
||
0 ignored issues
–
show
|
|||
36 | parent::init(); |
||
0 ignored issues
–
show
|
|||
37 | } |
||
0 ignored issues
–
show
|
|||
38 | |||
39 | /** |
||
0 ignored issues
–
show
|
|||
40 | * Braintree sale function |
||
0 ignored issues
–
show
|
|||
41 | * @param bool|true $submitForSettlement |
||
0 ignored issues
–
show
|
|||
42 | * @param bool|true $storeInVaultOnSuccess |
||
0 ignored issues
–
show
|
|||
43 | * @return array |
||
0 ignored issues
–
show
|
|||
44 | */ |
||
0 ignored issues
–
show
|
|||
45 | public function singleCharge($submitForSettlement = true, $storeInVaultOnSuccess = true) |
||
0 ignored issues
–
show
|
|||
46 | { |
||
0 ignored issues
–
show
|
|||
47 | $this->options['options']['submitForSettlement'] = $submitForSettlement; |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 3 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
48 | $this->options['options']['storeInVaultOnSuccess'] = $storeInVaultOnSuccess; |
||
0 ignored issues
–
show
|
|||
49 | $result = \Braintree_Transaction::sale($this->options); |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 44 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
50 | |||
51 | if ($result->success) { |
||
0 ignored issues
–
show
|
|||
52 | return ['status' => true, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
53 | View Code Duplication | } else if ($result->transaction) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
54 | return ['status' => false, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
55 | } else { |
||
0 ignored issues
–
show
|
|||
56 | return ['status' => false, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
57 | } |
||
0 ignored issues
–
show
|
|||
58 | } |
||
0 ignored issues
–
show
|
|||
59 | |||
60 | /** |
||
0 ignored issues
–
show
|
|||
61 | * Finds transaction by id |
||
0 ignored issues
–
show
|
|||
62 | */ |
||
0 ignored issues
–
show
|
|||
63 | public function findTransaction($id) |
||
0 ignored issues
–
show
The return type could not be reliably inferred; please add a
@return annotation.
Our type inference engine in quite powerful, but sometimes the code does not
provide enough clues to go by. In these cases we request you to add a ![]() |
|||
64 | { |
||
0 ignored issues
–
show
|
|||
65 | return \Braintree_Transaction::find($id); |
||
0 ignored issues
–
show
|
|||
66 | } |
||
0 ignored issues
–
show
|
|||
67 | |||
68 | /** |
||
0 ignored issues
–
show
|
|||
69 | * This save customer to braintree and returns result array |
||
0 ignored issues
–
show
|
|||
70 | * @return array |
||
0 ignored issues
–
show
|
|||
71 | */ |
||
0 ignored issues
–
show
|
|||
72 | public function saveCustomer() |
||
0 ignored issues
–
show
|
|||
73 | { |
||
0 ignored issues
–
show
|
|||
74 | if (isset($this->options['customerId'])) { |
||
0 ignored issues
–
show
|
|||
75 | $this->options['customer']['id'] = $this->options['customerId']; |
||
0 ignored issues
–
show
|
|||
76 | } |
||
0 ignored issues
–
show
|
|||
77 | $result = \Braintree_Customer::create($this->options['customer']); |
||
0 ignored issues
–
show
|
|||
78 | |||
79 | View Code Duplication | if ($result->success) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
80 | return ['status' => true, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
81 | } else { |
||
0 ignored issues
–
show
|
|||
82 | return ['status' => false, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
83 | } |
||
0 ignored issues
–
show
|
|||
84 | } |
||
0 ignored issues
–
show
|
|||
85 | |||
86 | /** |
||
0 ignored issues
–
show
|
|||
87 | * This save credit cart to braintree |
||
0 ignored issues
–
show
|
|||
88 | * @return array |
||
0 ignored issues
–
show
|
|||
89 | */ |
||
0 ignored issues
–
show
|
|||
90 | public function saveCreditCard() |
||
0 ignored issues
–
show
|
|||
91 | { |
||
0 ignored issues
–
show
|
|||
92 | $send_array = $this->options['creditCard']; |
||
0 ignored issues
–
show
|
|||
93 | if (isset($this->options['billing'])) { |
||
0 ignored issues
–
show
|
|||
94 | $send_array['billingAddress'] = $this->options['billing']; |
||
0 ignored issues
–
show
|
|||
95 | } |
||
0 ignored issues
–
show
|
|||
96 | if (isset($this->options['customerId'])) { |
||
0 ignored issues
–
show
|
|||
97 | $send_array['customerId'] = $this->options['customerId']; |
||
0 ignored issues
–
show
|
|||
98 | } |
||
0 ignored issues
–
show
|
|||
99 | $result = \Braintree_CreditCard::create($send_array); |
||
0 ignored issues
–
show
|
|||
100 | |||
101 | View Code Duplication | if ($result->success) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
102 | return ['status' => true, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
103 | } else { |
||
0 ignored issues
–
show
|
|||
104 | return ['status' => false, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
105 | } |
||
0 ignored issues
–
show
|
|||
106 | } |
||
0 ignored issues
–
show
|
|||
107 | |||
108 | public function saveAddress() |
||
0 ignored issues
–
show
|
|||
109 | { |
||
0 ignored issues
–
show
|
|||
110 | $send_array = $this->options['billing']; |
||
0 ignored issues
–
show
|
|||
111 | if (isset($this->options['customerId'])) { |
||
0 ignored issues
–
show
|
|||
112 | $send_array['customerId'] = $this->options['customerId']; |
||
0 ignored issues
–
show
|
|||
113 | } |
||
0 ignored issues
–
show
|
|||
114 | $result = \Braintree_Address::create($send_array); |
||
0 ignored issues
–
show
|
|||
115 | |||
116 | View Code Duplication | if ($result->success) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
117 | return ['status' => true, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
118 | } else { |
||
0 ignored issues
–
show
|
|||
119 | return ['status' => false, 'result' => $result]; |
||
0 ignored issues
–
show
|
|||
120 | } |
||
0 ignored issues
–
show
|
|||
121 | } |
||
0 ignored issues
–
show
|
|||
122 | |||
123 | /** |
||
0 ignored issues
–
show
|
|||
124 | * Constructs the Credit Card array for payment |
||
0 ignored issues
–
show
|
|||
125 | * @param integer $number Credit Card Number |
||
0 ignored issues
–
show
|
|||
126 | * @param integer $cvv (optional)Credit Card Security code |
||
0 ignored issues
–
show
Should the type for parameter
$cvv not be integer|null ?
This check looks for It makes a suggestion as to what type it considers more descriptive. Most often this is a case of a parameter that can be null in addition to its declared types. ![]() |
|||
127 | * @param integer $expirationMonth format: MM (use expirationMonth and expirationYear or expirationDate not both) |
||
0 ignored issues
–
show
Should the type for parameter
$expirationMonth not be integer|null ?
This check looks for It makes a suggestion as to what type it considers more descriptive. Most often this is a case of a parameter that can be null in addition to its declared types. ![]() |
|||
128 | * @param integer $expirationYear format: YYYY (use expirationMonth and expirationYear or expirationDate not both) |
||
0 ignored issues
–
show
Should the type for parameter
$expirationYear not be integer|null ?
This check looks for It makes a suggestion as to what type it considers more descriptive. Most often this is a case of a parameter that can be null in addition to its declared types. ![]() |
|||
129 | * @param string $expirationDate format: MM/YYYY (use expirationMonth and expirationYear or expirationDate not both) |
||
0 ignored issues
–
show
Should the type for parameter
$expirationDate not be string|null ?
This check looks for It makes a suggestion as to what type it considers more descriptive. Most often this is a case of a parameter that can be null in addition to its declared types. ![]() |
|||
130 | */ |
||
0 ignored issues
–
show
|
|||
131 | public function setCreditCard($number, $cvv = null, $expirationMonth = null, $expirationYear = null, $expirationDate = null) |
||
0 ignored issues
–
show
|
|||
132 | { |
||
0 ignored issues
–
show
|
|||
133 | $this->options['creditCard'] = []; |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 49 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
134 | $this->options['creditCard']['number'] = $number; |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 39 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
135 | if (isset($cvv)) $this->options['creditCard']['cvv'] = $cvv; |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 25 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
136 | if (isset($expirationMonth)) $this->options['creditCard']['expirationMonth'] = $expirationMonth; |
||
0 ignored issues
–
show
|
|||
137 | if (isset($expirationYear)) $this->options['creditCard']['expirationYear'] = $expirationYear; |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 3 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
138 | if (isset($expirationDate)) $this->options['creditCard']['expirationDate'] = $expirationDate; |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 3 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
139 | } |
||
0 ignored issues
–
show
|
|||
140 | |||
141 | public function getCreditCard($input_values) |
||
0 ignored issues
–
show
|
|||
142 | { |
||
0 ignored issues
–
show
|
|||
143 | $default = [ |
||
0 ignored issues
–
show
|
|||
144 | 'cvv' => null, |
||
0 ignored issues
–
show
|
|||
145 | 'expirationMonth' => null, |
||
0 ignored issues
–
show
|
|||
146 | 'expirationYear' => null, |
||
0 ignored issues
–
show
|
|||
147 | 'expirationDate' => null, |
||
0 ignored issues
–
show
|
|||
148 | 'name' => null, |
||
0 ignored issues
–
show
|
|||
149 | ]; |
||
0 ignored issues
–
show
|
|||
150 | $values = array_merge($default, $input_values); |
||
0 ignored issues
–
show
Equals sign not aligned with surrounding assignments; expected 2 spaces but found 1 space
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line. To visualize $a = "a";
$ab = "ab";
$abc = "abc";
will produce issues in the first and second line, while this second example $a = "a";
$ab = "ab";
$abc = "abc";
will produce no issues. ![]() |
|||
151 | $this->setCreditCard($values['number'], $values['cvv'], $values['expirationMonth'], $values['expirationYear'], $values['expirationDate'], $values['name']); |
||
0 ignored issues
–
show
The call to
Braintree::setCreditCard() has too many arguments starting with $values['name'] .
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue. If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. In this case you can add the ![]() |
|||
152 | } |
||
0 ignored issues
–
show
|
|||
153 | |||
154 | public function getOptions($values) |
||
0 ignored issues
–
show
|
|||
155 | { |
||
0 ignored issues
–
show
|
|||
156 | if (!empty($values)) { |
||
0 ignored issues
–
show
|
|||
157 | foreach ($values as $key => $value) { |
||
0 ignored issues
–
show
|
|||
158 | if ($key == 'amount') |
||
0 ignored issues
–
show
|
|||
159 | $this->setAmount($values['amount']); |
||
0 ignored issues
–
show
|
|||
160 | elseif ($key == 'creditCard') |
||
0 ignored issues
–
show
|
|||
161 | $this->getCreditCard($values['creditCard']); |
||
0 ignored issues
–
show
|
|||
162 | else |
||
0 ignored issues
–
show
|
|||
163 | $this->options[$key] = $value; |
||
0 ignored issues
–
show
|
|||
164 | } |
||
0 ignored issues
–
show
|
|||
165 | } |
||
0 ignored issues
–
show
|
|||
166 | } |
||
0 ignored issues
–
show
|
|||
167 | |||
168 | /** |
||
0 ignored issues
–
show
|
|||
169 | * Set the amount to charge |
||
0 ignored issues
–
show
|
|||
170 | * @param float $amount No dollar sign needed |
||
0 ignored issues
–
show
|
|||
171 | */ |
||
0 ignored issues
–
show
|
|||
172 | public function setAmount($amount) |
||
0 ignored issues
–
show
|
|||
173 | { |
||
0 ignored issues
–
show
|
|||
174 | $this->options['amount'] = round($amount, 2); |
||
0 ignored issues
–
show
|
|||
175 | } |
||
0 ignored issues
–
show
|
|||
176 | } |