wp-pay-gateways /
adyen
| 1 | <?php |
||
| 2 | /** |
||
| 3 | * Payment request |
||
| 4 | * |
||
| 5 | * @author Pronamic <[email protected]> |
||
| 6 | * @copyright 2005-2019 Pronamic |
||
| 7 | * @license GPL-3.0-or-later |
||
| 8 | * @package Pronamic\WordPress\Pay\Gateways\Adyen |
||
| 9 | */ |
||
| 10 | |||
| 11 | namespace Pronamic\WordPress\Pay\Gateways\Adyen; |
||
| 12 | |||
| 13 | /** |
||
| 14 | * Title: Adyen payment request |
||
| 15 | * Description: |
||
| 16 | * Copyright: 2005-2019 Pronamic |
||
| 17 | * Company: Pronamic |
||
| 18 | * |
||
| 19 | * @link https://docs.adyen.com/api-explorer/#/PaymentSetupAndVerificationService/v40/payments |
||
| 20 | * |
||
| 21 | * @author Reüel van der Steege |
||
| 22 | * @version 1.0.0 |
||
| 23 | * @since 1.0.0 |
||
| 24 | */ |
||
| 25 | class PaymentRequest { |
||
| 26 | /** |
||
| 27 | * Allowed payment methods. |
||
| 28 | * |
||
| 29 | * List of payments methods to be presented to the shopper. To refer to payment methods, |
||
| 30 | * use their brandCode from https://docs.adyen.com/developers/payment-methods/payment-methods-overview |
||
| 31 | * |
||
| 32 | * @var array |
||
| 33 | */ |
||
| 34 | public $allowed_payment_methods; |
||
| 35 | |||
| 36 | /** |
||
| 37 | * The transaction amount needs to be represented in minor units according to the table below. |
||
| 38 | * |
||
| 39 | * Some currencies do not have decimal points, such as JPY, and some have 3 decimal points, such as BHD. |
||
| 40 | * For example, 10 GBP is submitted as 1000, whereas 10 JPY is submitted as 10. |
||
| 41 | * |
||
| 42 | * @link https://docs.adyen.com/developers/development-resources/currency-codes |
||
| 43 | * |
||
| 44 | * @var int |
||
| 45 | */ |
||
| 46 | public $amount_value; |
||
| 47 | |||
| 48 | /** |
||
| 49 | * Channel. |
||
| 50 | * |
||
| 51 | * The platform where a payment transaction takes place. This field is optional for filtering out |
||
| 52 | * payment methods that are only available on specific platforms. If this value is not set, |
||
| 53 | * then we will try to infer it from the sdkVersion or token. |
||
| 54 | * |
||
| 55 | * Possible values: Android, iOS, Web. |
||
| 56 | * |
||
| 57 | * @var string |
||
| 58 | */ |
||
| 59 | public $channel; |
||
| 60 | |||
| 61 | /** |
||
| 62 | * Country code (ISO 3166-1 alpha-2). |
||
| 63 | * |
||
| 64 | * @var string |
||
| 65 | */ |
||
| 66 | public $country_code; |
||
| 67 | |||
| 68 | /** |
||
| 69 | * Currency code. |
||
| 70 | * |
||
| 71 | * @link https://docs.adyen.com/developers/development-resources/currency-codes |
||
| 72 | * |
||
| 73 | * @var string |
||
| 74 | */ |
||
| 75 | public $currency; |
||
| 76 | |||
| 77 | /** |
||
| 78 | * The merchant account identifier, with which you want to process the transaction. |
||
| 79 | * |
||
| 80 | * @var string |
||
| 81 | */ |
||
| 82 | public $merchant_account; |
||
| 83 | |||
| 84 | /** |
||
| 85 | * Origin URL. |
||
| 86 | * |
||
| 87 | * Required for the Web integration. Set this parameter to the |
||
| 88 | * origin URL of the page that you are loading the SDK from. |
||
| 89 | * |
||
| 90 | * @var string |
||
| 91 | */ |
||
| 92 | public $origin_url; |
||
| 93 | |||
| 94 | /** |
||
| 95 | * The collection that contains the type of the payment method and its |
||
| 96 | * specific information (e.g. idealIssuer). |
||
| 97 | * |
||
| 98 | * @var array |
||
| 99 | */ |
||
| 100 | public $payment_method; |
||
| 101 | |||
| 102 | /** |
||
| 103 | * The reference to uniquely identify a payment. This reference is used in all communication |
||
| 104 | * with you about the payment status. We recommend using a unique value per payment; |
||
| 105 | * however, it is not a requirement. If you need to provide multiple references for |
||
| 106 | * a transaction, separate them with hyphens ("-"). Maximum length: 80 characters. |
||
| 107 | * |
||
| 108 | * @var string |
||
| 109 | */ |
||
| 110 | public $reference; |
||
| 111 | |||
| 112 | /** |
||
| 113 | * The URL to return to. |
||
| 114 | * |
||
| 115 | * @var string |
||
| 116 | */ |
||
| 117 | public $return_url; |
||
| 118 | |||
| 119 | /** |
||
| 120 | * SDK version. |
||
| 121 | * |
||
| 122 | * @var string |
||
| 123 | */ |
||
| 124 | public $sdk_version; |
||
| 125 | |||
| 126 | /** |
||
| 127 | * The shopper IP. |
||
| 128 | * |
||
| 129 | * @var string |
||
| 130 | */ |
||
| 131 | public $shopper_ip; |
||
| 132 | |||
| 133 | /** |
||
| 134 | * The shopper gender. |
||
| 135 | * |
||
| 136 | * @var string |
||
| 137 | */ |
||
| 138 | public $shopper_gender; |
||
| 139 | |||
| 140 | /** |
||
| 141 | * The shopper first name. |
||
| 142 | * |
||
| 143 | * @var string |
||
| 144 | */ |
||
| 145 | public $shopper_first_name; |
||
| 146 | |||
| 147 | /** |
||
| 148 | * The name's infix, if applicable. A maximum length of twenty (20) characters is imposed. |
||
| 149 | * |
||
| 150 | * @var string |
||
| 151 | */ |
||
| 152 | public $shopper_name_infix; |
||
| 153 | |||
| 154 | /** |
||
| 155 | * The shopper last name. |
||
| 156 | * |
||
| 157 | * @var string |
||
| 158 | */ |
||
| 159 | public $shopper_last_name; |
||
| 160 | |||
| 161 | /** |
||
| 162 | * The combination of a language code and a country code to specify the language to be used in the payment. |
||
| 163 | * |
||
| 164 | * @var string |
||
| 165 | */ |
||
| 166 | public $shopper_locale; |
||
| 167 | |||
| 168 | /** |
||
| 169 | * The shopper's reference to uniquely identify this shopper (e.g. user ID or account ID). This field is |
||
| 170 | * required for recurring payments |
||
| 171 | * |
||
| 172 | * @var string |
||
| 173 | */ |
||
| 174 | public $shopper_reference; |
||
| 175 | |||
| 176 | /** |
||
| 177 | * The text to appear on the shopper's bank statement. |
||
| 178 | * |
||
| 179 | * @var string |
||
| 180 | */ |
||
| 181 | public $shopper_statement; |
||
| 182 | |||
| 183 | /** |
||
| 184 | * The shopper's telephone number. |
||
| 185 | * |
||
| 186 | * @var string |
||
| 187 | */ |
||
| 188 | public $shopper_telephone_number; |
||
| 189 | |||
| 190 | /** |
||
| 191 | * Construct a payment request object. |
||
| 192 | * |
||
| 193 | * @param Amount $amount The amount information for the transaction. |
||
| 194 | * @param string $merchant_account The merchant account identifier, with which you want to process the transaction |
||
| 195 | * @param PaymentMethod $payment_method The collection that contains the type of the payment method and its specific information (e.g. idealIssuer). |
||
| 196 | * @param string $reference The reference to uniquely identify a payment. |
||
| 197 | * @param string $return_url The URL to return to. |
||
| 198 | */ |
||
| 199 | public function __construct( Amount $amount, $merchant_account, PaymentMethod $payment_method, $reference, $return_url ) { |
||
| 200 | $this->set_amount( $amount ); |
||
| 201 | $this->set_merchant_account( $merchant_account ); |
||
| 202 | $this->set_payment_method( $payment_method ); |
||
| 203 | $this->set_reference( $reference ); |
||
| 204 | $this->set_return_url( $return_url ); |
||
| 205 | } |
||
| 206 | |||
| 207 | /** |
||
| 208 | * Get amount. |
||
| 209 | * |
||
| 210 | * @return Amount |
||
| 211 | */ |
||
| 212 | public function get_amount() { |
||
| 213 | return $this->amount; |
||
| 214 | } |
||
| 215 | |||
| 216 | /** |
||
| 217 | * Set amount. |
||
| 218 | * |
||
| 219 | * @param Amount $amount Amount. |
||
| 220 | */ |
||
| 221 | public function set_amount( Amount $amount ) { |
||
| 222 | $this->amount = $amount; |
||
|
0 ignored issues
–
show
Bug
Best Practice
introduced
by
Loading history...
|
|||
| 223 | } |
||
| 224 | |||
| 225 | /** |
||
| 226 | * Get merchant account. |
||
| 227 | * |
||
| 228 | * @return string |
||
| 229 | */ |
||
| 230 | public function get_merchant_account() { |
||
| 231 | return $this->merchant_account; |
||
| 232 | } |
||
| 233 | |||
| 234 | /** |
||
| 235 | * Set merchant account. |
||
| 236 | * |
||
| 237 | * @param string $merchant_account Merchant account. |
||
| 238 | */ |
||
| 239 | public function set_merchant_account( $merchant_account ) { |
||
| 240 | $this->merchant_account = $merchant_account; |
||
| 241 | } |
||
| 242 | |||
| 243 | /** |
||
| 244 | * Get payment method. |
||
| 245 | * |
||
| 246 | * @return PaymentMethod |
||
| 247 | */ |
||
| 248 | public function get_payment_method() { |
||
| 249 | return $this->payment_method; |
||
|
0 ignored issues
–
show
|
|||
| 250 | } |
||
| 251 | |||
| 252 | /** |
||
| 253 | * Set payment method. |
||
| 254 | * |
||
| 255 | * @param PaymentMethod $payment_method Payment method. |
||
| 256 | */ |
||
| 257 | public function set_payment_method( PaymentMethod $payment_method ) { |
||
| 258 | $this->payment_method = $payment_method; |
||
|
0 ignored issues
–
show
It seems like
$payment_method of type Pronamic\WordPress\Pay\G...ays\Adyen\PaymentMethod is incompatible with the declared type array of property $payment_method.
Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property. Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property.. Loading history...
|
|||
| 259 | } |
||
| 260 | |||
| 261 | /** |
||
| 262 | * Get reference. |
||
| 263 | * |
||
| 264 | * @return string |
||
| 265 | */ |
||
| 266 | public function get_reference() { |
||
| 267 | return $this->reference; |
||
| 268 | } |
||
| 269 | |||
| 270 | /** |
||
| 271 | * Set reference. |
||
| 272 | * |
||
| 273 | * @param string $reference Reference. |
||
| 274 | */ |
||
| 275 | public function set_reference( $reference ) { |
||
| 276 | $this->reference = $reference; |
||
| 277 | } |
||
| 278 | |||
| 279 | /** |
||
| 280 | * Get return URL. |
||
| 281 | * |
||
| 282 | * @return string |
||
| 283 | */ |
||
| 284 | public function get_return_url() { |
||
| 285 | return $this->return_url; |
||
| 286 | } |
||
| 287 | |||
| 288 | /** |
||
| 289 | * Set return URL. |
||
| 290 | * |
||
| 291 | * @param string $return_url Return URL. |
||
| 292 | */ |
||
| 293 | public function set_return_url( $return_url ) { |
||
| 294 | $this->return_url = $return_url; |
||
| 295 | } |
||
| 296 | |||
| 297 | /** |
||
| 298 | * Get shopper name. |
||
| 299 | * |
||
| 300 | * @return ShopperName|null |
||
|
0 ignored issues
–
show
The type
Pronamic\WordPress\Pay\Gateways\Adyen\ShopperName was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths Loading history...
|
|||
| 301 | */ |
||
| 302 | public function get_shopper_name() { |
||
| 303 | return $this->shopper_name; |
||
| 304 | } |
||
| 305 | |||
| 306 | /** |
||
| 307 | * Set shopper name. |
||
| 308 | * |
||
| 309 | * @param ShopperName|null $shopper_name Shopper name. |
||
| 310 | */ |
||
| 311 | public function set_shopper_name( ShopperName $shopper_name = null ) { |
||
| 312 | $this->shopper_name = $shopper_name; |
||
|
0 ignored issues
–
show
|
|||
| 313 | } |
||
| 314 | |||
| 315 | /** |
||
| 316 | * Get JSON. |
||
| 317 | * |
||
| 318 | * @return object |
||
| 319 | */ |
||
| 320 | public function get_json() { |
||
| 321 | $object = (object) array(); |
||
| 322 | |||
| 323 | // Amount. |
||
| 324 | $object->amount = $this->get_amount()->get_json(); |
||
| 325 | |||
| 326 | // Merchant account. |
||
| 327 | $object->merchantAccount = $this->get_merchant_account(); |
||
| 328 | |||
| 329 | // Payment method. |
||
| 330 | $object->paymentMethod = $this->get_payment_method()->get_json(); |
||
| 331 | |||
| 332 | // Reference. |
||
| 333 | $object->reference = $this->get_reference(); |
||
| 334 | |||
| 335 | // Return URL. |
||
| 336 | $object->returnUrl = $this->get_return_url(); |
||
| 337 | |||
| 338 | // Shopper name. |
||
| 339 | $shopper_name = $this->get_shopper_name(); |
||
| 340 | |||
| 341 | if ( null !== $shopper_name ) { |
||
| 342 | $object->shopperName = $shopper_name->get_json(); |
||
| 343 | } |
||
| 344 | |||
| 345 | // Return object. |
||
| 346 | return $object; |
||
| 347 | |||
| 348 | $array = array( |
||
| 349 | 'amount' => array( |
||
| 350 | 'currency' => $this->currency, |
||
| 351 | 'value' => $this->amount_value, |
||
| 352 | ), |
||
| 353 | 'allowedPaymentMethods' => $this->allowed_payment_methods, |
||
| 354 | 'channel' => $this->channel, |
||
| 355 | 'countryCode' => $this->country_code, |
||
| 356 | 'merchantAccount' => $this->merchant_account, |
||
| 357 | 'origin' => $this->origin_url, |
||
| 358 | 'paymentMethod' => $this->payment_method, |
||
| 359 | 'reference' => $this->reference, |
||
| 360 | 'returnUrl' => $this->return_url, |
||
| 361 | 'sdkVersion' => $this->sdk_version, |
||
| 362 | 'shopperIp' => $this->shopper_ip, |
||
| 363 | 'shopperName' => array( |
||
| 364 | 'firstName' => $this->shopper_first_name, |
||
| 365 | 'gender' => $this->shopper_gender, |
||
| 366 | 'infix' => $this->shopper_name_infix, |
||
| 367 | 'lastName' => $this->shopper_last_name, |
||
| 368 | ), |
||
| 369 | 'shopperLocale' => $this->shopper_locale, |
||
| 370 | 'shopperReference' => $this->shopper_reference, |
||
| 371 | 'shopperStatement' => $this->shopper_statement, |
||
| 372 | 'telephoneNumber' => $this->shopper_telephone_number, |
||
| 373 | ); |
||
| 374 | |||
| 375 | /* |
||
| 376 | * Array filter will remove values NULL, FALSE and empty strings ('') |
||
| 377 | */ |
||
| 378 | $array['paymentMethod'] = (object) array_filter( $array['paymentMethod'] ); |
||
| 379 | $array['shopperName'] = (object) array_filter( $array['shopperName'] ); |
||
| 380 | $array = array_filter( $array ); |
||
| 381 | |||
| 382 | return $array; |
||
| 383 | } |
||
| 384 | } |
||
| 385 |