-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
paypal.php
1577 lines (1160 loc) · 66.3 KB
/
paypal.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?php
class ControllerExtensionPaymentPayPal extends Controller {
private $error = array();
public function index() {
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$server = HTTPS_SERVER;
$catalog = HTTPS_CATALOG;
} else {
$server = HTTP_SERVER;
$catalog = HTTP_CATALOG;
}
// Setting
$_config = new Config();
$_config->load('paypal');
$config_setting = $_config->get('paypal_setting');
if (!empty($this->session->data['environment']) && !empty($this->session->data['authorization_code']) && !empty($this->session->data['shared_id']) && !empty($this->session->data['seller_nonce']) && !empty($this->request->get['merchantIdInPayPal'])) {
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$environment = $this->session->data['environment'];
require_once DIR_SYSTEM . 'library/paypal/paypal.php';
$paypal_info = array(
'client_id' => $this->session->data['shared_id'],
'environment' => $environment,
'partner_attribution_id' => $config_setting['partner'][$environment]['partner_attribution_id']
);
$paypal = new PayPal($paypal_info);
$token_info = array(
'grant_type' => 'authorization_code',
'code' => $this->session->data['authorization_code'],
'code_verifier' => $this->session->data['seller_nonce']
);
$paypal->setAccessToken($token_info);
$result = $paypal->getSellerCredentials($config_setting['partner'][$environment]['partner_id']);
$client_id = '';
$secret = '';
if (isset($result['client_id']) && isset($result['client_secret'])) {
$client_id = $result['client_id'];
$secret = $result['client_secret'];
}
$paypal_info = array(
'partner_id' => $config_setting['partner'][$environment]['partner_id'],
'client_id' => $client_id,
'secret' => $secret,
'environment' => $environment,
'partner_attribution_id' => $config_setting['partner'][$environment]['partner_attribution_id']
);
$paypal = new PayPal($paypal_info);
$token_info = array(
'grant_type' => 'client_credentials'
);
$paypal->setAccessToken($token_info);
$webhook_info = array(
'url' => $catalog . 'index.php?route=extension/payment/paypal',
'event_types' => array(
array('name' => 'PAYMENT.AUTHORIZATION.CREATED'),
array('name' => 'PAYMENT.AUTHORIZATION.VOIDED'),
array('name' => 'PAYMENT.CAPTURE.COMPLETED'),
array('name' => 'PAYMENT.CAPTURE.DENIED'),
array('name' => 'PAYMENT.CAPTURE.PENDING'),
array('name' => 'PAYMENT.CAPTURE.REFUNDED'),
array('name' => 'PAYMENT.CAPTURE.REVERSED'),
array('name' => 'CHECKOUT.ORDER.COMPLETED')
)
);
$result = $paypal->createWebhook($webhook_info);
$webhook_id = '';
if (isset($result['id'])) {
$webhook_id = $result['id'];
}
if ($paypal->hasErrors()) {
$error_messages = array();
$errors = $paypal->getErrors();
foreach ($errors as $error) {
if (isset($error['name']) && ($error['name'] == 'CURLE_OPERATION_TIMEOUTED')) {
$error['message'] = $this->language->get('error_timeout');
}
if (isset($error['details'][0]['description'])) {
$error_messages[] = $error['details'][0]['description'];
} elseif (isset($error['message'])) {
$error_messages[] = $error['message'];
}
$this->model_extension_payment_paypal->log($error, $error['message']);
}
$this->error['warning'] = implode(' ', $error_messages);
}
$merchant_id = $this->request->get['merchantIdInPayPal'];
$this->load->model('setting/setting');
$setting = $this->model_setting_setting->getSetting('payment_paypal');
$setting['payment_paypal_environment'] = $environment;
$setting['payment_paypal_client_id'] = $client_id;
$setting['payment_paypal_secret'] = $secret;
$setting['payment_paypal_merchant_id'] = $merchant_id;
$setting['payment_paypal_webhook_id'] = $webhook_id;
$setting['payment_paypal_status'] = 1;
$setting['payment_paypal_total'] = 0;
$setting['payment_paypal_geo_zone_id'] = 0;
$setting['payment_paypal_sort_order'] = 0;
$this->load->model('localisation/country');
$country = $this->model_localisation_country->getCountry($this->config->get('config_country_id'));
$setting['payment_paypal_setting']['general']['country_code'] = $country['iso_code_2'];
$currency_code = $this->config->get('config_currency');
$currency_value = $this->currency->getValue($this->config->get('config_currency'));
if (!empty($config_setting['currency'][$currency_code]['status'])) {
$setting['payment_paypal_setting']['general']['currency_code'] = $currency_code;
$setting['payment_paypal_setting']['general']['currency_value'] = $currency_value;
}
if (!empty($config_setting['currency'][$currency_code]['card_status'])) {
$setting['payment_paypal_setting']['general']['card_currency_code'] = $currency_code;
$setting['payment_paypal_setting']['general']['card_currency_value'] = $currency_value;
}
$this->model_setting_setting->editSetting('payment_paypal', $setting);
unset($this->session->data['authorization_code']);
unset($this->session->data['shared_id']);
unset($this->session->data['seller_nonce']);
if (!$this->error) {
$this->response->redirect($this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
}
}
if (!$this->config->get('payment_paypal_client_id')) {
$this->auth();
} else {
$this->dashboard();
}
}
public function auth() {
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$this->document->addStyle('view/stylesheet/paypal/paypal.css');
$this->document->setTitle($this->language->get('heading_title_main'));
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extensions'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title_main'),
'href' => $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true)
);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
$data['partner_url'] = str_replace('&', '%26', $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
$data['callback_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/callback', 'user_token=' . $this->session->data['user_token'], true));
$data['agree_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/agree', 'user_token=' . $this->session->data['user_token'], true));
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$data['server'] = HTTPS_SERVER;
$data['catalog'] = HTTPS_CATALOG;
} else {
$data['server'] = HTTP_SERVER;
$data['catalog'] = HTTP_CATALOG;
}
// Setting
$_config = new Config();
$_config->load('paypal');
$data['setting'] = $_config->get('paypal_setting');
if (isset($this->session->data['environment'])) {
$data['environment'] = $this->session->data['environment'];
} else {
$data['environment'] = 'production';
}
$data['seller_nonce'] = $this->token(50);
$data['configure_url'] = array(
'production' => array(
'ppcp' => 'https://www.paypal.com/bizsignup/partner/entry?partnerId=' . $data['setting']['partner']['production']['partner_id'] . '&partnerClientId=' . $data['setting']['partner']['production']['client_id'] . '&features=PAYMENT,REFUND,ACCESS_MERCHANT_INFORMATION&product=ppcp&integrationType=FO&returnToPartnerUrl=' . $data['partner_url'] . '&displayMode=minibrowser&sellerNonce=' . $data['seller_nonce'],
'express_checkout' => 'https://www.paypal.com/bizsignup/partner/entry?partnerId=' . $data['setting']['partner']['production']['partner_id'] . '&partnerClientId=' . $data['setting']['partner']['production']['client_id'] . '&features=PAYMENT,REFUND,ACCESS_MERCHANT_INFORMATION&product=EXPRESS_CHECKOUT&integrationType=FO&returnToPartnerUrl=' . $data['partner_url'] . '&displayMode=minibrowser&sellerNonce=' . $data['seller_nonce']
),
'sandbox' => array(
'ppcp' => 'https://www.sandbox.paypal.com/bizsignup/partner/entry?partnerId=' . $data['setting']['partner']['sandbox']['partner_id'] . '&partnerClientId=' . $data['setting']['partner']['sandbox']['client_id'] . '&features=PAYMENT,REFUND,ACCESS_MERCHANT_INFORMATION&product=ppcp&integrationType=FO&returnToPartnerUrl=' . $data['partner_url'] . '&displayMode=minibrowser&sellerNonce=' . $data['seller_nonce'],
'express_checkout' => 'https://www.sandbox.paypal.com/bizsignup/partner/entry?partnerId=' . $data['setting']['partner']['sandbox']['partner_id'] . '&partnerClientId=' . $data['setting']['partner']['sandbox']['client_id'] . '&features=PAYMENT,REFUND,ACCESS_MERCHANT_INFORMATION&product=EXPRESS_CHECKOUT&integrationType=FO&returnToPartnerUrl=' . $data['partner_url'] . '&displayMode=minibrowser&sellerNonce=' . $data['seller_nonce']
)
);
$data['text_checkout_express'] = sprintf($this->language->get('text_checkout_express'), $data['configure_url'][$data['environment']]['express_checkout']);
$data['text_support'] = sprintf($this->language->get('text_support'), $this->request->server['HTTP_HOST']);
$result = $this->model_extension_payment_paypal->checkVersion(VERSION, $data['setting']['version']);
if (!empty($result['href'])) {
$data['text_version'] = sprintf($this->language->get('text_version'), $result['href']);
} else {
$data['text_version'] = '';
}
$agree_status = $this->model_extension_payment_paypal->getAgreeStatus();
if (!$agree_status) {
$this->error['warning'] = $this->language->get('error_agree');
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/payment/paypal/auth', $data));
}
public function dashboard() {
if (!$this->config->get('payment_paypal_client_id')) {
$this->response->redirect($this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
}
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$this->load->model('setting/setting');
$this->document->addStyle('view/stylesheet/paypal/paypal.css');
$this->document->addStyle('view/stylesheet/paypal/bootstrap-switch.css');
$this->document->addScript('view/javascript/paypal/bootstrap-switch.js');
$this->document->setTitle($this->language->get('heading_title_main'));
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extensions'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title_main'),
'href' => $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true)
);
$data['href_dashboard'] = $this->url->link('extension/payment/paypal/dashboard', 'user_token=' . $this->session->data['user_token'], true);
$data['href_general'] = $this->url->link('extension/payment/paypal/general', 'user_token=' . $this->session->data['user_token'], true);
$data['href_button'] = $this->url->link('extension/payment/paypal/button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_applepay_button'] = $this->url->link('extension/payment/paypal/applepay_button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_card'] = $this->url->link('extension/payment/paypal/card', 'user_token=' . $this->session->data['user_token'], true);
$data['href_message'] = $this->url->link('extension/payment/paypal/message', 'user_token=' . $this->session->data['user_token'], true);
$data['href_order_status'] = $this->url->link('extension/payment/paypal/order_status', 'user_token=' . $this->session->data['user_token'], true);
$data['href_contact'] = $this->url->link('extension/payment/paypal/contact', 'user_token=' . $this->session->data['user_token'], true);
$data['action'] = $this->url->link('extension/payment/paypal/save', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
$data['sale_analytics_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/getSaleAnalytics', 'user_token=' . $this->session->data['user_token'], true));
$data['agree_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/agree', 'user_token=' . $this->session->data['user_token'], true));
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$data['server'] = HTTPS_SERVER;
$data['catalog'] = HTTPS_CATALOG;
} else {
$data['server'] = HTTP_SERVER;
$data['catalog'] = HTTP_CATALOG;
}
// Setting
$_config = new Config();
$_config->load('paypal');
$data['setting'] = $_config->get('paypal_setting');
$data['setting'] = array_replace_recursive((array)$data['setting'], (array)$this->config->get('payment_paypal_setting'));
if ($this->config->get('payment_paypal_status') != null) {
$data['status'] = $this->config->get('payment_paypal_status');
} else {
$data['status'] = 1;
}
if ($data['setting']['button']['product']['status'] || $data['setting']['button']['cart']['status'] || $data['setting']['button']['checkout']['status']) {
$data['button_status'] = 1;
} else {
$data['button_status'] = 0;
}
if ($data['setting']['applepay_button']['status']) {
$data['applepay_button_status'] = 1;
} else {
$data['applepay_button_status'] = 0;
}
if ($data['setting']['card']['status']) {
$data['card_status'] = 1;
} else {
$data['card_status'] = 0;
}
if ($data['setting']['message']['home']['status'] || $data['setting']['message']['product']['status'] || $data['setting']['message']['cart']['status'] || $data['setting']['message']['checkout']['status']) {
$data['message_status'] = 1;
} else {
$data['message_status'] = 0;
}
$paypal_sale_total = $this->model_extension_payment_paypal->getTotalSales();
$data['paypal_sale_total'] = $this->currency->format($paypal_sale_total, $this->config->get('config_currency'));
$result = $this->model_extension_payment_paypal->checkVersion(VERSION, $data['setting']['version']);
if (!empty($result['href'])) {
$data['text_version'] = sprintf($this->language->get('text_version'), $result['href']);
} else {
$data['text_version'] = '';
}
$agree_status = $this->model_extension_payment_paypal->getAgreeStatus();
if (!$agree_status) {
$this->error['warning'] = $this->language->get('error_agree');
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/payment/paypal/dashboard', $data));
}
public function general() {
if (!$this->config->get('payment_paypal_client_id')) {
$this->response->redirect($this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
}
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$this->document->addStyle('view/stylesheet/paypal/paypal.css');
$this->document->addStyle('view/stylesheet/paypal/bootstrap-switch.css');
$this->document->addScript('view/javascript/paypal/bootstrap-switch.js');
$this->document->setTitle($this->language->get('heading_title_main'));
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extensions'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title_main'),
'href' => $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true)
);
// Action
$data['href_dashboard'] = $this->url->link('extension/payment/paypal/dashboard', 'user_token=' . $this->session->data['user_token'], true);
$data['href_general'] = $this->url->link('extension/payment/paypal/general', 'user_token=' . $this->session->data['user_token'], true);
$data['href_button'] = $this->url->link('extension/payment/paypal/button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_applepay_button'] = $this->url->link('extension/payment/paypal/applepay_button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_card'] = $this->url->link('extension/payment/paypal/card', 'user_token=' . $this->session->data['user_token'], true);
$data['href_message'] = $this->url->link('extension/payment/paypal/message', 'user_token=' . $this->session->data['user_token'], true);
$data['href_order_status'] = $this->url->link('extension/payment/paypal/order_status', 'user_token=' . $this->session->data['user_token'], true);
$data['href_contact'] = $this->url->link('extension/payment/paypal/contact', 'user_token=' . $this->session->data['user_token'], true);
$data['action'] = $this->url->link('extension/payment/paypal/save', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
$data['disconnect_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/disconnect', 'user_token=' . $this->session->data['user_token'], true));
$data['agree_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/agree', 'user_token=' . $this->session->data['user_token'], true));
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$data['server'] = HTTPS_SERVER;
$data['catalog'] = HTTPS_CATALOG;
} else {
$data['server'] = HTTP_SERVER;
$data['catalog'] = HTTP_CATALOG;
}
// Setting
$_config = new Config();
$_config->load('paypal');
$data['setting'] = $_config->get('paypal_setting');
$data['setting'] = array_replace_recursive((array)$data['setting'], (array)$this->config->get('payment_paypal_setting'));
if ($this->config->get('payment_paypal_status') != null) {
$data['status'] = $this->config->get('payment_paypal_status');
} else {
$data['status'] = 1;
}
$data['client_id'] = $this->config->get('payment_paypal_client_id');
$data['secret'] = $this->config->get('payment_paypal_secret');
$data['merchant_id'] = $this->config->get('payment_paypal_merchant_id');
$data['webhook_id'] = $this->config->get('payment_paypal_webhook_id');
$data['environment'] = $this->config->get('payment_paypal_environment');
$data['text_connect'] = sprintf($this->language->get('text_connect'), $data['client_id'], $data['secret'], $data['merchant_id'], $data['webhook_id'], $data['environment']);
$data['total'] = $this->config->get('payment_paypal_total');
$data['geo_zone_id'] = $this->config->get('payment_paypal_geo_zone_id');
$data['sort_order'] = $this->config->get('payment_paypal_sort_order');
$this->load->model('localisation/geo_zone');
$data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones();
$this->load->model('localisation/country');
$data['countries'] = $this->model_localisation_country->getCountries();
$result = $this->model_extension_payment_paypal->checkVersion(VERSION, $data['setting']['version']);
if (!empty($result['href'])) {
$data['text_version'] = sprintf($this->language->get('text_version'), $result['href']);
} else {
$data['text_version'] = '';
}
$agree_status = $this->model_extension_payment_paypal->getAgreeStatus();
if (!$agree_status) {
$this->error['warning'] = $this->language->get('error_agree');
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/payment/paypal/general', $data));
}
public function button() {
if (!$this->config->get('payment_paypal_client_id')) {
$this->response->redirect($this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
}
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$this->document->addStyle('view/stylesheet/paypal/paypal.css');
$this->document->addStyle('view/stylesheet/paypal/bootstrap-switch.css');
$this->document->addScript('view/javascript/paypal/paypal.js');
$this->document->addScript('view/javascript/paypal/bootstrap-switch.js');
$this->document->setTitle($this->language->get('heading_title_main'));
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extensions'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title_main'),
'href' => $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true)
);
// Action
$data['href_dashboard'] = $this->url->link('extension/payment/paypal/dashboard', 'user_token=' . $this->session->data['user_token'], true);
$data['href_general'] = $this->url->link('extension/payment/paypal/general', 'user_token=' . $this->session->data['user_token'], true);
$data['href_button'] = $this->url->link('extension/payment/paypal/button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_applepay_button'] = $this->url->link('extension/payment/paypal/applepay_button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_card'] = $this->url->link('extension/payment/paypal/card', 'user_token=' . $this->session->data['user_token'], true);
$data['href_message'] = $this->url->link('extension/payment/paypal/message', 'user_token=' . $this->session->data['user_token'], true);
$data['href_order_status'] = $this->url->link('extension/payment/paypal/order_status', 'user_token=' . $this->session->data['user_token'], true);
$data['href_contact'] = $this->url->link('extension/payment/paypal/contact', 'user_token=' . $this->session->data['user_token'], true);
$data['action'] = $this->url->link('extension/payment/paypal/save', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
$data['agree_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/agree', 'user_token=' . $this->session->data['user_token'], true));
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$data['server'] = HTTPS_SERVER;
$data['catalog'] = HTTPS_CATALOG;
} else {
$data['server'] = HTTP_SERVER;
$data['catalog'] = HTTP_CATALOG;
}
// Setting
$_config = new Config();
$_config->load('paypal');
$data['setting'] = $_config->get('paypal_setting');
$data['setting'] = array_replace_recursive((array)$data['setting'], (array)$this->config->get('payment_paypal_setting'));
$data['client_id'] = $this->config->get('payment_paypal_client_id');
$data['secret'] = $this->config->get('payment_paypal_secret');
$data['merchant_id'] = $this->config->get('payment_paypal_merchant_id');
$data['webhook_id'] = $this->config->get('payment_paypal_webhook_id');
$data['environment'] = $this->config->get('payment_paypal_environment');
$data['partner_attribution_id'] = $data['setting']['partner'][$data['environment']]['partner_attribution_id'];
$country = $this->model_extension_payment_paypal->getCountryByCode($data['setting']['general']['country_code']);
$data['locale'] = preg_replace('/-(.+?)+/', '', $this->config->get('config_language')) . '_' . $country['iso_code_2'];
$data['currency_code'] = $data['setting']['general']['currency_code'];
$data['currency_value'] = $data['setting']['general']['currency_value'];
$data['decimal_place'] = $data['setting']['currency'][$data['currency_code']]['decimal_place'];
if ($data['client_id'] && $data['secret']) {
require_once DIR_SYSTEM . 'library/paypal/paypal.php';
$paypal_info = array(
'client_id' => $data['client_id'],
'secret' => $data['secret'],
'environment' => $data['environment'],
'partner_attribution_id' => $data['setting']['partner'][$data['environment']]['partner_attribution_id']
);
$paypal = new PayPal($paypal_info);
$token_info = array(
'grant_type' => 'client_credentials'
);
$paypal->setAccessToken($token_info);
$data['client_token'] = $paypal->getClientToken();
if ($paypal->hasErrors()) {
$error_messages = array();
$errors = $paypal->getErrors();
foreach ($errors as $error) {
if (isset($error['name']) && ($error['name'] == 'CURLE_OPERATION_TIMEOUTED')) {
$error['message'] = $this->language->get('error_timeout');
}
if (isset($error['details'][0]['description'])) {
$error_messages[] = $error['details'][0]['description'];
} elseif (isset($error['message'])) {
$error_messages[] = $error['message'];
}
$this->model_extension_payment_paypal->log($error, $error['message']);
}
$this->error['warning'] = implode(' ', $error_messages);
}
}
$result = $this->model_extension_payment_paypal->checkVersion(VERSION, $data['setting']['version']);
if (!empty($result['href'])) {
$data['text_version'] = sprintf($this->language->get('text_version'), $result['href']);
} else {
$data['text_version'] = '';
}
$agree_status = $this->model_extension_payment_paypal->getAgreeStatus();
if (!$agree_status) {
$this->error['warning'] = $this->language->get('error_agree');
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/payment/paypal/button', $data));
}
public function applepay_button() {
if (!$this->config->get('payment_paypal_client_id')) {
$this->response->redirect($this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
}
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$this->document->addStyle('view/stylesheet/paypal/paypal.css');
$this->document->addStyle('view/stylesheet/paypal/bootstrap-switch.css');
$this->document->addScript('view/javascript/paypal/paypal.js');
$this->document->addScript('view/javascript/paypal/bootstrap-switch.js');
$this->document->addScript('https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js');
$this->document->setTitle($this->language->get('heading_title_main'));
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extensions'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title_main'),
'href' => $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true)
);
// Action
$data['href_dashboard'] = $this->url->link('extension/payment/paypal/dashboard', 'user_token=' . $this->session->data['user_token'], true);
$data['href_general'] = $this->url->link('extension/payment/paypal/general', 'user_token=' . $this->session->data['user_token'], true);
$data['href_button'] = $this->url->link('extension/payment/paypal/button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_applepay_button'] = $this->url->link('extension/payment/paypal/applepay_button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_card'] = $this->url->link('extension/payment/paypal/card', 'user_token=' . $this->session->data['user_token'], true);
$data['href_message'] = $this->url->link('extension/payment/paypal/message', 'user_token=' . $this->session->data['user_token'], true);
$data['href_order_status'] = $this->url->link('extension/payment/paypal/order_status', 'user_token=' . $this->session->data['user_token'], true);
$data['href_contact'] = $this->url->link('extension/payment/paypal/contact', 'user_token=' . $this->session->data['user_token'], true);
$data['action'] = $this->url->link('extension/payment/paypal/save', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
$data['applepay_download_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/downloadAssociationFile', 'user_token=' . $this->session->data['user_token'], true));
$data['applepay_download_host_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/downloadHostAssociationFile', 'user_token=' . $this->session->data['user_token'], true));
$data['agree_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/agree', 'user_token=' . $this->session->data['user_token'], true));
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$data['server'] = HTTPS_SERVER;
$data['catalog'] = HTTPS_CATALOG;
} else {
$data['server'] = HTTP_SERVER;
$data['catalog'] = HTTP_CATALOG;
}
// Setting
$_config = new Config();
$_config->load('paypal');
$data['setting'] = $_config->get('paypal_setting');
$data['setting'] = array_replace_recursive((array)$data['setting'], (array)$this->config->get('payment_paypal_setting'));
$data['client_id'] = $this->config->get('payment_paypal_client_id');
$data['secret'] = $this->config->get('payment_paypal_secret');
$data['merchant_id'] = $this->config->get('payment_paypal_merchant_id');
$data['webhook_id'] = $this->config->get('payment_paypal_webhook_id');
$data['environment'] = $this->config->get('payment_paypal_environment');
$data['partner_attribution_id'] = $data['setting']['partner'][$data['environment']]['partner_attribution_id'];
$country = $this->model_extension_payment_paypal->getCountryByCode($data['setting']['general']['country_code']);
$data['locale'] = preg_replace('/-(.+?)+/', '', $this->config->get('config_language')) . '_' . $country['iso_code_2'];
$data['currency_code'] = $data['setting']['general']['currency_code'];
$data['currency_value'] = $data['setting']['general']['currency_value'];
$data['decimal_place'] = $data['setting']['currency'][$data['currency_code']]['decimal_place'];
if ($data['client_id'] && $data['secret']) {
require_once DIR_SYSTEM . 'library/paypal/paypal.php';
$paypal_info = array(
'client_id' => $data['client_id'],
'secret' => $data['secret'],
'environment' => $data['environment'],
'partner_attribution_id' => $data['setting']['partner'][$data['environment']]['partner_attribution_id']
);
$paypal = new PayPal($paypal_info);
$token_info = array(
'grant_type' => 'client_credentials'
);
$paypal->setAccessToken($token_info);
$data['client_token'] = $paypal->getClientToken();
if ($paypal->hasErrors()) {
$error_messages = array();
$errors = $paypal->getErrors();
foreach ($errors as $error) {
if (isset($error['name']) && ($error['name'] == 'CURLE_OPERATION_TIMEOUTED')) {
$error['message'] = $this->language->get('error_timeout');
}
if (isset($error['details'][0]['description'])) {
$error_messages[] = $error['details'][0]['description'];
} elseif (isset($error['message'])) {
$error_messages[] = $error['message'];
}
$this->model_extension_payment_paypal->log($error, $error['message']);
}
$this->error['warning'] = implode(' ', $error_messages);
}
}
$result = $this->model_extension_payment_paypal->checkVersion(VERSION, $data['setting']['version']);
if (!empty($result['href'])) {
$data['text_version'] = sprintf($this->language->get('text_version'), $result['href']);
} else {
$data['text_version'] = '';
}
$agree_status = $this->model_extension_payment_paypal->getAgreeStatus();
if (!$agree_status) {
$this->error['warning'] = $this->language->get('error_agree');
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/payment/paypal/applepay_button', $data));
}
public function card() {
if (!$this->config->get('payment_paypal_client_id')) {
$this->response->redirect($this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
}
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$this->document->addStyle('view/stylesheet/paypal/paypal.css');
$this->document->addStyle('view/stylesheet/paypal/card.css');
$this->document->addStyle('view/stylesheet/paypal/bootstrap-switch.css');
$this->document->addScript('view/javascript/paypal/paypal.js');
$this->document->addScript('view/javascript/paypal/bootstrap-switch.js');
$this->document->setTitle($this->language->get('heading_title_main'));
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extensions'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title_main'),
'href' => $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true)
);
// Action
$data['href_dashboard'] = $this->url->link('extension/payment/paypal/dashboard', 'user_token=' . $this->session->data['user_token'], true);
$data['href_general'] = $this->url->link('extension/payment/paypal/general', 'user_token=' . $this->session->data['user_token'], true);
$data['href_button'] = $this->url->link('extension/payment/paypal/button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_applepay_button'] = $this->url->link('extension/payment/paypal/applepay_button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_card'] = $this->url->link('extension/payment/paypal/card', 'user_token=' . $this->session->data['user_token'], true);
$data['href_message'] = $this->url->link('extension/payment/paypal/message', 'user_token=' . $this->session->data['user_token'], true);
$data['href_order_status'] = $this->url->link('extension/payment/paypal/order_status', 'user_token=' . $this->session->data['user_token'], true);
$data['href_contact'] = $this->url->link('extension/payment/paypal/contact', 'user_token=' . $this->session->data['user_token'], true);
$data['action'] = $this->url->link('extension/payment/paypal/save', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
$data['agree_url'] = str_replace('&', '&', $this->url->link('extension/payment/paypal/agree', 'user_token=' . $this->session->data['user_token'], true));
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$data['server'] = HTTPS_SERVER;
$data['catalog'] = HTTPS_CATALOG;
} else {
$data['server'] = HTTP_SERVER;
$data['catalog'] = HTTP_CATALOG;
}
// Setting
$_config = new Config();
$_config->load('paypal');
$data['setting'] = $_config->get('paypal_setting');
$data['setting'] = array_replace_recursive((array)$data['setting'], (array)$this->config->get('payment_paypal_setting'));
$data['client_id'] = $this->config->get('payment_paypal_client_id');
$data['secret'] = $this->config->get('payment_paypal_secret');
$data['merchant_id'] = $this->config->get('payment_paypal_merchant_id');
$data['webhook_id'] = $this->config->get('payment_paypal_webhook_id');
$data['environment'] = $this->config->get('payment_paypal_environment');
$data['partner_attribution_id'] = $data['setting']['partner'][$data['environment']]['partner_attribution_id'];
$country = $this->model_extension_payment_paypal->getCountryByCode($data['setting']['general']['country_code']);
$data['locale'] = preg_replace('/-(.+?)+/', '', $this->config->get('config_language')) . '_' . $country['iso_code_2'];
$data['currency_code'] = $data['setting']['general']['currency_code'];
$data['currency_value'] = $data['setting']['general']['currency_value'];
$data['decimal_place'] = $data['setting']['currency'][$data['currency_code']]['decimal_place'];
if ($data['client_id'] && $data['secret']) {
require_once DIR_SYSTEM . 'library/paypal/paypal.php';
$paypal_info = array(
'client_id' => $data['client_id'],
'secret' => $data['secret'],
'environment' => $data['environment'],
'partner_attribution_id' => $data['setting']['partner'][$data['environment']]['partner_attribution_id']
);
$paypal = new PayPal($paypal_info);
$token_info = array(
'grant_type' => 'client_credentials'
);
$paypal->setAccessToken($token_info);
$data['client_token'] = $paypal->getClientToken();
if ($paypal->hasErrors()) {
$error_messages = array();
$errors = $paypal->getErrors();
foreach ($errors as $error) {
if (isset($error['name']) && ($error['name'] == 'CURLE_OPERATION_TIMEOUTED')) {
$error['message'] = $this->language->get('error_timeout');
}
if (isset($error['details'][0]['description'])) {
$error_messages[] = $error['details'][0]['description'];
} elseif (isset($error['message'])) {
$error_messages[] = $error['message'];
}
$this->model_extension_payment_paypal->log($error, $error['message']);
}
$this->error['warning'] = implode(' ', $error_messages);
}
}
$result = $this->model_extension_payment_paypal->checkVersion(VERSION, $data['setting']['version']);
if (!empty($result['href'])) {
$data['text_version'] = sprintf($this->language->get('text_version'), $result['href']);
} else {
$data['text_version'] = '';
}
$agree_status = $this->model_extension_payment_paypal->getAgreeStatus();
if (!$agree_status) {
$this->error['warning'] = $this->language->get('error_agree');
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/payment/paypal/card', $data));
}
public function message() {
if (!$this->config->get('payment_paypal_client_id')) {
$this->response->redirect($this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true));
}
$this->load->language('extension/payment/paypal');
$this->load->model('extension/payment/paypal');
$this->document->addStyle('view/stylesheet/paypal/paypal.css');
$this->document->addStyle('view/stylesheet/paypal/bootstrap-switch.css');
$this->document->addScript('view/javascript/paypal/paypal.js');
$this->document->addScript('view/javascript/paypal/bootstrap-switch.js');
$this->document->setTitle($this->language->get('heading_title_main'));
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extensions'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title_main'),
'href' => $this->url->link('extension/payment/paypal', 'user_token=' . $this->session->data['user_token'], true)
);
// Action
$data['href_dashboard'] = $this->url->link('extension/payment/paypal/dashboard', 'user_token=' . $this->session->data['user_token'], true);
$data['href_general'] = $this->url->link('extension/payment/paypal/general', 'user_token=' . $this->session->data['user_token'], true);
$data['href_button'] = $this->url->link('extension/payment/paypal/button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_applepay_button'] = $this->url->link('extension/payment/paypal/applepay_button', 'user_token=' . $this->session->data['user_token'], true);
$data['href_card'] = $this->url->link('extension/payment/paypal/card', 'user_token=' . $this->session->data['user_token'], true);
$data['href_message'] = $this->url->link('extension/payment/paypal/message', 'user_token=' . $this->session->data['user_token'], true);
$data['href_order_status'] = $this->url->link('extension/payment/paypal/order_status', 'user_token=' . $this->session->data['user_token'], true);
$data['href_contact'] = $this->url->link('extension/payment/paypal/contact', 'user_token=' . $this->session->data['user_token'], true);