1 | <?php |
||||
2 | |||||
3 | namespace Pronamic\WordPress\Pay\Gateways\IDealAdvancedV3; |
||||
4 | |||||
5 | use Pronamic\WordPress\Pay\Core\Gateway as Core_Gateway; |
||||
6 | use Pronamic\WordPress\Pay\Core\PaymentMethods; |
||||
7 | use Pronamic\WordPress\Pay\Payments\Payment; |
||||
8 | |||||
9 | /** |
||||
10 | * Title: iDEAL Advanced v3+ gateway |
||||
11 | * Description: |
||||
12 | * Copyright: 2005-2019 Pronamic |
||||
13 | * Company: Pronamic |
||||
14 | * |
||||
15 | * @author Remco Tolsma |
||||
16 | * @version 2.0.2 |
||||
17 | * @since 1.0.0 |
||||
18 | */ |
||||
19 | class Gateway extends Core_Gateway { |
||||
20 | /** |
||||
21 | * Client. |
||||
22 | * |
||||
23 | * @var Client |
||||
24 | */ |
||||
25 | protected $client; |
||||
26 | |||||
27 | /** |
||||
28 | * Constructs and initializes an iDEAL Advanced v3 gateway |
||||
29 | * |
||||
30 | * @param Config $config Config. |
||||
31 | */ |
||||
32 | public function __construct( Config $config ) { |
||||
33 | parent::__construct( $config ); |
||||
34 | |||||
35 | $this->supports = array( |
||||
36 | 'payment_status_request', |
||||
37 | ); |
||||
38 | |||||
39 | $this->set_method( self::METHOD_HTTP_REDIRECT ); |
||||
40 | |||||
41 | // Client. |
||||
42 | $client = new Client(); |
||||
43 | |||||
44 | $client->set_acquirer_url( $config->get_payment_server_url() ); |
||||
45 | |||||
46 | $client->merchant_id = $config->merchant_id; |
||||
47 | $client->sub_id = $config->sub_id; |
||||
48 | $client->private_key = $config->private_key; |
||||
49 | $client->private_key_password = $config->private_key_password; |
||||
50 | $client->private_certificate = $config->private_certificate; |
||||
51 | |||||
52 | $this->client = $client; |
||||
53 | } |
||||
54 | |||||
55 | /** |
||||
56 | * Get issuers |
||||
57 | * |
||||
58 | * @see Core_Gateway::get_issuers() |
||||
59 | * |
||||
60 | * @return array |
||||
61 | */ |
||||
62 | public function get_issuers() { |
||||
63 | $directory = $this->client->get_directory(); |
||||
64 | |||||
65 | if ( ! $directory ) { |
||||
66 | $this->error = $this->client->get_error(); |
||||
67 | |||||
68 | return array(); |
||||
69 | } |
||||
70 | |||||
71 | $groups = array(); |
||||
72 | |||||
73 | foreach ( $directory->get_countries() as $country ) { |
||||
74 | $issuers = array(); |
||||
75 | |||||
76 | foreach ( $country->get_issuers() as $issuer ) { |
||||
77 | $issuers[ $issuer->get_id() ] = $issuer->get_name(); |
||||
78 | } |
||||
79 | |||||
80 | $groups[] = array( |
||||
81 | 'name' => $country->get_name(), |
||||
82 | 'options' => $issuers, |
||||
83 | ); |
||||
84 | } |
||||
85 | |||||
86 | return $groups; |
||||
87 | } |
||||
88 | |||||
89 | /** |
||||
90 | * Get supported payment methods |
||||
91 | * |
||||
92 | * @see Pronamic_WP_Pay_Gateway::get_supported_payment_methods() |
||||
93 | */ |
||||
94 | public function get_supported_payment_methods() { |
||||
95 | return array( |
||||
96 | PaymentMethods::IDEAL, |
||||
97 | ); |
||||
98 | } |
||||
99 | |||||
100 | /** |
||||
101 | * Is payment method required to start transaction? |
||||
102 | * |
||||
103 | * @see Core_Gateway::payment_method_is_required() |
||||
104 | * @since 1.1.5 |
||||
105 | */ |
||||
106 | public function payment_method_is_required() { |
||||
107 | return true; |
||||
108 | } |
||||
109 | |||||
110 | /** |
||||
111 | * Start |
||||
112 | * |
||||
113 | * @see Pronamic_WP_Pay_Gateway::start() |
||||
114 | * |
||||
115 | * @param Payment $payment Payment. |
||||
116 | */ |
||||
117 | public function start( Payment $payment ) { |
||||
118 | // Purchase ID. |
||||
119 | $purchase_id = $payment->format_string( $this->config->purchase_id ); |
||||
120 | |||||
121 | $payment->set_meta( 'purchase_id', $purchase_id ); |
||||
122 | |||||
123 | // Transaction. |
||||
124 | $transaction = new Transaction(); |
||||
125 | $transaction->set_purchase_id( $purchase_id ); |
||||
126 | $transaction->set_amount( $payment->get_total_amount()->get_value() ); |
||||
127 | $transaction->set_currency( $payment->get_total_amount()->get_currency()->get_alphabetic_code() ); |
||||
128 | $transaction->set_expiration_period( 'PT30M' ); |
||||
129 | $transaction->set_description( $payment->get_description() ); |
||||
130 | $transaction->set_entrance_code( $payment->get_entrance_code() ); |
||||
131 | |||||
132 | if ( null !== $payment->get_customer() ) { |
||||
133 | $transaction->set_language( $payment->get_customer()->get_language() ); |
||||
134 | } |
||||
135 | |||||
136 | // Create transaction. |
||||
137 | $result = $this->client->create_transaction( $transaction, $payment->get_return_url(), $payment->get_issuer() ); |
||||
138 | |||||
139 | $error = $this->client->get_error(); |
||||
140 | |||||
141 | if ( is_wp_error( $error ) ) { |
||||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||||
142 | $this->set_error( $error ); |
||||
143 | |||||
144 | return; |
||||
145 | } |
||||
146 | |||||
147 | $payment->set_action_url( $result->issuer->get_authentication_url() ); |
||||
148 | $payment->set_transaction_id( $result->transaction->get_id() ); |
||||
149 | } |
||||
150 | |||||
151 | /** |
||||
152 | * Update status of the specified payment |
||||
153 | * |
||||
154 | * @param Payment $payment Payment. |
||||
155 | */ |
||||
156 | public function update_status( Payment $payment ) { |
||||
157 | $result = $this->client->get_status( $payment->get_transaction_id() ); |
||||
158 | |||||
159 | $error = $this->client->get_error(); |
||||
160 | |||||
161 | if ( is_wp_error( $error ) ) { |
||||
0 ignored issues
–
show
The function
is_wp_error was not found. Maybe you did not declare it correctly or list all dependencies?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
162 | $this->set_error( $error ); |
||||
163 | } else { |
||||
164 | $transaction = $result->transaction; |
||||
165 | |||||
166 | $payment->set_status( $transaction->get_status() ); |
||||
167 | $payment->set_consumer_name( $transaction->get_consumer_name() ); |
||||
168 | $payment->set_consumer_iban( $transaction->get_consumer_iban() ); |
||||
169 | $payment->set_consumer_bic( $transaction->get_consumer_bic() ); |
||||
170 | } |
||||
171 | } |
||||
172 | } |
||||
173 |