Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Apache
: 10.120.20.2 | : 216.73.216.49
Cant Read [ /etc/named.conf ]
8.5.7
verseaumee
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
home /
verseaumee /
123click /
assets /
[ HOME SHELL ]
Name
Size
Permission
Action
css
[ DIR ]
drwx---r-x
fonts
[ DIR ]
drwx---r-x
images
[ DIR ]
drwx---r-x
js
[ DIR ]
drwx---r-x
.bash_logout.bash_logout.tar.g...
126
B
-rw-r--r--
.bash_logout.tar
2
KB
-rw-r--r--
.bash_profile.bash_profile.tar...
273
B
-rw-r--r--
.bash_profile.tar
2
KB
-rw-r--r--
.bashrc.bashrc.tar.gz
190
B
-rw-r--r--
.bashrc.tar
2
KB
-rw-r--r--
.ftpquota.ftpquota.tar.gz
135
B
-rw-r--r--
.ftpquota.tar
2
KB
-rw-r--r--
.hta.hta.tar.gz
3.15
KB
-rw-r--r--
.hta.tar
6
KB
-rw-r--r--
.htaccess.bak.htaccess.bak.tar...
428
B
-rw-r--r--
.htaccess.bak.tar
2.5
KB
-rw-r--r--
.htaccess.htaccess.tar.gz
194
B
-rw-r--r--
.htaccess.tar
41.5
KB
-rw-r--r--
.htaccess_10125.htaccess_10125...
1.93
KB
-rw-r--r--
.htaccess_10125.tar
6
KB
-rw-r--r--
.htaccess_2608.htaccess_2608.t...
1.83
KB
-rw-r--r--
.htaccess_2608.tar
5.5
KB
-rw-r--r--
.htaccess_old.htaccess_old.tar...
1.71
KB
-rw-r--r--
.htaccess_old.tar
9.5
KB
-rw-r--r--
.htaccess_old2.htaccess_old2.t...
1.81
KB
-rw-r--r--
.htaccess_old2.tar
5.5
KB
-rw-r--r--
.htaccessx.htaccessx.tar.gz
479
B
-rw-r--r--
.htaccessx.tar
2.5
KB
-rw-r--r--
.htaccessxx.htaccessxx.tar.gz
427
B
-rw-r--r--
.htaccessxx.tar
2.5
KB
-rw-r--r--
.mad-root
0
B
-rw-r--r--
.ovhconfig.ovhconfig.tar.gz
188
B
-rw-r--r--
.ovhconfig.tar
2
KB
-rw-r--r--
.tmb.tar
221
KB
-rw-r--r--
.tmb.tar.gz
41.33
KB
-rw-r--r--
.tmb.zip
201.6
KB
-rw-r--r--
.user.ini.tar
3
KB
-rw-r--r--
.user.ini.user.ini.tar.gz
220
B
-rw-r--r--
.well-known.tar
158.5
KB
-rw-r--r--
.well-known.tar.gz
69.8
KB
-rw-r--r--
.well-known.zip
152.89
KB
-rw-r--r--
----index.html.html.tar.gz
8.28
KB
-rw-r--r--
----index.html.tar
40
KB
-rw-r--r--
01.jpg.jpg.tar.gz
2.27
KB
-rw-r--r--
01.jpg.tar
4
KB
-rw-r--r--
10pourcent.zip
212.54
MB
-rw-r--r--
404.html.html.tar.gz
1.19
KB
-rw-r--r--
404.html.tar
5
KB
-rw-r--r--
888index.php.php.tar.gz
8.52
KB
-rw-r--r--
888index.php.tar
42.5
KB
-rw-r--r--
ANE_MOULIN.jpg.jpg.tar.gz
12.53
KB
-rw-r--r--
ANE_MOULIN.jpg.tar
14
KB
-rw-r--r--
Association.zip
6.54
KB
-rw-r--r--
CALES.jpg.jpg.tar.gz
13.84
KB
-rw-r--r--
CALES.jpg.tar
15.5
KB
-rw-r--r--
CONDITIONS.pdf.pdf.tar.gz
592.22
KB
-rw-r--r--
CONDITIONS.pdf.tar
753.5
KB
-rw-r--r--
Cache.zip
39.59
KB
-rw-r--r--
Demo.tar
17.37
MB
-rw-r--r--
Demo.tar.gz
16.59
MB
-rw-r--r--
Demo.zip
17.31
MB
-rw-r--r--
Diff.php.php.tar.gz
3.15
KB
-rw-r--r--
Diff.php.tar
14.5
KB
-rw-r--r--
Downloads.tar
868.5
KB
-rw-r--r--
Downloads.tar.gz
790.18
KB
-rw-r--r--
Downloads.zip
865.8
KB
-rw-r--r--
Filter.zip
41.03
KB
-rw-r--r--
FontAwesome.otf.otf.tar.gz
108.08
KB
-rw-r--r--
FontAwesome.otf.tar
133.5
KB
-rw-r--r--
HTTP.tar
13
KB
-rw-r--r--
HTTP.tar.gz
3.32
KB
-rw-r--r--
ID3.tar
1.12
MB
-rw-r--r--
ID3.tar.gz
233.46
KB
-rw-r--r--
ID3.zip
1.1
MB
-rw-r--r--
IXR.tar
43
KB
-rw-r--r--
IXR.tar.gz
7.69
KB
-rw-r--r--
IXR.zip
34.92
KB
-rw-r--r--
JEANJEAN.jpg.jpg.tar.gz
14.03
KB
-rw-r--r--
JEANJEAN.jpg.tar
15.5
KB
-rw-r--r--
LA.png.png.tar.gz
3.38
KB
-rw-r--r--
LA.png.tar
5
KB
-rw-r--r--
LICENSE.txt.tar
93.5
KB
-rw-r--r--
LICENSE.txt.txt.tar.gz
6.78
KB
-rw-r--r--
LOGO A LA MAZE ON 17 NOVEMBRE ...
1.36
MB
-rw-r--r--
LOGO A LA MAZE ON 17 NOVEMBRE ...
1.41
MB
-rw-r--r--
LOGO ARCEP 2.jpg.jpg.tar.gz
399.9
KB
-rw-r--r--
LOGO ARCEP 2.jpg.tar
1.38
MB
-rw-r--r--
LOGO ARCEP 2.psd.psd.tar.gz
3.66
MB
-rw-r--r--
LOGO ARCEP 2.psd.tar
9.75
MB
-rw-r--r--
Log.tar
45
KB
-rw-r--r--
Log.tar.gz
8.58
KB
-rw-r--r--
Log.zip
37.62
KB
-rw-r--r--
Net.tar
9
KB
-rw-r--r--
Net.tar.gz
2.68
KB
-rw-r--r--
PHPMailer.tar
227.5
KB
-rw-r--r--
PHPMailer.tar.gz
47.75
KB
-rw-r--r--
PHPMailer.zip
223.7
KB
-rw-r--r--
PTITE_FERME.png.png.tar.gz
70.39
KB
-rw-r--r--
PTITE_FERME.png.tar
73.5
KB
-rw-r--r--
PayPal.PNG.PNG.tar.gz
18.47
KB
-rw-r--r--
PayPal.PNG.tar
24
KB
-rw-r--r--
README.txt.tar
34
KB
-rw-r--r--
README.txt.txt.tar.gz
1.83
KB
-rw-r--r--
Requests.tar
427
KB
-rw-r--r--
Requests.tar.gz
30.97
KB
-rw-r--r--
Requests.zip
220.53
KB
-rw-r--r--
SimplePie.tar
474
KB
-rw-r--r--
SimplePie.tar.gz
77.41
KB
-rw-r--r--
SimplePie.zip
456.69
KB
-rw-r--r--
TF89388.tar
958.4
MB
-rw-r--r--
TF89388.tar.gz
20
B
-rw-r--r--
Tate-tuker-web.jpg.jpg.tar.gz
97.22
KB
-rw-r--r--
Tate-tuker-web.jpg.tar
101
KB
-rw-r--r--
Text.tar
63.5
KB
-rw-r--r--
Text.tar.gz
12.67
KB
-rw-r--r--
Text.zip
57.09
KB
-rw-r--r--
UA.png.png.tar.gz
3.24
KB
-rw-r--r--
UA.png.tar
5
KB
-rw-r--r--
XML.zip
7.11
KB
-rw-r--r--
_contact.html.html.tar.gz
4.61
KB
-rw-r--r--
_contact.html.tar
17.5
KB
-rw-r--r--
_index.html.html.tar.gz
8.52
KB
-rw-r--r--
_index.html.tar
40.5
KB
-rw-r--r--
ab1.jpg.jpg.tar.gz
19.2
KB
-rw-r--r--
ab1.jpg.tar
21
KB
-rw-r--r--
ab2.jpg.jpg.tar.gz
19.28
KB
-rw-r--r--
ab2.jpg.tar
21
KB
-rw-r--r--
about-blog.jpg.jpg.tar.gz
61
KB
-rw-r--r--
about-blog.jpg.tar
65.5
KB
-rw-r--r--
about-us.jpg.jpg.tar.gz
27.54
KB
-rw-r--r--
about-us.jpg.tar
31
KB
-rw-r--r--
about.html.html.tar.gz
3.86
KB
-rw-r--r--
about.html.tar
38.5
KB
-rw-r--r--
about.php.php.tar.gz
5.35
KB
-rw-r--r--
about.php.tar
80
KB
-rw-r--r--
actionlog.tar
40
KB
-rw-r--r--
actionlog.tar.gz
4.46
KB
-rw-r--r--
actionlog.zip
36.47
KB
-rw-r--r--
actionlogs.tar
18.5
KB
-rw-r--r--
actionlogs.tar.gz
1.25
KB
-rw-r--r--
actionlogs.zip
2.82
KB
-rw-r--r--
acymailing.tar
338.5
KB
-rw-r--r--
acymailing.tar.gz
48.94
KB
-rw-r--r--
acymailing.zip
308.85
KB
-rw-r--r--
admin-ajax.php.php.tar.gz
1.89
KB
-rw-r--r--
admin-ajax.php.tar
7
KB
-rw-r--r--
admin-bar.php.php.tar.gz
8.22
KB
-rw-r--r--
admin-bar.php.tar
38
KB
-rw-r--r--
admin-footer.php.php.tar.gz
1.14
KB
-rw-r--r--
admin-footer.php.tar
4.5
KB
-rw-r--r--
admin-functions.php.php.tar.gz
333
B
-rw-r--r--
admin-functions.php.tar
3
KB
-rw-r--r--
admin-get.php.php.tar.gz
980
B
-rw-r--r--
admin-get.php.tar
3.5
KB
-rw-r--r--
admin-header.php.php.tar.gz
2.97
KB
-rw-r--r--
admin-header.php.tar
30
KB
-rw-r--r--
admin-post.php.php.tar.gz
847
B
-rw-r--r--
admin-post.php.tar
4
KB
-rw-r--r--
admin.php.php.tar.gz
3.79
KB
-rw-r--r--
admin.php.tar
27
KB
-rw-r--r--
adminer.php
0
B
-rw-r--r--
administrator.tar
83.32
MB
-rw-r--r--
administrator.tar.gz
4.57
MB
-rw-r--r--
administrator.zip
41.74
MB
-rw-r--r--
afrikavio.jpg.jpg.tar.gz
300.69
KB
-rw-r--r--
afrikavio.jpg.tar
323.5
KB
-rw-r--r--
ai1wm-backups.tar
717.78
MB
-rw-r--r--
ai1wm-backups.tar.gz
20
B
-rw-r--r--
akismet.tar
258
KB
-rw-r--r--
akismet.tar.gz
67.37
KB
-rw-r--r--
akismet.zip
240.29
KB
-rw-r--r--
all.js.js.tar.gz
818
B
-rw-r--r--
all.js.tar
3.5
KB
-rw-r--r--
android-chrome-192x192.png.png...
5.04
KB
-rw-r--r--
android-chrome-192x192.png.tar
7
KB
-rw-r--r--
android-chrome-512x512.png.png...
18.64
KB
-rw-r--r--
android-chrome-512x512.png.tar
23.5
KB
-rw-r--r--
android-icon-144x144.png.png.t...
14.3
KB
-rw-r--r--
android-icon-144x144.png.tar
16
KB
-rw-r--r--
android-icon-192x192.png.png.t...
19.65
KB
-rw-r--r--
android-icon-192x192.png.tar
21.5
KB
-rw-r--r--
android-icon-36x36.png.png.tar...
2.67
KB
-rw-r--r--
android-icon-36x36.png.tar
4.5
KB
-rw-r--r--
android-icon-48x48.png.png.tar...
3.76
KB
-rw-r--r--
android-icon-48x48.png.tar
5.5
KB
-rw-r--r--
android-icon-72x72.png.png.tar...
5.93
KB
-rw-r--r--
android-icon-72x72.png.tar
7.5
KB
-rw-r--r--
android-icon-96x96.png.png.tar...
8.36
KB
-rw-r--r--
android-icon-96x96.png.tar
10
KB
-rw-r--r--
android.png.png.tar.gz
2.47
KB
-rw-r--r--
android.png.tar
4
KB
-rw-r--r--
angular-icon.svg.svg.tar.gz
559
B
-rw-r--r--
angular-icon.svg.tar
2.5
KB
-rw-r--r--
angular.png.png.tar.gz
10.65
KB
-rw-r--r--
angular.png.tar
13
KB
-rw-r--r--
api.tar
383.5
KB
-rw-r--r--
api.tar.gz
77.41
KB
-rw-r--r--
api.zip
345.17
KB
-rw-r--r--
app.js.js.tar.gz
501
B
-rw-r--r--
app.js.tar
2.5
KB
-rw-r--r--
app.php.php.tar.gz
1.05
KB
-rw-r--r--
app.php.tar
4
KB
-rw-r--r--
app.tar
199
KB
-rw-r--r--
app.tar.gz
34.34
KB
-rw-r--r--
app.zip
171.56
KB
-rw-r--r--
apple-icon-114x114.png.png.tar...
10.47
KB
-rw-r--r--
apple-icon-114x114.png.tar
12
KB
-rw-r--r--
apple-icon-144x144.png.png.tar...
14.3
KB
-rw-r--r--
apple-icon-144x144.png.tar
16
KB
-rw-r--r--
apple-icon-152x152.png.png.tar...
15.31
KB
-rw-r--r--
apple-icon-152x152.png.tar
17
KB
-rw-r--r--
apple-icon-180x180.png.png.tar...
19.25
KB
-rw-r--r--
apple-icon-180x180.png.tar
21
KB
-rw-r--r--
apple-icon-57x57.png.png.tar.g...
4.53
KB
-rw-r--r--
apple-icon-57x57.png.tar
6
KB
-rw-r--r--
apple-icon-60x60.png.png.tar.g...
4.77
KB
-rw-r--r--
apple-icon-60x60.png.tar
6.5
KB
-rw-r--r--
apple-icon-76x76.png.png.tar.g...
6.29
KB
-rw-r--r--
apple-icon-76x76.png.tar
8
KB
-rw-r--r--
apple-icon-precomposed.png.png...
20.06
KB
-rw-r--r--
apple-icon-precomposed.png.tar
22
KB
-rw-r--r--
apple-touch-icon.png.png.tar.g...
3.99
KB
-rw-r--r--
apple-touch-icon.png.tar
11
KB
-rw-r--r--
apple.png.png.tar.gz
3.5
KB
-rw-r--r--
apple.png.tar
5.5
KB
-rw-r--r--
apps.tar
266
KB
-rw-r--r--
apps.tar.gz
223.94
KB
-rw-r--r--
apps.zip
251.66
KB
-rw-r--r--
archives.tar
11
KB
-rw-r--r--
archives.tar.gz
826
B
-rw-r--r--
archives.zip
2.92
KB
-rw-r--r--
assets.tar
151.49
MB
-rw-r--r--
assets.tar.gz
101.02
MB
-rw-r--r--
assets.zip
88.82
MB
-rw-r--r--
async-upload.php.php.tar.gz
1.96
KB
-rw-r--r--
async-upload.php.tar
12
KB
-rw-r--r--
atomlib.php.php.tar.gz
3.27
KB
-rw-r--r--
atomlib.php.tar
13.5
KB
-rw-r--r--
attachments.tar
2
KB
-rw-r--r--
attachments.tar.gz
124
B
-rw-r--r--
audio.tar
707.5
KB
-rw-r--r--
audio.tar.gz
674.05
KB
-rw-r--r--
authentication.tar
51
KB
-rw-r--r--
authentication.tar.gz
8.78
KB
-rw-r--r--
authentication.zip
40.29
KB
-rw-r--r--
authorize-application.php.php....
3.16
KB
-rw-r--r--
authorize-application.php.tar
12
KB
-rw-r--r--
avatar.zip
3.48
KB
-rw-r--r--
banners.tar
35
KB
-rw-r--r--
banners.tar.gz
29.58
KB
-rw-r--r--
banners.zip
31.48
KB
-rw-r--r--
beez3.tar
630.5
KB
-rw-r--r--
beez3.tar.gz
264.69
KB
-rw-r--r--
beez3.zip
535.04
KB
-rw-r--r--
bg-testinomial.jpg.jpg.tar.gz
461.34
KB
-rw-r--r--
bg-testinomial.jpg.tar
927
KB
-rw-r--r--
bg.jpg.jpg.tar.gz
110.06
KB
-rw-r--r--
bg.jpg.tar
112
KB
-rw-r--r--
bg1.jpg.jpg.tar.gz
150.09
KB
-rw-r--r--
bg1.jpg.tar
152
KB
-rw-r--r--
bg2.jpg.jpg.tar.gz
124.53
KB
-rw-r--r--
bg2.jpg.tar
127.5
KB
-rw-r--r--
bg3.jpg.jpg.tar.gz
669.84
KB
-rw-r--r--
bg3.jpg.tar
711
KB
-rw-r--r--
bg4.jpg.jpg.tar.gz
139.9
KB
-rw-r--r--
bg4.jpg.tar
142
KB
-rw-r--r--
bg5.jpg.jpg.tar.gz
192.52
KB
-rw-r--r--
bg5.jpg.tar
194.5
KB
-rw-r--r--
bighearts-child.tar
1.38
MB
-rw-r--r--
bighearts-child.tar.gz
1.37
MB
-rw-r--r--
bighearts-child.zip
1.37
MB
-rw-r--r--
bighearts.zip
34.41
MB
-rw-r--r--
bin.tar
107.5
KB
-rw-r--r--
bin.tar.gz
27.21
KB
-rw-r--r--
bin.zip
100.81
KB
-rw-r--r--
bizone.tar
4.88
MB
-rw-r--r--
bizone.tar.gz
1.62
MB
-rw-r--r--
bizone.zip
4.8
MB
-rw-r--r--
block-bindings.php.php.tar.gz
1.74
KB
-rw-r--r--
block-bindings.php.tar
7
KB
-rw-r--r--
block-bindings.tar
6
KB
-rw-r--r--
block-bindings.tar.gz
1.1
KB
-rw-r--r--
block-bindings.zip
3.83
KB
-rw-r--r--
block-editor.php.php.tar.gz
6.39
KB
-rw-r--r--
block-editor.php.tar
29.5
KB
-rw-r--r--
block-i18n.json.json.tar.gz
257
B
-rw-r--r--
block-i18n.json.tar
3
KB
-rw-r--r--
block-patterns.php.php.tar.gz
3.16
KB
-rw-r--r--
block-patterns.php.tar
14.5
KB
-rw-r--r--
block-patterns.tar
39.5
KB
-rw-r--r--
block-patterns.tar.gz
3.96
KB
-rw-r--r--
block-patterns.zip
28.32
KB
-rw-r--r--
block-supports.tar
145
KB
-rw-r--r--
block-supports.tar.gz
26.36
KB
-rw-r--r--
block-supports.zip
131.98
KB
-rw-r--r--
block-template-utils.php.php.t...
11.88
KB
-rw-r--r--
block-template-utils.php.tar
57
KB
-rw-r--r--
block-template.php.php.tar.gz
4.16
KB
-rw-r--r--
block-template.php.tar
14
KB
-rw-r--r--
blocks.php.php.tar.gz
4
KB
-rw-r--r--
blocks.php.tar
113
KB
-rw-r--r--
blocks.tar
1.96
MB
-rw-r--r--
blocks.tar.gz
235.75
KB
-rw-r--r--
blocks.zip
1.54
MB
-rw-r--r--
blog.html.html.tar.gz
2.52
KB
-rw-r--r--
blog.html.tar
13.5
KB
-rw-r--r--
blog.tar
5.77
MB
-rw-r--r--
blog.tar.gz
4.87
MB
-rw-r--r--
blog.zip
5.71
MB
-rw-r--r--
blueversiontg.tar
89.5
KB
-rw-r--r--
blueversiontg.tar.gz
26.37
KB
-rw-r--r--
blueversiontg.zip
85.9
KB
-rw-r--r--
bookmark-template.php.php.tar....
3.3
KB
-rw-r--r--
bookmark-template.php.tar
14.5
KB
-rw-r--r--
bookmark.php.php.tar.gz
4.24
KB
-rw-r--r--
bookmark.php.tar
17
KB
-rw-r--r--
bootstrap.min.js.min.js.tar.gz
15.19
KB
-rw-r--r--
bootstrap.min.js.tar
58.5
KB
-rw-r--r--
bootstrap.tar
535
KB
-rw-r--r--
bootstrap.tar.gz
90.49
KB
-rw-r--r--
bootstrap.zip
530.83
KB
-rw-r--r--
browserconfig.xml.tar
2
KB
-rw-r--r--
browserconfig.xml.xml.tar.gz
264
B
-rw-r--r--
button.zip
15.31
KB
-rw-r--r--
buttons.tar
19
KB
-rw-r--r--
buttons.tar.gz
1.45
KB
-rw-r--r--
bv_connector_a3384bc41af663dc2...
5.65
KB
-rw-r--r--
bv_connector_a3384bc41af663dc2...
20.5
KB
-rw-r--r--
c1.jpg.jpg.tar.gz
19.79
KB
-rw-r--r--
c1.jpg.tar
21.5
KB
-rw-r--r--
c2.jpg.jpg.tar.gz
18.15
KB
-rw-r--r--
c2.jpg.tar
20
KB
-rw-r--r--
c3.jpg.jpg.tar.gz
3.26
KB
-rw-r--r--
c3.jpg.tar
5
KB
-rw-r--r--
cache-compat.php.php.tar.gz
1.43
KB
-rw-r--r--
cache-compat.php.tar
7.5
KB
-rw-r--r--
cache.php.php.tar.gz
2.6
KB
-rw-r--r--
cache.php.tar
15
KB
-rw-r--r--
cache.tar
84
KB
-rw-r--r--
cache.tar.gz
24.89
KB
-rw-r--r--
cache.zip
11.15
MB
-rw-r--r--
calendar.zip
4.4
KB
-rw-r--r--
call-to-action-bg-2.jpg.jpg.ta...
68.28
KB
-rw-r--r--
call-to-action-bg-2.jpg.tar
88
KB
-rw-r--r--
call-to-action-bg-20.jpg.jpg.t...
150.06
KB
-rw-r--r--
call-to-action-bg-20.jpg.tar
169.5
KB
-rw-r--r--
call-to-action-bg-222.jpg.jpg....
855.71
KB
-rw-r--r--
call-to-action-bg-222.jpg.tar
873
KB
-rw-r--r--
call-to-action-bg.jpg.jpg.tar....
14.97
KB
-rw-r--r--
call-to-action-bg.jpg.tar
23.5
KB
-rw-r--r--
call-to-action.tar
1.57
MB
-rw-r--r--
call-to-action.tar.gz
1.51
MB
-rw-r--r--
capabilities.php.php.tar.gz
7.1
KB
-rw-r--r--
capabilities.php.tar
83.5
KB
-rw-r--r--
captcha.tar
26
KB
-rw-r--r--
captcha.tar.gz
5.67
KB
-rw-r--r--
captcha.zip
17.58
KB
-rw-r--r--
carapattes.jpg.jpg.tar.gz
184.61
KB
-rw-r--r--
carapattes.jpg.tar
200.5
KB
-rw-r--r--
carousel.less.less.tar.gz
985
B
-rw-r--r--
carousel.less.tar
10
KB
-rw-r--r--
category-template.php.php.tar....
13
KB
-rw-r--r--
category-template.php.tar
57.5
KB
-rw-r--r--
category.php.php.tar.gz
3.54
KB
-rw-r--r--
category.php.tar
41.5
KB
-rw-r--r--
certificates.tar
229.5
KB
-rw-r--r--
certificates.tar.gz
127.51
KB
-rw-r--r--
certificates.zip
227.92
KB
-rw-r--r--
certs.tar
83
KB
-rw-r--r--
certs.tar.gz
24.92
KB
-rw-r--r--
certs.zip
80.85
KB
-rw-r--r--
checkbex.php.php.tar.gz
10.37
KB
-rw-r--r--
checkbex.php.tar
145
KB
-rw-r--r--
class-IXR.php.php.tar.gz
1.19
KB
-rw-r--r--
class-IXR.php.tar
7.5
KB
-rw-r--r--
class-avif-info.php.php.tar.gz
6
KB
-rw-r--r--
class-avif-info.php.tar
30.5
KB
-rw-r--r--
class-feed.php.php.tar.gz
364
B
-rw-r--r--
class-feed.php.tar
5.5
KB
-rw-r--r--
class-http.php.php.tar.gz
341
B
-rw-r--r--
class-http.php.tar
4
KB
-rw-r--r--
class-json.php.php.tar.gz
8.54
KB
-rw-r--r--
class-json.php.tar
44.5
KB
-rw-r--r--
class-oembed.php.php.tar.gz
354
B
-rw-r--r--
class-oembed.php.tar
5
KB
-rw-r--r--
class-phpass.php.php.tar.gz
2.52
KB
-rw-r--r--
class-phpass.php.tar
16
KB
-rw-r--r--
class-phpmailer.php.php.tar.gz
394
B
-rw-r--r--
class-phpmailer.php.tar
4
KB
-rw-r--r--
class-pop3.php.php.tar.gz
4.79
KB
-rw-r--r--
class-pop3.php.tar
64.5
KB
-rw-r--r--
class-requests.php.php.tar.gz
954
B
-rw-r--r--
class-requests.php.tar
10
KB
-rw-r--r--
class-simplepie.php.php.tar.gz
20.46
KB
-rw-r--r--
class-simplepie.php.tar
388
KB
-rw-r--r--
class-smtp.php.php.tar.gz
341
B
-rw-r--r--
class-smtp.php.tar
4
KB
-rw-r--r--
class-snoopy.php.php.tar.gz
7.95
KB
-rw-r--r--
class-snoopy.php.tar
113.5
KB
-rw-r--r--
class-walker-category-dropdown...
1.16
KB
-rw-r--r--
class-walker-category-dropdown...
13
KB
-rw-r--r--
class-walker-category.php.php....
2.45
KB
-rw-r--r--
class-walker-category.php.tar
19
KB
-rw-r--r--
class-walker-comment.php.php.t...
3.27
KB
-rw-r--r--
class-walker-comment.php.tar
15.5
KB
-rw-r--r--
class-walker-nav-menu.php.php....
2.25
KB
-rw-r--r--
class-walker-nav-menu.php.tar
47.5
KB
-rw-r--r--
class-walker-page-dropdown.php...
1.2
KB
-rw-r--r--
class-walker-page-dropdown.php...
14.5
KB
-rw-r--r--
class-walker-page.php.php.tar....
2.11
KB
-rw-r--r--
class-walker-page.php.tar
25
KB
-rw-r--r--
class-wp-admin-bar.php.php.tar...
4.86
KB
-rw-r--r--
class-wp-admin-bar.php.tar
37
KB
-rw-r--r--
class-wp-ajax-response.php.php...
1.81
KB
-rw-r--r--
class-wp-ajax-response.php.tar
12.5
KB
-rw-r--r--
class-wp-application-passwords...
2.74
KB
-rw-r--r--
class-wp-application-passwords...
14.5
KB
-rw-r--r--
class-wp-block-bindings-regist...
2.38
KB
-rw-r--r--
class-wp-block-bindings-regist...
10.5
KB
-rw-r--r--
class-wp-block-bindings-source...
926
B
-rw-r--r--
class-wp-block-bindings-source...
4
KB
-rw-r--r--
class-wp-block-editor-context....
670
B
-rw-r--r--
class-wp-block-editor-context....
3
KB
-rw-r--r--
class-wp-block-list.php.php.ta...
1.26
KB
-rw-r--r--
class-wp-block-list.php.tar
17.5
KB
-rw-r--r--
class-wp-block-parser-block.ph...
880
B
-rw-r--r--
class-wp-block-parser-block.ph...
7
KB
-rw-r--r--
class-wp-block-parser-frame.ph...
680
B
-rw-r--r--
class-wp-block-parser-frame.ph...
6
KB
-rw-r--r--
class-wp-block-parser.php.php....
4.08
KB
-rw-r--r--
class-wp-block-parser.php.tar
52.5
KB
-rw-r--r--
class-wp-block-pattern-categor...
1.4
KB
-rw-r--r--
class-wp-block-pattern-categor...
13
KB
-rw-r--r--
class-wp-block-patterns-regist...
2.9
KB
-rw-r--r--
class-wp-block-patterns-regist...
13
KB
-rw-r--r--
class-wp-block-styles-registry...
1.59
KB
-rw-r--r--
class-wp-block-styles-registry...
21.5
KB
-rw-r--r--
class-wp-block-supports.php.ph...
1.7
KB
-rw-r--r--
class-wp-block-supports.php.ta...
19
KB
-rw-r--r--
class-wp-block-template.php.ph...
693
B
-rw-r--r--
class-wp-block-template.php.ta...
3.5
KB
-rw-r--r--
class-wp-block-type-registry.p...
1.41
KB
-rw-r--r--
class-wp-block-type-registry.p...
17.5
KB
-rw-r--r--
class-wp-block-type.php.php.ta...
3.95
KB
-rw-r--r--
class-wp-block-type.php.tar
36
KB
-rw-r--r--
class-wp-block.php.php.tar.gz
2.14
KB
-rw-r--r--
class-wp-block.php.tar
61
KB
-rw-r--r--
class-wp-classic-to-block-menu...
1.37
KB
-rw-r--r--
class-wp-classic-to-block-menu...
10
KB
-rw-r--r--
class-wp-comment-query.php.php...
10.21
KB
-rw-r--r--
class-wp-comment-query.php.tar
49
KB
-rw-r--r--
class-wp-comment.php.php.tar.g...
2.59
KB
-rw-r--r--
class-wp-comment.php.tar
31
KB
-rw-r--r--
class-wp-customize-control.php...
5.7
KB
-rw-r--r--
class-wp-customize-control.php...
27
KB
-rw-r--r--
class-wp-customize-manager.php...
44.55
KB
-rw-r--r--
class-wp-customize-manager.php...
199.5
KB
-rw-r--r--
class-wp-customize-nav-menu-se...
4.98
KB
-rw-r--r--
class-wp-customize-nav-menu-se...
20
KB
-rw-r--r--
class-wp-customize-panel.php.p...
3.12
KB
-rw-r--r--
class-wp-customize-panel.php.t...
23
KB
-rw-r--r--
class-wp-customize-section.php...
3.25
KB
-rw-r--r--
class-wp-customize-section.php...
12.5
KB
-rw-r--r--
class-wp-customize-setting.php...
6.58
KB
-rw-r--r--
class-wp-customize-setting.php...
31
KB
-rw-r--r--
class-wp-customize-widgets.php...
15.96
KB
-rw-r--r--
class-wp-customize-widgets.php...
277.5
KB
-rw-r--r--
class-wp-date-query.php.php.ta...
8.43
KB
-rw-r--r--
class-wp-date-query.php.tar
36.5
KB
-rw-r--r--
class-wp-dependencies.php.php....
3.37
KB
-rw-r--r--
class-wp-dependencies.php.tar
15.5
KB
-rw-r--r--
class-wp-dependency.php.php.ta...
1.01
KB
-rw-r--r--
class-wp-dependency.php.tar
4.5
KB
-rw-r--r--
class-wp-duotone.php.php.tar.g...
9.24
KB
-rw-r--r--
class-wp-duotone.php.tar
41.5
KB
-rw-r--r--
class-wp-editor.php.php.tar.gz
16.58
KB
-rw-r--r--
class-wp-editor.php.tar
285.5
KB
-rw-r--r--
class-wp-embed.php.php.tar.gz
4.77
KB
-rw-r--r--
class-wp-embed.php.tar
50.5
KB
-rw-r--r--
class-wp-error.php.php.tar.gz
1.93
KB
-rw-r--r--
class-wp-error.php.tar
9
KB
-rw-r--r--
class-wp-fatal-error-handler.p...
2.76
KB
-rw-r--r--
class-wp-fatal-error-handler.p...
9.5
KB
-rw-r--r--
class-wp-feed-cache-transient....
918
B
-rw-r--r--
class-wp-feed-cache-transient....
7.5
KB
-rw-r--r--
class-wp-feed-cache.php.php.ta...
631
B
-rw-r--r--
class-wp-feed-cache.php.tar
4
KB
-rw-r--r--
class-wp-hook.php.php.tar.gz
3.43
KB
-rw-r--r--
class-wp-hook.php.tar
48.5
KB
-rw-r--r--
class-wp-http-cookie.php.php.t...
2.55
KB
-rw-r--r--
class-wp-http-cookie.php.tar
9
KB
-rw-r--r--
class-wp-http-curl.php.php.tar...
3.68
KB
-rw-r--r--
class-wp-http-curl.php.tar
40
KB
-rw-r--r--
class-wp-http-encoding.php.php...
2.21
KB
-rw-r--r--
class-wp-http-encoding.php.tar
8.5
KB
-rw-r--r--
class-wp-http-ixr-client.php.p...
1.45
KB
-rw-r--r--
class-wp-http-ixr-client.php.t...
13
KB
-rw-r--r--
class-wp-http-netfilter.php.ph...
321
B
-rw-r--r--
class-wp-http-netfilter.php.ta...
2
KB
-rw-r--r--
class-wp-http-proxy.php.php.ta...
2.02
KB
-rw-r--r--
class-wp-http-proxy.php.tar
20.5
KB
-rw-r--r--
class-wp-http-requests-respons...
1.35
KB
-rw-r--r--
class-wp-http-requests-respons...
6
KB
-rw-r--r--
class-wp-http-response.php.php...
1.04
KB
-rw-r--r--
class-wp-http-response.php.tar
4.5
KB
-rw-r--r--
class-wp-http-streams.php.php....
4.62
KB
-rw-r--r--
class-wp-http-streams.php.tar
120
KB
-rw-r--r--
class-wp-http.php.php.tar.gz
11.09
KB
-rw-r--r--
class-wp-http.php.tar
123.5
KB
-rw-r--r--
class-wp-image-editor-gd.php.p...
3.94
KB
-rw-r--r--
class-wp-image-editor-gd.php.t...
16
KB
-rw-r--r--
class-wp-image-editor.php.php....
4.85
KB
-rw-r--r--
class-wp-image-editor.php.tar
19
KB
-rw-r--r--
class-wp-list-util.php.php.tar...
1.96
KB
-rw-r--r--
class-wp-list-util.php.tar
32
KB
-rw-r--r--
class-wp-locale-switcher.php.p...
1.87
KB
-rw-r--r--
class-wp-locale-switcher.php.t...
15.5
KB
-rw-r--r--
class-wp-locale.php.php.tar.gz
3.36
KB
-rw-r--r--
class-wp-locale.php.tar
67.5
KB
-rw-r--r--
class-wp-matchesmapregex.php.p...
818
B
-rw-r--r--
class-wp-matchesmapregex.php.t...
8.5
KB
-rw-r--r--
class-wp-meta-query.php.php.ta...
7.19
KB
-rw-r--r--
class-wp-meta-query.php.tar
170.5
KB
-rw-r--r--
class-wp-metadata-lazyloader.p...
1.75
KB
-rw-r--r--
class-wp-metadata-lazyloader.p...
32.5
KB
-rw-r--r--
class-wp-navigation-fallback.p...
2.33
KB
-rw-r--r--
class-wp-navigation-fallback.p...
20
KB
-rw-r--r--
class-wp-network-query.php.php...
4.88
KB
-rw-r--r--
class-wp-network-query.php.tar
39.5
KB
-rw-r--r--
class-wp-network.php.php.tar.g...
3.78
KB
-rw-r--r--
class-wp-network.php.tar
39
KB
-rw-r--r--
class-wp-object-cache.php.php....
3.76
KB
-rw-r--r--
class-wp-object-cache.php.tar
79
KB
-rw-r--r--
class-wp-oembed-controller.php...
2.19
KB
-rw-r--r--
class-wp-oembed-controller.php...
8.5
KB
-rw-r--r--
class-wp-oembed.php.php.tar.gz
7.33
KB
-rw-r--r--
class-wp-oembed.php.tar
185.5
KB
-rw-r--r--
class-wp-paused-extensions-sto...
1.33
KB
-rw-r--r--
class-wp-paused-extensions-sto...
6.5
KB
-rw-r--r--
class-wp-phpmailer.php.php.tar...
1.23
KB
-rw-r--r--
class-wp-phpmailer.php.tar
5.5
KB
-rw-r--r--
class-wp-plugin-dependencies.p...
5.1
KB
-rw-r--r--
class-wp-plugin-dependencies.p...
26.5
KB
-rw-r--r--
class-wp-post-type.php.php.tar...
6.61
KB
-rw-r--r--
class-wp-post-type.php.tar
31.5
KB
-rw-r--r--
class-wp-post.php.php.tar.gz
1.76
KB
-rw-r--r--
class-wp-post.php.tar
29
KB
-rw-r--r--
class-wp-query.php.php.tar.gz
29.76
KB
-rw-r--r--
class-wp-query.php.tar
734.5
KB
-rw-r--r--
class-wp-recovery-mode-email-s...
3.41
KB
-rw-r--r--
class-wp-recovery-mode-email-s...
34.5
KB
-rw-r--r--
class-wp-recovery-mode-key-ser...
1.38
KB
-rw-r--r--
class-wp-recovery-mode-key-ser...
6
KB
-rw-r--r--
class-wp-recovery-mode-link-se...
1.23
KB
-rw-r--r--
class-wp-recovery-mode-link-se...
5
KB
-rw-r--r--
class-wp-recovery-mode.php.php...
3.2
KB
-rw-r--r--
class-wp-recovery-mode.php.tar
13
KB
-rw-r--r--
class-wp-rewrite.php.php.tar.g...
14.56
KB
-rw-r--r--
class-wp-rewrite.php.tar
63.5
KB
-rw-r--r--
class-wp-role.php.php.tar.gz
868
B
-rw-r--r--
class-wp-role.php.tar
10
KB
-rw-r--r--
class-wp-roles.php.php.tar.gz
2.38
KB
-rw-r--r--
class-wp-roles.php.tar
28
KB
-rw-r--r--
class-wp-script-modules.php.ph...
3.02
KB
-rw-r--r--
class-wp-script-modules.php.ta...
35
KB
-rw-r--r--
class-wp-scripts.php.php.tar.g...
6.52
KB
-rw-r--r--
class-wp-scripts.php.tar
57.5
KB
-rw-r--r--
class-wp-session-tokens.php.ph...
1.95
KB
-rw-r--r--
class-wp-session-tokens.php.ta...
33
KB
-rw-r--r--
class-wp-simplepie-file.php.ph...
1.45
KB
-rw-r--r--
class-wp-simplepie-file.php.ta...
9
KB
-rw-r--r--
class-wp-simplepie-sanitize-ks...
964
B
-rw-r--r--
class-wp-simplepie-sanitize-ks...
6
KB
-rw-r--r--
class-wp-site-query.php.php.ta...
6.63
KB
-rw-r--r--
class-wp-site-query.php.tar
64
KB
-rw-r--r--
class-wp-site.php.php.tar.gz
2.12
KB
-rw-r--r--
class-wp-site.php.tar
33
KB
-rw-r--r--
class-wp-styles.php.php.tar.gz
3.06
KB
-rw-r--r--
class-wp-styles.php.tar
35.5
KB
-rw-r--r--
class-wp-tax-query.php.php.tar...
5.11
KB
-rw-r--r--
class-wp-tax-query.php.tar
60.5
KB
-rw-r--r--
class-wp-taxonomy.php.php.tar....
4.47
KB
-rw-r--r--
class-wp-taxonomy.php.tar
20
KB
-rw-r--r--
class-wp-term-query.php.php.ta...
8.14
KB
-rw-r--r--
class-wp-term-query.php.tar
71
KB
-rw-r--r--
class-wp-term.php.php.tar.gz
1.86
KB
-rw-r--r--
class-wp-term.php.tar
13
KB
-rw-r--r--
class-wp-text-diff-renderer-in...
611
B
-rw-r--r--
class-wp-text-diff-renderer-in...
2.5
KB
-rw-r--r--
class-wp-text-diff-renderer-ta...
4.78
KB
-rw-r--r--
class-wp-text-diff-renderer-ta...
37
KB
-rw-r--r--
class-wp-textdomain-registry.p...
2.92
KB
-rw-r--r--
class-wp-textdomain-registry.p...
22.5
KB
-rw-r--r--
class-wp-theme-json.php.php.ta...
13.41
KB
-rw-r--r--
class-wp-theme-json.php.tar
63
KB
-rw-r--r--
class-wp-theme.php.php.tar.gz
14.06
KB
-rw-r--r--
class-wp-theme.php.tar
65.5
KB
-rw-r--r--
class-wp-token-map.php.php.tar...
7.84
KB
-rw-r--r--
class-wp-token-map.php.tar
58
KB
-rw-r--r--
class-wp-user-meta-session-tok...
999
B
-rw-r--r--
class-wp-user-meta-session-tok...
22
KB
-rw-r--r--
class-wp-user-query.php.php.ta...
9.26
KB
-rw-r--r--
class-wp-user-query.php.tar
44.5
KB
-rw-r--r--
class-wp-user-request.php.php....
726
B
-rw-r--r--
class-wp-user-request.php.tar
13
KB
-rw-r--r--
class-wp-user.php.php.tar.gz
5.65
KB
-rw-r--r--
class-wp-user.php.tar
47
KB
-rw-r--r--
class-wp-walker.php.php.tar.gz
3.15
KB
-rw-r--r--
class-wp-walker.php.tar
42.5
KB
-rw-r--r--
class-wp-widget-factory.php.ph...
1.09
KB
-rw-r--r--
class-wp-widget-factory.php.ta...
5
KB
-rw-r--r--
class-wp-widget.php.php.tar.gz
4.41
KB
-rw-r--r--
class-wp-widget.php.tar
56.5
KB
-rw-r--r--
class-wp-xmlrpc-server.php.php...
34.01
KB
-rw-r--r--
class-wp-xmlrpc-server.php.tar
420
KB
-rw-r--r--
class-wp.php.php.tar.gz
7.18
KB
-rw-r--r--
class-wp.php.tar
131.5
KB
-rw-r--r--
class-wpdb.php.php.tar.gz
28.19
KB
-rw-r--r--
class-wpdb.php.tar
468
KB
-rw-r--r--
class.wp-dependencies.php.tar
2
KB
-rw-r--r--
class.wp-dependencies.php.wp-d...
321
B
-rw-r--r--
class.wp-scripts.php.tar
3
KB
-rw-r--r--
class.wp-scripts.php.wp-script...
318
B
-rw-r--r--
class.wp-styles.php.tar
4
KB
-rw-r--r--
class.wp-styles.php.wp-styles....
318
B
-rw-r--r--
cli.tar
133.5
KB
-rw-r--r--
cli.tar.gz
26.04
KB
-rw-r--r--
cli.zip
124.09
KB
-rw-r--r--
client-logo.tar
91
KB
-rw-r--r--
client-logo.tar.gz
49.92
KB
-rw-r--r--
client-logo.zip
84.41
KB
-rw-r--r--
clients.zip
28.76
KB
-rw-r--r--
clipboard.min.js.min.js.tar.gz
3.19
KB
-rw-r--r--
clipboard.min.js.tar
10.5
KB
-rw-r--r--
cms.tar
276.5
KB
-rw-r--r--
cms.tar.gz
1.01
KB
-rw-r--r--
cms.zip
3.35
KB
-rw-r--r--
code.tar
15
KB
-rw-r--r--
code.tar.gz
1.08
KB
-rw-r--r--
colors.tar
661.5
KB
-rw-r--r--
colors.tar.gz
56.18
KB
-rw-r--r--
com_acymailing.tar
1.73
MB
-rw-r--r--
com_acymailing.tar.gz
85.93
KB
-rw-r--r--
com_acymailing.zip
1.56
MB
-rw-r--r--
com_ajax.tar
8
KB
-rw-r--r--
com_ajax.tar.gz
2.12
KB
-rw-r--r--
com_ajax.zip
6.41
KB
-rw-r--r--
com_akeeba.tar
222.5
KB
-rw-r--r--
com_akeeba.tar.gz
0
B
-rw-r--r--
com_akeeba.zip
172.83
KB
-rw-r--r--
com_associations.tar
85.5
KB
-rw-r--r--
com_associations.tar.gz
18.65
KB
-rw-r--r--
com_associations.zip
68.85
KB
-rw-r--r--
com_banners.tar
24.5
KB
-rw-r--r--
com_banners.tar.gz
4.86
KB
-rw-r--r--
com_banners.zip
19.06
KB
-rw-r--r--
com_blue_pagebuilder.tar
33.5
KB
-rw-r--r--
com_blue_pagebuilder.tar.gz
5.23
KB
-rw-r--r--
com_blue_pagebuilder.zip
19.04
KB
-rw-r--r--
com_categories.tar
15
KB
-rw-r--r--
com_categories.tar.gz
3.24
KB
-rw-r--r--
com_config.tar
114.5
KB
-rw-r--r--
com_config.tar.gz
16.39
KB
-rw-r--r--
com_config.zip
89.48
KB
-rw-r--r--
com_contact.tar
523.5
KB
-rw-r--r--
com_contact.tar.gz
40.36
KB
-rw-r--r--
com_contact.zip
466.35
KB
-rw-r--r--
com_content.tar
365
KB
-rw-r--r--
com_content.tar.gz
59.99
KB
-rw-r--r--
com_content.zip
334.19
KB
-rw-r--r--
com_contenthistory.tar
3.5
KB
-rw-r--r--
com_contenthistory.tar.gz
603
B
-rw-r--r--
com_contenthistory.zip
839
B
-rw-r--r--
com_falang.tar
28
KB
-rw-r--r--
com_falang.tar.gz
6.08
KB
-rw-r--r--
com_fields.tar
12
KB
-rw-r--r--
com_fields.tar.gz
2.45
KB
-rw-r--r--
com_fields.zip
7.84
KB
-rw-r--r--
com_finder.tar
109
KB
-rw-r--r--
com_finder.tar.gz
20.25
KB
-rw-r--r--
com_finder.zip
121.6
KB
-rw-r--r--
com_gantry5.tar
14.5
KB
-rw-r--r--
com_gantry5.tar.gz
3.09
KB
-rw-r--r--
com_gantry5.zip
10.35
KB
-rw-r--r--
com_icagenda.tar
1.56
MB
-rw-r--r--
com_icagenda.tar.gz
252.83
KB
-rw-r--r--
com_icagenda.zip
1.4
MB
-rw-r--r--
com_jce.tar
4.82
MB
-rw-r--r--
com_jce.tar.gz
1.2
MB
-rw-r--r--
com_jce.zip
4.39
MB
-rw-r--r--
com_k2.tar
650
KB
-rw-r--r--
com_k2.tar.gz
115.57
KB
-rw-r--r--
com_k2.zip
587.73
KB
-rw-r--r--
com_login.zip
11.37
KB
-rw-r--r--
com_mailto.tar
23.5
KB
-rw-r--r--
com_mailto.tar.gz
4.42
KB
-rw-r--r--
com_mailto.zip
15.79
KB
-rw-r--r--
com_media.tar
2.5
KB
-rw-r--r--
com_media.tar.gz
484
B
-rw-r--r--
com_media.zip
776
B
-rw-r--r--
com_menus.tar
14
KB
-rw-r--r--
com_menus.tar.gz
1.34
KB
-rw-r--r--
com_menus.zip
10.05
KB
-rw-r--r--
com_messages.tar
80.5
KB
-rw-r--r--
com_messages.tar.gz
13.21
KB
-rw-r--r--
com_modules.tar
12.5
KB
-rw-r--r--
com_modules.tar.gz
1.75
KB
-rw-r--r--
com_modules.zip
8.49
KB
-rw-r--r--
com_newsfeeds.tar
98.5
KB
-rw-r--r--
com_newsfeeds.tar.gz
16.45
KB
-rw-r--r--
com_newsfeeds.zip
83.79
KB
-rw-r--r--
com_privacy.tar
109.5
KB
-rw-r--r--
com_privacy.tar.gz
7.42
KB
-rw-r--r--
com_privacy.zip
87.26
KB
-rw-r--r--
com_search.tar
38
KB
-rw-r--r--
com_search.tar.gz
8.07
KB
-rw-r--r--
com_search.zip
31.14
KB
-rw-r--r--
com_solidres.tar
1.65
MB
-rw-r--r--
com_solidres.tar.gz
264.5
KB
-rw-r--r--
com_solidres.zip
1.59
MB
-rw-r--r--
com_tags.tar
107.5
KB
-rw-r--r--
com_tags.tar.gz
16.49
KB
-rw-r--r--
com_tags.zip
90.96
KB
-rw-r--r--
com_templates.tar
69.5
KB
-rw-r--r--
com_templates.tar.gz
12.41
KB
-rw-r--r--
com_templates.zip
51.97
KB
-rw-r--r--
com_uniterevolution2.tar
1.08
MB
-rw-r--r--
com_uniterevolution2.tar.gz
425.96
KB
-rw-r--r--
com_uniterevolution2.zip
1.4
KB
-rw-r--r--
com_users.tar
201.5
KB
-rw-r--r--
com_users.tar.gz
27.25
KB
-rw-r--r--
com_users.zip
167.94
KB
-rw-r--r--
com_virtuemart_allinone.tar
35.5
KB
-rw-r--r--
com_virtuemart_allinone.tar.gz
8.84
KB
-rw-r--r--
com_wrapper.tar
21
KB
-rw-r--r--
com_wrapper.tar.gz
391
B
-rw-r--r--
com_wrapper.zip
13.73
KB
-rw-r--r--
coming_soon.zip
5.16
MB
-rw-r--r--
comment-reply-link.tar
2.5
KB
-rw-r--r--
comment-reply-link.tar.gz
515
B
-rw-r--r--
comment-template.php.php.tar.g...
8.54
KB
-rw-r--r--
comment-template.php.tar
239.5
KB
-rw-r--r--
comment.php.php.tar.gz
27.88
KB
-rw-r--r--
comment.php.tar
389.5
KB
-rw-r--r--
compat.php.php.tar.gz
4.28
KB
-rw-r--r--
compat.php.tar
34.5
KB
-rw-r--r--
components.html.html.tar.gz
3.12
KB
-rw-r--r--
components.html.tar
14.5
KB
-rw-r--r--
components.tar
52.99
MB
-rw-r--r--
components.tar.gz
3.27
MB
-rw-r--r--
components.zip
51.21
MB
-rw-r--r--
composer.json.json.tar.gz
168
B
-rw-r--r--
composer.json.tar
2
KB
-rw-r--r--
composer.lock.lock.tar.gz
1.38
KB
-rw-r--r--
composer.lock.tar
5.5
KB
-rw-r--r--
conditions.docx.docx.tar.gz
40.58
KB
-rw-r--r--
conditions.docx.tar
48.5
KB
-rw-r--r--
configuration.php.php.tar.gz
1.17
KB
-rw-r--r--
configuration.php.tar
28.5
KB
-rw-r--r--
configuration_old.php.php.tar....
1.18
KB
-rw-r--r--
configuration_old.php.tar
5
KB
-rw-r--r--
configuration_old2.php.php.tar...
1.25
KB
-rw-r--r--
configuration_old2.php.tar
5.5
KB
-rw-r--r--
configuration_old33.php.php.ta...
1.27
KB
-rw-r--r--
configuration_old33.php.tar
5.5
KB
-rw-r--r--
construction-prev-arrow.png.pn...
3.88
KB
-rw-r--r--
construction-prev-arrow.png.ta...
5.5
KB
-rw-r--r--
contact-sec.jpg.jpg.tar.gz
66.15
KB
-rw-r--r--
contact-sec.jpg.tar
67.5
KB
-rw-r--r--
contact.html.html.tar.gz
3.29
KB
-rw-r--r--
contact.html.tar
37
KB
-rw-r--r--
contact.php.php.tar.gz
5.84
KB
-rw-r--r--
contact.php.tar
28
KB
-rw-r--r--
contact.tar
4.5
KB
-rw-r--r--
contact.tar.gz
1.28
KB
-rw-r--r--
contactFR.html.html.tar.gz
3.18
KB
-rw-r--r--
contactFR.html.tar
12.5
KB
-rw-r--r--
contactform-fr.php.php.tar.gz
505
B
-rw-r--r--
contactform-fr.php.tar
2.5
KB
-rw-r--r--
contactfr.html.html.tar.gz
3.21
KB
-rw-r--r--
contactfr.html.tar
13
KB
-rw-r--r--
contacts.tar
5.34
MB
-rw-r--r--
contacts.tar.gz
2.1
MB
-rw-r--r--
contacts.zip
5.29
MB
-rw-r--r--
contacts_1.json.json.tar.gz
9.95
KB
-rw-r--r--
contacts_1.json.tar
63
KB
-rw-r--r--
content.tar
57
KB
-rw-r--r--
content.tar.gz
6.4
KB
-rw-r--r--
controller.php.php.tar.gz
897
B
-rw-r--r--
controller.php.tar
3
KB
-rw-r--r--
core.tar
1.05
MB
-rw-r--r--
core.tar.gz
197.59
KB
-rw-r--r--
core.zip
955.12
KB
-rw-r--r--
counterup.tar
30.5
KB
-rw-r--r--
counterup.tar.gz
7.66
KB
-rw-r--r--
counterup.zip
26.86
KB
-rw-r--r--
cover.tar
89.5
KB
-rw-r--r--
cover.tar.gz
5.54
KB
-rw-r--r--
cover.zip
82.63
KB
-rw-r--r--
credits.php.php.tar.gz
1.25
KB
-rw-r--r--
credits.php.tar
10
KB
-rw-r--r--
cron.php.php.tar.gz
162
B
-rw-r--r--
cron.php.tar
118
KB
-rw-r--r--
crystal.tar
24
KB
-rw-r--r--
crystal.tar.gz
15.15
KB
-rw-r--r--
css.png.png.tar.gz
2.8
KB
-rw-r--r--
css.png.tar
4.5
KB
-rw-r--r--
css.tar
11.84
MB
-rw-r--r--
css.tar.gz
44.02
KB
-rw-r--r--
css.zip
11.76
MB
-rw-r--r--
css1.tar
186.5
KB
-rw-r--r--
css1.tar.gz
41.71
KB
-rw-r--r--
css1.zip
183.94
KB
-rw-r--r--
css3.png.png.tar.gz
7.46
KB
-rw-r--r--
css3.png.tar
9.5
KB
-rw-r--r--
custom-background.php.php.tar....
376
B
-rw-r--r--
custom-background.php.tar
3
KB
-rw-r--r--
custom-header.php.php.tar.gz
10.61
KB
-rw-r--r--
custom-header.php.tar
48
KB
-rw-r--r--
customize-nav-menus.min.css.mi...
3.46
KB
-rw-r--r--
customize-nav-menus.min.css.ta...
19.5
KB
-rw-r--r--
customize.php.php.tar.gz
3.68
KB
-rw-r--r--
customize.php.tar
35.5
KB
-rw-r--r--
customize.tar
197.5
KB
-rw-r--r--
customize.tar.gz
38.7
KB
-rw-r--r--
customize.zip
173.55
KB
-rw-r--r--
d82fd3.tar
15.5
KB
-rw-r--r--
d82fd3.tar.gz
3.86
KB
-rw-r--r--
d82fd3.zip
13.78
KB
-rw-r--r--
dashboard.js.js.tar.gz
8.4
KB
-rw-r--r--
dashboard.js.tar
28.5
KB
-rw-r--r--
dashboard.min.js.min.js.tar.gz
3.11
KB
-rw-r--r--
dashboard.min.js.tar
10.5
KB
-rw-r--r--
dashicons.eot.eot.tar.gz
31.91
KB
-rw-r--r--
dashicons.eot.tar
57
KB
-rw-r--r--
dashicons.ttf.tar
57
KB
-rw-r--r--
dashicons.ttf.ttf.tar.gz
31.84
KB
-rw-r--r--
data.tar
230.5
KB
-rw-r--r--
data.tar.gz
11.82
KB
-rw-r--r--
data.zip
217.5
KB
-rw-r--r--
database.json.json.tar.gz
654
B
-rw-r--r--
database.json.tar
7
KB
-rw-r--r--
date.php.php.tar.gz
356
B
-rw-r--r--
date.php.tar
4
KB
-rw-r--r--
de-DE.tar
415.5
KB
-rw-r--r--
de-DE.tar.gz
92.58
KB
-rw-r--r--
default-constants.php.php.tar....
2.82
KB
-rw-r--r--
default-constants.php.tar
55.5
KB
-rw-r--r--
default-filters.php.php.tar.gz
7.89
KB
-rw-r--r--
default-filters.php.tar
223
KB
-rw-r--r--
default-widgets.php.php.tar.gz
508
B
-rw-r--r--
default-widgets.php.tar
16
KB
-rw-r--r--
default.php.php.tar.gz
1.45
KB
-rw-r--r--
default.php.tar
9
KB
-rw-r--r--
default.png.png.tar.gz
616
B
-rw-r--r--
default.png.tar
3
KB
-rw-r--r--
default1.jpg.jpg.tar.gz
322.01
KB
-rw-r--r--
default1.jpg.tar
335
KB
-rw-r--r--
defaults.php.php.tar.gz
826
B
-rw-r--r--
defaults.php.tar
3
KB
-rw-r--r--
deprecated.php.php.tar.gz
39.99
KB
-rw-r--r--
deprecated.php.tar
183.5
KB
-rw-r--r--
details.zip
3.22
KB
-rw-r--r--
devices.png.png.tar.gz
1.93
KB
-rw-r--r--
devices.png.tar
3.5
KB
-rw-r--r--
devices_2.png.png.tar.gz
1.89
KB
-rw-r--r--
devices_2.png.tar
3.5
KB
-rw-r--r--
dff24.jpg.jpg.tar.gz
302.87
KB
-rw-r--r--
dff24.jpg.tar
322
KB
-rw-r--r--
digital.tar
25.36
MB
-rw-r--r--
digital.tar.gz
0
B
-rw-r--r--
digital.zip
25.31
MB
-rw-r--r--
dimensions.php.php.tar.gz
1.72
KB
-rw-r--r--
dimensions.php.tar
13
KB
-rw-r--r--
dist.tar
23.44
MB
-rw-r--r--
dist.tar.gz
938.9
KB
-rw-r--r--
dist.zip
5.6
MB
-rw-r--r--
divider.png.png.tar.gz
5.7
KB
-rw-r--r--
divider.png.tar
8
KB
-rw-r--r--
document.html.html.tar.gz
1.79
KB
-rw-r--r--
document.html.tar
6
KB
-rw-r--r--
domicile.jpg.jpg.tar.gz
13.32
KB
-rw-r--r--
domicile.jpg.tar
24
KB
-rw-r--r--
dompdf.tar
21.82
MB
-rw-r--r--
dompdf.tar.gz
9.51
MB
-rw-r--r--
drupal.png.png.tar.gz
10.02
KB
-rw-r--r--
drupal.png.tar
12
KB
-rw-r--r--
duplicate-post.zip
344.54
KB
-rw-r--r--
edit-form-advanced.php.php.tar...
8.69
KB
-rw-r--r--
edit-form-advanced.php.tar
60
KB
-rw-r--r--
edit-form-blocks.php.php.tar.g...
5.15
KB
-rw-r--r--
edit-form-blocks.php.tar
29
KB
-rw-r--r--
edit-form-comment.php.php.tar....
2.71
KB
-rw-r--r--
edit-form-comment.php.tar
10
KB
-rw-r--r--
edit-link-form.php.php.tar.gz
2.17
KB
-rw-r--r--
edit-link-form.php.tar
29
KB
-rw-r--r--
edit-tag-form.php.php.tar.gz
2.86
KB
-rw-r--r--
edit-tag-form.php.tar
23
KB
-rw-r--r--
edit-tags.php.php.tar.gz
5.84
KB
-rw-r--r--
edit-tags.php.tar
23.5
KB
-rw-r--r--
edit.php.php.tar.gz
5.55
KB
-rw-r--r--
edit.php.tar
21
KB
-rw-r--r--
editors-xtd.tar
31.5
KB
-rw-r--r--
editors-xtd.tar.gz
3.47
KB
-rw-r--r--
editors-xtd.zip
21.58
KB
-rw-r--r--
editors.zip
114.5
KB
-rw-r--r--
elementor-pro.tar
14.63
MB
-rw-r--r--
elementor-pro.tar.gz
2.24
MB
-rw-r--r--
elementor-pro.zip
14.26
MB
-rw-r--r--
elementor.tar
45.46
MB
-rw-r--r--
elementor.tar.gz
7.96
MB
-rw-r--r--
elementor.zip
57.4
MB
-rw-r--r--
elementorx.tar
38.7
MB
-rw-r--r--
elementorx.tar.gz
9.19
MB
-rw-r--r--
elementorx.zip
38.1
MB
-rw-r--r--
elements.tar
9.02
MB
-rw-r--r--
elements.tar.gz
8.57
MB
-rw-r--r--
elements.zip
8.98
MB
-rw-r--r--
eleve2.jpg.jpg.tar.gz
633.68
KB
-rw-r--r--
eleve2.jpg.tar
650.5
KB
-rw-r--r--
embed-template.php.php.tar.gz
326
B
-rw-r--r--
embed-template.php.tar
2
KB
-rw-r--r--
embed.php.php.tar.gz
9.94
KB
-rw-r--r--
embed.php.tar
39
KB
-rw-r--r--
emglobal.tar
167.75
MB
-rw-r--r--
emglobal.tar.gz
90.82
MB
-rw-r--r--
eminvest.tar
89.48
MB
-rw-r--r--
eminvest.tar.gz
25.19
KB
-rw-r--r--
eminvest.zip
81.62
KB
-rw-r--r--
en-GB.tar
902
KB
-rw-r--r--
en-GB.tar.gz
120.63
KB
-rw-r--r--
en-GB.zip
795.95
KB
-rw-r--r--
erase-personal-data.php.php.ta...
2.78
KB
-rw-r--r--
erase-personal-data.php.tar
9
KB
-rw-r--r--
error-protection.php.php.tar.g...
1.48
KB
-rw-r--r--
error-protection.php.tar
6
KB
-rw-r--r--
exceptions.tar
6
KB
-rw-r--r--
exceptions.tar.gz
790
B
-rw-r--r--
export.php.php.tar.gz
3.19
KB
-rw-r--r--
export.php.tar
25
KB
-rw-r--r--
extension.tar
186.5
KB
-rw-r--r--
extension.tar.gz
4.19
KB
-rw-r--r--
extension.zip
168.25
KB
-rw-r--r--
f0f.tar
2.09
MB
-rw-r--r--
f0f.tar.gz
490.91
KB
-rw-r--r--
f0f.zip
1.98
MB
-rw-r--r--
fail.php.php.tar.gz
213
B
-rw-r--r--
fail.php.tar
2
KB
-rw-r--r--
favicon-16x16.png.png.tar.gz
1.44
KB
-rw-r--r--
favicon-16x16.png.tar
3.5
KB
-rw-r--r--
favicon-32x32.png.png.tar.gz
2.33
KB
-rw-r--r--
favicon-32x32.png.tar
4
KB
-rw-r--r--
favicon-96x96.png.png.tar.gz
8.35
KB
-rw-r--r--
favicon-96x96.png.tar
10
KB
-rw-r--r--
favicon.ico.ico.tar.gz
905
B
-rw-r--r--
favicon.ico.tar
6.5
KB
-rw-r--r--
favicon.png.png.tar.gz
1.94
KB
-rw-r--r--
favicon.png.tar
9.5
KB
-rw-r--r--
favicon2.png.png.tar.gz
1.48
KB
-rw-r--r--
favicon2.png.tar
6
KB
-rw-r--r--
feed-atom-comments.php.php.tar...
1.85
KB
-rw-r--r--
feed-atom-comments.php.tar
7
KB
-rw-r--r--
feed-atom.php.php.tar.gz
1.26
KB
-rw-r--r--
feed-atom.php.tar
8.5
KB
-rw-r--r--
feed-rdf.php.php.tar.gz
1.1
KB
-rw-r--r--
feed-rdf.php.tar
8
KB
-rw-r--r--
feed-rss.php.php.tar.gz
700
B
-rw-r--r--
feed-rss.php.tar
7
KB
-rw-r--r--
feed-rss2-comments.php.php.tar...
1.55
KB
-rw-r--r--
feed-rss2-comments.php.tar
6
KB
-rw-r--r--
feed-rss2.php.php.tar.gz
1.5
KB
-rw-r--r--
feed-rss2.php.tar
10
KB
-rw-r--r--
feed.php.php.tar.gz
5.91
KB
-rw-r--r--
feed.php.tar
48
KB
-rw-r--r--
fef.tar
409
KB
-rw-r--r--
fef.tar.gz
108.82
KB
-rw-r--r--
fef.zip
398.19
KB
-rw-r--r--
fields.tar
26.5
KB
-rw-r--r--
fields.tar.gz
4.84
KB
-rw-r--r--
file.php
80.47
KB
-rw-r--r--
file.php.php.tar.gz
24.83
KB
-rw-r--r--
file.php.tar
3.72
MB
-rw-r--r--
file.tar
22.5
KB
-rw-r--r--
file.tar.gz
3.07
KB
-rw-r--r--
flex.tar
6.17
MB
-rw-r--r--
flex.tar.gz
1.69
MB
-rw-r--r--
fof.zip
2
MB
-rw-r--r--
fontawesome-webfont.eot.eot.ta...
96.31
KB
-rw-r--r--
fontawesome-webfont.eot.tar
163.5
KB
-rw-r--r--
fontawesome-webfont.svg.svg.ta...
132.93
KB
-rw-r--r--
fontawesome-webfont.svg.tar
435.5
KB
-rw-r--r--
fontawesome-webfont.ttf.tar
163.5
KB
-rw-r--r--
fontawesome-webfont.ttf.ttf.ta...
96.22
KB
-rw-r--r--
fontawesome-webfont.woff.tar
97.5
KB
-rw-r--r--
fontawesome-webfont.woff.woff....
95.75
KB
-rw-r--r--
fontawesome-webfont.woff2.tar
77
KB
-rw-r--r--
fontawesome-webfont.woff2.woff...
75.51
KB
-rw-r--r--
fonts.php.php.tar.gz
2.69
KB
-rw-r--r--
fonts.php.tar
11
KB
-rw-r--r--
fonts.tar
2.93
MB
-rw-r--r--
fonts.tar.gz
608.17
KB
-rw-r--r--
fonts.zip
2.91
MB
-rw-r--r--
footnotes.zip
3.27
KB
-rw-r--r--
form.tar
2.5
KB
-rw-r--r--
form.tar.gz
475
B
-rw-r--r--
form.zip
1.14
KB
-rw-r--r--
formatting.php.php.tar.gz
65.1
KB
-rw-r--r--
formatting.php.tar
329.5
KB
-rw-r--r--
forms-rtl.min.css.min.css.tar....
6.69
KB
-rw-r--r--
forms-rtl.min.css.tar
29.5
KB
-rw-r--r--
fr-FR.zip
432.44
KB
-rw-r--r--
framework.php.php.tar.gz
1.38
KB
-rw-r--r--
framework.php.tar
14
KB
-rw-r--r--
freeform.zip
41.54
KB
-rw-r--r--
freepik_edit_3d-model-octane-r...
573.77
KB
-rw-r--r--
freepik_edit_3d-model-octane-r...
646
KB
-rw-r--r--
full-responsive.png.png.tar.gz
1.11
MB
-rw-r--r--
full-responsive.png.tar
1.12
MB
-rw-r--r--
functions.php.php.tar.gz
71.93
KB
-rw-r--r--
functions.php.tar
557.5
KB
-rw-r--r--
functions.wp-scripts.php.tar
16
KB
-rw-r--r--
functions.wp-scripts.php.wp-sc...
3.98
KB
-rw-r--r--
functions.wp-styles.php.tar
19
KB
-rw-r--r--
functions.wp-styles.php.wp-sty...
2.29
KB
-rw-r--r--
gallery.tar
1.24
MB
-rw-r--r--
gallery.tar.gz
933.8
KB
-rw-r--r--
gallery.zip
1.23
MB
-rw-r--r--
gantry.zip
42.42
KB
-rw-r--r--
gantry5.tar
9.78
MB
-rw-r--r--
gantry5.tar.gz
521.58
KB
-rw-r--r--
gantry5.zip
6.48
MB
-rw-r--r--
general-template.php.php.tar.g...
34.11
KB
-rw-r--r--
general-template.php.tar
490.5
KB
-rw-r--r--
genieprevention.jpg.jpg.tar.gz
224.21
KB
-rw-r--r--
genieprevention.jpg.tar
250.5
KB
-rw-r--r--
genieprevention.png.png.tar.gz
1.14
MB
-rw-r--r--
genieprevention.png.tar
1.17
MB
-rw-r--r--
genieprevention.tar
127.85
MB
-rw-r--r--
genieprevention.tar.gz
59.62
MB
-rw-r--r--
getid3.lib.php.lib.php.tar.gz
12.36
KB
-rw-r--r--
getid3.lib.php.tar
55
KB
-rw-r--r--
global-styles-and-settings.php...
5.27
KB
-rw-r--r--
global-styles-and-settings.php...
22.5
KB
-rw-r--r--
google-map.tar
15
KB
-rw-r--r--
google-map.tar.gz
4.24
KB
-rw-r--r--
google-map.zip
12.63
KB
-rw-r--r--
google13cccd2253d2ff59.html.ht...
151
B
-rw-r--r--
google13cccd2253d2ff59.html.ta...
2
KB
-rw-r--r--
google9d63adf694ce55d9.html.ht...
155
B
-rw-r--r--
google9d63adf694ce55d9.html.ta...
2
KB
-rw-r--r--
googleaa8106a26df5450e.html.ht...
152
B
-rw-r--r--
googleaa8106a26df5450e.html.ta...
2
KB
-rw-r--r--
grid1.jpg.jpg.tar.gz
39.16
KB
-rw-r--r--
grid1.jpg.tar
40.5
KB
-rw-r--r--
group.tar
21
KB
-rw-r--r--
group.tar.gz
1.69
KB
-rw-r--r--
group.zip
10.62
KB
-rw-r--r--
header.php.php.tar.gz
989
B
-rw-r--r--
header.php.tar
4
KB
-rw-r--r--
headers.tar
153.5
KB
-rw-r--r--
headers.tar.gz
147.74
KB
-rw-r--r--
headers.zip
149.11
KB
-rw-r--r--
heading.php.php.tar.gz
700
B
-rw-r--r--
heading.php.tar
3
KB
-rw-r--r--
help.tar
8
KB
-rw-r--r--
help.tar.gz
1.14
KB
-rw-r--r--
help.zip
5.76
KB
-rw-r--r--
helpers.tar
14
KB
-rw-r--r--
helpers.tar.gz
2.92
KB
-rw-r--r--
hightlight.css.css.tar.gz
541
B
-rw-r--r--
hightlight.css.tar
2.5
KB
-rw-r--r--
hikashoppayment.tar
1.63
MB
-rw-r--r--
hikashoppayment.tar.gz
433.55
KB
-rw-r--r--
hikashoppayment.zip
1.45
MB
-rw-r--r--
home-link.tar
3
KB
-rw-r--r--
home-link.tar.gz
598
B
-rw-r--r--
home-link.zip
1.25
KB
-rw-r--r--
hover.css.css.tar.gz
4.2
KB
-rw-r--r--
hover.css.tar
47
KB
-rw-r--r--
htaccess.txt.tar
28.5
KB
-rw-r--r--
htaccess.txt.txt.tar.gz
1.53
KB
-rw-r--r--
html-api.tar
535.5
KB
-rw-r--r--
html-api.tar.gz
90.01
KB
-rw-r--r--
html-api.zip
526.46
KB
-rw-r--r--
html.png.png.tar.gz
5.08
KB
-rw-r--r--
html.png.tar
7
KB
-rw-r--r--
html.tar
33.5
KB
-rw-r--r--
html.tar.gz
966
B
-rw-r--r--
http.php.php.tar.gz
5.53
KB
-rw-r--r--
http.php.tar
52
KB
-rw-r--r--
http:.tar
82
KB
-rw-r--r--
http:.tar.gz
24.81
KB
-rw-r--r--
http:.zip
80.62
KB
-rw-r--r--
https-migration.php.php.tar.gz
1.65
KB
-rw-r--r--
https-migration.php.tar
12
KB
-rw-r--r--
https:.tar
82
KB
-rw-r--r--
https:.tar.gz
24.81
KB
-rw-r--r--
https:.zip
80.62
KB
-rw-r--r--
ibd.html.tar
1.5
KB
-rw-r--r--
icagenda.tar
14
KB
-rw-r--r--
icagenda.tar.gz
3.01
KB
-rw-r--r--
icon_fonts.tar
3.44
MB
-rw-r--r--
icon_fonts.tar.gz
1.48
MB
-rw-r--r--
icon_fonts.zip
3.43
MB
-rw-r--r--
ident.tar
1.84
MB
-rw-r--r--
ident.tar.gz
1.69
MB
-rw-r--r--
ident.zip
1.84
MB
-rw-r--r--
identification_qr_code_joe007....
426.41
KB
-rw-r--r--
identification_qr_code_joe007....
452.5
KB
-rw-r--r--
identification_qrcode_suly007....
425.82
KB
-rw-r--r--
identification_qrcode_suly007....
452
KB
-rw-r--r--
idna_convert.zip
142.7
KB
-rw-r--r--
image.php.php.tar.gz
4.05
KB
-rw-r--r--
image.php.tar
13.5
KB
-rw-r--r--
images.jfif.jfif.tar.gz
3.66
KB
-rw-r--r--
images.jfif.tar
5.5
KB
-rw-r--r--
images.tar
185.22
MB
-rw-r--r--
images.tar.gz
9.73
MB
-rw-r--r--
images.zip
204.64
MB
-rw-r--r--
img.tar
1.83
MB
-rw-r--r--
img.tar.gz
638.06
KB
-rw-r--r--
img.zip
1.77
MB
-rw-r--r--
import.php.php.tar.gz
2.68
KB
-rw-r--r--
import.php.tar
17.5
KB
-rw-r--r--
include-component.tar
342.5
KB
-rw-r--r--
include-component.tar.gz
319.18
KB
-rw-r--r--
includes.tar
2.8
MB
-rw-r--r--
includes.tar.gz
26.35
KB
-rw-r--r--
includes.zip
2.99
MB
-rw-r--r--
index-home.html.html.tar.gz
4.34
KB
-rw-r--r--
index-home.html.tar
22
KB
-rw-r--r--
index-slides.html.html.tar.gz
7.51
KB
-rw-r--r--
index-slides.html.tar
40.5
KB
-rw-r--r--
index-static.html.html.tar.gz
7.41
KB
-rw-r--r--
index-static.html.tar
40
KB
-rw-r--r--
index-text.html.html.tar.gz
6.78
KB
-rw-r--r--
index-text.html.tar
41.5
KB
-rw-r--r--
index.html.html.tar.gz
7.33
KB
-rw-r--r--
index.html.tar
99
KB
-rw-r--r--
index.jpg.jpg.tar.gz
11.13
KB
-rw-r--r--
index.jpg.tar
13
KB
-rw-r--r--
index.php.php.tar.gz
351
B
-rw-r--r--
index.php.tar
83.5
KB
-rw-r--r--
index.php0.php0.tar.gz
855
B
-rw-r--r--
index.php0.tar
3
KB
-rw-r--r--
index5.php.php.tar.gz
353
B
-rw-r--r--
index5.php.tar
2
KB
-rw-r--r--
indexFR.html.html.tar.gz
5.82
KB
-rw-r--r--
indexFR.html.tar
27.5
KB
-rw-r--r--
index_files.tar
1.22
MB
-rw-r--r--
index_files.tar.gz
838.85
KB
-rw-r--r--
index_files.zip
1.21
MB
-rw-r--r--
indexfr.html.html.tar.gz
6.01
KB
-rw-r--r--
indexfr.html.tar
29.5
KB
-rw-r--r--
indexx.html.html.tar.gz
2.01
KB
-rw-r--r--
indexx.html.tar
8
KB
-rw-r--r--
indexx.php.php.tar.gz
357
B
-rw-r--r--
indexx.php.tar
2
KB
-rw-r--r--
install-helper.php.php.tar.gz
1.97
KB
-rw-r--r--
install-helper.php.tar
37.5
KB
-rw-r--r--
install.html.html.tar.gz
160
B
-rw-r--r--
install.html.tar
2
KB
-rw-r--r--
install.php.php.tar.gz
5.21
KB
-rw-r--r--
install.php.tar
72.5
KB
-rw-r--r--
installer.tar
74
KB
-rw-r--r--
installer.tar.gz
14.3
KB
-rw-r--r--
installer.zip
70.91
KB
-rw-r--r--
interactivity-api.tar
57.5
KB
-rw-r--r--
interactivity-api.tar.gz
13.26
KB
-rw-r--r--
interactivity-api.zip
54.55
KB
-rw-r--r--
ion.rangeSlider.min.css.rangeS...
1.05
KB
-rw-r--r--
ion.rangeSlider.min.css.tar
5
KB
-rw-r--r--
ionicons.css.css.tar.gz
8.76
KB
-rw-r--r--
ionicons.css.tar
57.5
KB
-rw-r--r--
ionicons.eot.eot.tar.gz
67.46
KB
-rw-r--r--
ionicons.eot.tar
119.5
KB
-rw-r--r--
ionicons.min.css.min.css.tar.g...
8.19
KB
-rw-r--r--
ionicons.min.css.tar
52
KB
-rw-r--r--
ionicons.svg.svg.tar.gz
100.45
KB
-rw-r--r--
ionicons.svg.tar
328
KB
-rw-r--r--
ionicons.ttf.tar
186
KB
-rw-r--r--
ionicons.ttf.ttf.tar.gz
107.36
KB
-rw-r--r--
ionicons.woff.tar
68
KB
-rw-r--r--
ionicons.woff.woff.tar.gz
65.47
KB
-rw-r--r--
it_sanctum.tar
7.63
MB
-rw-r--r--
it_sanctum.tar.gz
3.36
MB
-rw-r--r--
it_sanctum.zip
7.36
MB
-rw-r--r--
java.png.png.tar.gz
4.57
KB
-rw-r--r--
java.png.tar
6
KB
-rw-r--r--
jce.tar
285
KB
-rw-r--r--
jce.tar.gz
258.77
KB
-rw-r--r--
jce.zip
263.86
KB
-rw-r--r--
jcrop.zip
24.83
KB
-rw-r--r--
joomla.png.png.tar.gz
10.05
KB
-rw-r--r--
joomla.png.tar
12
KB
-rw-r--r--
joomla.tar
2.09
MB
-rw-r--r--
joomla.tar.gz
34.7
KB
-rw-r--r--
joomla.zip
1.86
MB
-rw-r--r--
joomla_black.png.png.tar.gz
5.04
KB
-rw-r--r--
joomla_black.png.tar
6.5
KB
-rw-r--r--
jquery-1.10.2.js.10.2.js.tar.g...
79.27
KB
-rw-r--r--
jquery-1.10.2.js.tar
268.5
KB
-rw-r--r--
jquery-1.7.2.js.7.2.js.tar.gz
32.95
KB
-rw-r--r--
jquery-1.7.2.js.tar
94.5
KB
-rw-r--r--
jquery-3.1.1.min.js.1.1.min.js...
29.5
KB
-rw-r--r--
jquery-3.1.1.min.js.tar
86.5
KB
-rw-r--r--
jquery-3.3.1.min.js.3.1.min.js...
23.63
KB
-rw-r--r--
jquery-3.3.1.min.js.tar
70
KB
-rw-r--r--
jquery.prettyPhoto.js.prettyPh...
6.23
KB
-rw-r--r--
jquery.prettyPhoto.js.tar
37.5
KB
-rw-r--r--
jquery.quicksand.js.quicksand....
3.32
KB
-rw-r--r--
jquery.quicksand.js.tar
16
KB
-rw-r--r--
jquery.tar
1.31
MB
-rw-r--r--
jquery.tar.gz
354.74
KB
-rw-r--r--
js.png.png.tar.gz
5.12
KB
-rw-r--r--
js.png.tar
7
KB
-rw-r--r--
js.tar
28.98
MB
-rw-r--r--
js.tar.gz
88.56
KB
-rw-r--r--
js.zip
28.81
MB
-rw-r--r--
jui.tar
1.93
MB
-rw-r--r--
jui.tar.gz
608.39
KB
-rw-r--r--
jui.zip
1.86
MB
-rw-r--r--
jw_allvideos.tar
8.5
KB
-rw-r--r--
jw_allvideos.tar.gz
6.89
KB
-rw-r--r--
jw_allvideos.zip
6.93
KB
-rw-r--r--
k2.tar
19.06
MB
-rw-r--r--
k2.tar.gz
12.15
MB
-rw-r--r--
k2.zip
20.62
MB
-rw-r--r--
keychain.php.php.tar.gz
2.5
KB
-rw-r--r--
keychain.php.tar
10
KB
-rw-r--r--
keys.tar
83
KB
-rw-r--r--
keys.tar.gz
24.92
KB
-rw-r--r--
keys.zip
80.85
KB
-rw-r--r--
kses.php.php.tar.gz
15.21
KB
-rw-r--r--
kses.php.tar
137
KB
-rw-r--r--
l10n.php.php.tar.gz
10.36
KB
-rw-r--r--
l10n.php.tar
123
KB
-rw-r--r--
l10n.tar
35.5
KB
-rw-r--r--
l10n.tar.gz
6.3
KB
-rw-r--r--
l10n.zip
31.37
KB
-rw-r--r--
langmetadata.xml.tar
4
KB
-rw-r--r--
langmetadata.xml.xml.tar.gz
602
B
-rw-r--r--
language.tar
4.46
MB
-rw-r--r--
language.tar.gz
712.33
KB
-rw-r--r--
language.zip
901.86
KB
-rw-r--r--
languages.tar
45.74
MB
-rw-r--r--
languages.tar.gz
10.09
MB
-rw-r--r--
languages.zip
45.4
MB
-rw-r--r--
latest-posts.tar
18
KB
-rw-r--r--
latest-posts.tar.gz
1.95
KB
-rw-r--r--
latest-posts.zip
12.74
KB
-rw-r--r--
layerslider.tar
742.5
KB
-rw-r--r--
layerslider.tar.gz
377.05
KB
-rw-r--r--
layerslider.zip
702.11
KB
-rw-r--r--
layouts.tar
576
KB
-rw-r--r--
layouts.tar.gz
64.14
KB
-rw-r--r--
layouts.zip
472.05
KB
-rw-r--r--
libraries.tar
65.01
MB
-rw-r--r--
libraries.tar.gz
3.69
MB
-rw-r--r--
libraries.zip
65.53
MB
-rw-r--r--
library.tar
2
KB
-rw-r--r--
library.tar.gz
263
B
-rw-r--r--
license.txt.tar
241
KB
-rw-r--r--
license.txt.txt.tar.gz
7.23
KB
-rw-r--r--
link-add.php.php.tar.gz
590
B
-rw-r--r--
link-add.php.tar
2.5
KB
-rw-r--r--
link-manager.php.php.tar.gz
1.88
KB
-rw-r--r--
link-manager.php.tar
6
KB
-rw-r--r--
link-parse-opml.php.php.tar.gz
1.09
KB
-rw-r--r--
link-parse-opml.php.tar
4.5
KB
-rw-r--r--
link-template.php.php.tar.gz
25.97
KB
-rw-r--r--
link-template.php.tar
154
KB
-rw-r--r--
link.php.php.tar.gz
1.15
KB
-rw-r--r--
link.php.tar
4.5
KB
-rw-r--r--
list.php.php.tar.gz
699
B
-rw-r--r--
list.php.tar
3
KB
-rw-r--r--
load-scripts.php.php.tar.gz
939
B
-rw-r--r--
load-scripts.php.tar
6.5
KB
-rw-r--r--
load-styles.php.php.tar.gz
1.14
KB
-rw-r--r--
load-styles.php.tar
8
KB
-rw-r--r--
load.php.php.tar.gz
14.85
KB
-rw-r--r--
load.php.tar
56
KB
-rw-r--r--
loader.gif.gif.tar.gz
2.23
KB
-rw-r--r--
loader.gif.tar
4
KB
-rw-r--r--
loader.php.php.tar.gz
5.63
KB
-rw-r--r--
loader.php.tar
24
KB
-rw-r--r--
locale.php.php.tar.gz
245
B
-rw-r--r--
locale.php.tar
4
KB
-rw-r--r--
location.pdf.pdf.tar.gz
475.03
KB
-rw-r--r--
location.pdf.tar
495
KB
-rw-r--r--
log.tar
82
KB
-rw-r--r--
log.tar.gz
24.81
KB
-rw-r--r--
log.zip
80.62
KB
-rw-r--r--
login.tar
101.44
MB
-rw-r--r--
login.tar.gz
45.21
MB
-rw-r--r--
login.zip
96.15
MB
-rw-r--r--
loginout.zip
1.15
KB
-rw-r--r--
logo ala maze.ai.ai.tar.gz
1.36
MB
-rw-r--r--
logo ala maze.ai.tar
1.42
MB
-rw-r--r--
logo-white.png.png.tar.gz
4.59
KB
-rw-r--r--
logo-white.png.tar
6
KB
-rw-r--r--
logo.png.png.tar.gz
92.76
KB
-rw-r--r--
logo.png.tar
211.5
KB
-rw-r--r--
logo.tar
497
KB
-rw-r--r--
logo.tar.gz
96
B
-rw-r--r--
logo.zip
493.46
KB
-rw-r--r--
logo2.png.png.tar.gz
3.13
KB
-rw-r--r--
logo2.png.tar
4.5
KB
-rw-r--r--
logo_2x.png.png.tar.gz
1.9
KB
-rw-r--r--
logo_2x.png.tar
3.5
KB
-rw-r--r--
logo_sticky.png.png.tar.gz
1.24
KB
-rw-r--r--
logo_sticky.png.tar
3
KB
-rw-r--r--
logoindex2.png.png.tar.gz
3.89
KB
-rw-r--r--
logoindex2.png.tar
10
KB
-rw-r--r--
logos.tar
1.5
KB
-rw-r--r--
logos.tar.gz
97
B
-rw-r--r--
logowhite.png.png.tar.gz
3.98
KB
-rw-r--r--
logowhite.png.tar
6
KB
-rw-r--r--
logrotation.zip
8.03
KB
-rw-r--r--
logs.tar
117.5
KB
-rw-r--r--
logs.tar.gz
25.54
KB
-rw-r--r--
logs.zip
353.88
KB
-rw-r--r--
magento.png.png.tar.gz
50.73
KB
-rw-r--r--
magento.png.tar
60.5
KB
-rw-r--r--
mailto.tar
2
KB
-rw-r--r--
mailto.tar.gz
208
B
-rw-r--r--
mailto.zip
284
B
-rw-r--r--
main-banner_old2.jpg.jpg.tar.g...
61.7
KB
-rw-r--r--
main-banner_old2.jpg.tar
95.5
KB
-rw-r--r--
main.css.css.tar.gz
2.27
KB
-rw-r--r--
main.css.tar
10.5
KB
-rw-r--r--
main.js.js.tar.gz
1.83
KB
-rw-r--r--
main.js.tar
7
KB
-rw-r--r--
main.min.css.min.css.tar.gz
1.97
KB
-rw-r--r--
main.min.css.tar
8
KB
-rw-r--r--
main.min.js.min.js.tar.gz
1.66
KB
-rw-r--r--
main.min.js.tar
6
KB
-rw-r--r--
maint.tar
9
KB
-rw-r--r--
maint.tar.gz
2.66
KB
-rw-r--r--
maint.zip
7.56
KB
-rw-r--r--
manifest.json.json.tar.gz
294
B
-rw-r--r--
manifest.json.tar
2.5
KB
-rw-r--r--
mapmarker_func.jquery.js.jquer...
317
B
-rw-r--r--
mapmarker_func.jquery.js.tar
2
KB
-rw-r--r--
maps.tar
79.5
KB
-rw-r--r--
maps.tar.gz
19.9
KB
-rw-r--r--
maps.zip
77.71
KB
-rw-r--r--
media-audiovideo.js.js.tar.gz
6.02
KB
-rw-r--r--
media-audiovideo.js.tar
28.5
KB
-rw-r--r--
media-button-2x.png.png.tar.gz
1007
B
-rw-r--r--
media-button-2x.png.tar
2.5
KB
-rw-r--r--
media-button-image.gif.gif.tar...
325
B
-rw-r--r--
media-button-image.gif.tar
2
KB
-rw-r--r--
media-button-other.gif.gif.tar...
409
B
-rw-r--r--
media-button-other.gif.tar
2
KB
-rw-r--r--
media-button.png.png.tar.gz
475
B
-rw-r--r--
media-button.png.tar
2
KB
-rw-r--r--
media-new.php.php.tar.gz
1.57
KB
-rw-r--r--
media-new.php.tar
9
KB
-rw-r--r--
media-template.php.php.tar.gz
11.15
KB
-rw-r--r--
media-template.php.tar
184.5
KB
-rw-r--r--
media-text.tar
22
KB
-rw-r--r--
media-text.tar.gz
2.2
KB
-rw-r--r--
media-text.zip
15.34
KB
-rw-r--r--
media-upload.php.php.tar.gz
1.46
KB
-rw-r--r--
media-upload.php.tar
13
KB
-rw-r--r--
media.php.php.tar.gz
36.43
KB
-rw-r--r--
media.php.tar
368.5
KB
-rw-r--r--
media.tar
76.18
MB
-rw-r--r--
media.tar.gz
16.27
MB
-rw-r--r--
media.zip
69.29
MB
-rw-r--r--
mediaelement.tar
2.19
MB
-rw-r--r--
mediaelement.tar.gz
154.85
KB
-rw-r--r--
mediaelement.zip
2.17
MB
-rw-r--r--
member.jpg.jpg.tar.gz
8.99
KB
-rw-r--r--
member.jpg.tar
11
KB
-rw-r--r--
menu-header.php.php.tar.gz
2.89
KB
-rw-r--r--
menu-header.php.tar
11.5
KB
-rw-r--r--
menu.php.php.tar.gz
4.47
KB
-rw-r--r--
menu.php.tar
18.5
KB
-rw-r--r--
menu.tar
5.5
KB
-rw-r--r--
menu.tar.gz
1.26
KB
-rw-r--r--
meta-boxes.php.php.tar.gz
12.82
KB
-rw-r--r--
meta-boxes.php.tar
185.5
KB
-rw-r--r--
meta.php.php.tar.gz
9.97
KB
-rw-r--r--
meta.php.tar
290
KB
-rw-r--r--
metismenujs.tar
77
KB
-rw-r--r--
metismenujs.tar.gz
16.01
KB
-rw-r--r--
middletv.tar
17.4
MB
-rw-r--r--
middletv.tar.gz
9.32
MB
-rw-r--r--
middletv.zip
17.23
MB
-rw-r--r--
missing.tar
2.5
KB
-rw-r--r--
missing.tar.gz
396
B
-rw-r--r--
mod_acymailing.zip
60.47
KB
-rw-r--r--
mod_articles_latest.tar
13
KB
-rw-r--r--
mod_articles_latest.tar.gz
2.95
KB
-rw-r--r--
mod_articles_latest.zip
9.55
KB
-rw-r--r--
mod_articles_news.tar
23.5
KB
-rw-r--r--
mod_articles_news.tar.gz
4.22
KB
-rw-r--r--
mod_articles_popular.zip
9.37
KB
-rw-r--r--
mod_breadcrumbs.tar
13
KB
-rw-r--r--
mod_breadcrumbs.tar.gz
2.95
KB
-rw-r--r--
mod_breadcrumbs.zip
9.32
KB
-rw-r--r--
mod_custom.tar
7
KB
-rw-r--r--
mod_custom.tar.gz
1.57
KB
-rw-r--r--
mod_custom.zip
4.06
KB
-rw-r--r--
mod_falang.tar
50.5
KB
-rw-r--r--
mod_falang.tar.gz
9.35
KB
-rw-r--r--
mod_falang.zip
44.2
KB
-rw-r--r--
mod_feed.zip
10.14
KB
-rw-r--r--
mod_finder.tar
18
KB
-rw-r--r--
mod_finder.tar.gz
4.23
KB
-rw-r--r--
mod_hikashop_filter.tar
15
KB
-rw-r--r--
mod_hikashop_filter.tar.gz
2.09
KB
-rw-r--r--
mod_k2_tools.tar
88
KB
-rw-r--r--
mod_k2_tools.tar.gz
13.73
KB
-rw-r--r--
mod_k2_tools.zip
79.47
KB
-rw-r--r--
mod_languages.tar
18.5
KB
-rw-r--r--
mod_languages.tar.gz
3.59
KB
-rw-r--r--
mod_languages.zip
14.83
KB
-rw-r--r--
mod_multilangstatus.tar
8
KB
-rw-r--r--
mod_multilangstatus.tar.gz
1.17
KB
-rw-r--r--
mod_privacy_dashboard.tar
10.5
KB
-rw-r--r--
mod_privacy_dashboard.tar.gz
2.18
KB
-rw-r--r--
mod_privacy_dashboard.zip
6.72
KB
-rw-r--r--
mod_related_items.zip
8.91
KB
-rw-r--r--
mod_search.tar
13
KB
-rw-r--r--
mod_search.tar.gz
2.86
KB
-rw-r--r--
mod_search.zip
9.7
KB
-rw-r--r--
mod_spsimpleportfolio.tar
25.5
KB
-rw-r--r--
mod_spsimpleportfolio.tar.gz
5.22
KB
-rw-r--r--
mod_sr_currency.tar
30.5
KB
-rw-r--r--
mod_sr_currency.tar.gz
3.72
KB
-rw-r--r--
mod_stats.tar
16.5
KB
-rw-r--r--
mod_stats.tar.gz
2.36
KB
-rw-r--r--
mod_stats.zip
12.43
KB
-rw-r--r--
mod_submenu.tar
7
KB
-rw-r--r--
mod_submenu.tar.gz
1.56
KB
-rw-r--r--
mod_syndicate.tar
8.5
KB
-rw-r--r--
mod_syndicate.tar.gz
1.77
KB
-rw-r--r--
mod_syndicate.zip
5.02
KB
-rw-r--r--
mod_tags_popular.zip
13.4
KB
-rw-r--r--
mod_tags_similar.tar
14
KB
-rw-r--r--
mod_tags_similar.tar.gz
3.23
KB
-rw-r--r--
mod_tags_similar.zip
11.02
KB
-rw-r--r--
mod_users_latest.tar
9
KB
-rw-r--r--
mod_users_latest.tar.gz
2.01
KB
-rw-r--r--
mod_users_latest.zip
5.81
KB
-rw-r--r--
mod_wrapper.tar
11
KB
-rw-r--r--
mod_wrapper.tar.gz
2.21
KB
-rw-r--r--
mod_wrapper.zip
7.83
KB
-rw-r--r--
modal.zip
17.12
KB
-rw-r--r--
models.tar
6.5
KB
-rw-r--r--
models.tar.gz
1.57
KB
-rw-r--r--
moderation.php.php.tar.gz
303
B
-rw-r--r--
moderation.php.tar
2
KB
-rw-r--r--
modules.tar
2.56
MB
-rw-r--r--
modules.tar.gz
87.17
KB
-rw-r--r--
modules.zip
3.04
MB
-rw-r--r--
more.zip
4.38
KB
-rw-r--r--
ms-admin.php.php.tar.gz
263
B
-rw-r--r--
ms-admin.php.tar
2
KB
-rw-r--r--
ms-blogs.php.php.tar.gz
6.12
KB
-rw-r--r--
ms-blogs.php.tar
27
KB
-rw-r--r--
ms-default-constants.php.php.t...
1.66
KB
-rw-r--r--
ms-default-constants.php.tar
23
KB
-rw-r--r--
ms-default-filters.php.php.tar...
1.8
KB
-rw-r--r--
ms-default-filters.php.tar
27.5
KB
-rw-r--r--
ms-delete-site.php.php.tar.gz
1.87
KB
-rw-r--r--
ms-delete-site.php.tar
11
KB
-rw-r--r--
ms-deprecated.php.php.tar.gz
6.25
KB
-rw-r--r--
ms-deprecated.php.tar
23
KB
-rw-r--r--
ms-edit.php.php.tar.gz
280
B
-rw-r--r--
ms-edit.php.tar
3
KB
-rw-r--r--
ms-files.php.php.tar.gz
1.22
KB
-rw-r--r--
ms-files.php.tar
8
KB
-rw-r--r--
ms-functions.php.php.tar.gz
19.22
KB
-rw-r--r--
ms-functions.php.tar
91
KB
-rw-r--r--
ms-icon-144x144.png.png.tar.gz
14.3
KB
-rw-r--r--
ms-icon-144x144.png.tar
16
KB
-rw-r--r--
ms-icon-150x150.png.png.tar.gz
14.94
KB
-rw-r--r--
ms-icon-150x150.png.tar
16.5
KB
-rw-r--r--
ms-icon-310x310.png.png.tar.gz
43.67
KB
-rw-r--r--
ms-icon-310x310.png.tar
45.5
KB
-rw-r--r--
ms-icon-70x70.png.png.tar.gz
5.71
KB
-rw-r--r--
ms-icon-70x70.png.tar
7.5
KB
-rw-r--r--
ms-load.php.php.tar.gz
6.03
KB
-rw-r--r--
ms-load.php.tar
40.5
KB
-rw-r--r--
ms-network.php.php.tar.gz
1.47
KB
-rw-r--r--
ms-network.php.tar
10
KB
-rw-r--r--
ms-options.php.php.tar.gz
282
B
-rw-r--r--
ms-options.php.tar
2
KB
-rw-r--r--
ms-settings.php.php.tar.gz
1.62
KB
-rw-r--r--
ms-settings.php.tar
11
KB
-rw-r--r--
ms-site.php.php.tar.gz
9.44
KB
-rw-r--r--
ms-site.php.tar
41
KB
-rw-r--r--
ms-sites.php.php.tar.gz
273
B
-rw-r--r--
ms-sites.php.tar
3
KB
-rw-r--r--
ms-upgrade-network.php.php.tar...
281
B
-rw-r--r--
ms-upgrade-network.php.tar
2
KB
-rw-r--r--
ms-users.php.php.tar.gz
274
B
-rw-r--r--
ms-users.php.tar
3
KB
-rw-r--r--
mu-plugins.tar
2.5
KB
-rw-r--r--
mu-plugins.tar.gz
393
B
-rw-r--r--
mu-plugins.zip
791
B
-rw-r--r--
my-music.online.tar
636.9
MB
-rw-r--r--
my-music.online.tar.gz
20
B
-rw-r--r--
my-sites.php.php.tar.gz
2.04
KB
-rw-r--r--
my-sites.php.tar
6.5
KB
-rw-r--r--
mymusicpromo-online.zip
53.39
MB
-rw-r--r--
mysql.png.png.tar.gz
4.7
KB
-rw-r--r--
mysql.png.tar
7
KB
-rw-r--r--
nav-menu-template.php.php.tar....
6.24
KB
-rw-r--r--
nav-menu-template.php.tar
76.5
KB
-rw-r--r--
nav-menu.php.php.tar.gz
9.58
KB
-rw-r--r--
nav-menu.php.tar
45
KB
-rw-r--r--
nav-menus.php.php.tar.gz
10.56
KB
-rw-r--r--
nav-menus.php.tar
50
KB
-rw-r--r--
navigation-link.tar
19.5
KB
-rw-r--r--
navigation-link.tar.gz
1.97
KB
-rw-r--r--
navigation-submenu.zip
9.26
KB
-rw-r--r--
navigation.zip
131.13
KB
-rw-r--r--
network.php.php.tar.gz
2.23
KB
-rw-r--r--
network.php.tar
7
KB
-rw-r--r--
network.tar
145.5
KB
-rw-r--r--
network.tar.gz
27.6
KB
-rw-r--r--
network.zip
127.06
KB
-rw-r--r--
networks.php.php.tar.gz
1.07
KB
-rw-r--r--
networks.php.tar
3.5
KB
-rw-r--r--
newsletter.php.php.tar.gz
1.39
KB
-rw-r--r--
newsletter.php.tar
4
KB
-rw-r--r--
nl-NL.tar
354.5
KB
-rw-r--r--
nl-NL.tar.gz
79.1
KB
-rw-r--r--
nl-NL.zip
304
KB
-rw-r--r--
node.png.png.tar.gz
51.8
KB
-rw-r--r--
node.png.tar
57.5
KB
-rw-r--r--
node2.png.png.tar.gz
26.86
KB
-rw-r--r--
node2.png.tar
32
KB
-rw-r--r--
odfiafrica.jpg.jpg.tar.gz
384.95
KB
-rw-r--r--
odfiafrica.jpg.tar
417
KB
-rw-r--r--
onepage-slider.html.html.tar.g...
6.99
KB
-rw-r--r--
onepage-slider.html.tar
42.5
KB
-rw-r--r--
onepage-text.html.html.tar.gz
6.9
KB
-rw-r--r--
onepage-text.html.tar
42
KB
-rw-r--r--
option.php.php.tar.gz
13.11
KB
-rw-r--r--
option.php.tar
532.5
KB
-rw-r--r--
options-discussion.php.php.tar...
4.27
KB
-rw-r--r--
options-discussion.php.tar
82
KB
-rw-r--r--
options-general.php.php.tar.gz
6.41
KB
-rw-r--r--
options-general.php.tar
83
KB
-rw-r--r--
options-head.php.php.tar.gz
464
B
-rw-r--r--
options-head.php.tar
2.5
KB
-rw-r--r--
options-permalink.php.php.tar....
5.59
KB
-rw-r--r--
options-permalink.php.tar
88.5
KB
-rw-r--r--
options-privacy.php.php.tar.gz
2.71
KB
-rw-r--r--
options-privacy.php.tar
41
KB
-rw-r--r--
options-reading.php.php.tar.gz
3.1
KB
-rw-r--r--
options-reading.php.tar
12
KB
-rw-r--r--
options-writing.php.php.tar.gz
3.05
KB
-rw-r--r--
options-writing.php.tar
21
KB
-rw-r--r--
options.php.php.tar.gz
4.51
KB
-rw-r--r--
options.php.tar
56.5
KB
-rw-r--r--
overrider.tar
12.5
KB
-rw-r--r--
overrider.tar.gz
2.86
KB
-rw-r--r--
overrider.zip
9.83
KB
-rw-r--r--
overrides.tar
3
KB
-rw-r--r--
overrides.tar.gz
269
B
-rw-r--r--
overrides.zip
512
B
-rw-r--r--
owl.carousel.js.carousel.js.ta...
17.24
KB
-rw-r--r--
owl.carousel.js.tar
79
KB
-rw-r--r--
owl.carousel.min.js.carousel.m...
10.39
KB
-rw-r--r--
owl.carousel.min.js.tar
89
KB
-rw-r--r--
p1.jpg.jpg.tar.gz
237.02
KB
-rw-r--r--
p1.jpg.tar
243.5
KB
-rw-r--r--
p2.jpg.jpg.tar.gz
283.15
KB
-rw-r--r--
p2.jpg.tar
285
KB
-rw-r--r--
p3.jpg.jpg.tar.gz
287.59
KB
-rw-r--r--
p3.jpg.tar
289.5
KB
-rw-r--r--
p4.jpg.jpg.tar.gz
394.73
KB
-rw-r--r--
p4.jpg.tar
396.5
KB
-rw-r--r--
p5.jpg.jpg.tar.gz
177.65
KB
-rw-r--r--
p5.jpg.tar
181
KB
-rw-r--r--
p6.jpg.jpg.tar.gz
601.57
KB
-rw-r--r--
p6.jpg.tar
603
KB
-rw-r--r--
packageinstaller.zip
11.38
KB
-rw-r--r--
page-list-item.tar
3
KB
-rw-r--r--
page-list-item.tar.gz
576
B
-rw-r--r--
page-list.tar
15
KB
-rw-r--r--
page-list.tar.gz
1.39
KB
-rw-r--r--
pagebuilder.tar
6.09
MB
-rw-r--r--
pagebuilder.tar.gz
5.84
MB
-rw-r--r--
paralax-index1_old.jpg.jpg.tar...
794.32
KB
-rw-r--r--
paralax-index1_old.jpg.tar
807.5
KB
-rw-r--r--
particles.min.js.min.js.tar.gz
5.91
KB
-rw-r--r--
particles.min.js.tar
24.5
KB
-rw-r--r--
pattern.png.png.tar.gz
2.75
KB
-rw-r--r--
pattern.png.tar
4.5
KB
-rw-r--r--
pattern.svg.svg.tar.gz
17.24
KB
-rw-r--r--
pattern.svg.tar
53
KB
-rw-r--r--
pattern.zip
478
B
-rw-r--r--
payeer_1314567119.txt.tar
2
KB
-rw-r--r--
payeer_1314567119.txt.txt.tar....
128
B
-rw-r--r--
payments.png.png.tar.gz
10.04
KB
-rw-r--r--
payments.png.tar
11.5
KB
-rw-r--r--
payments_2x.png.png.tar.gz
31.26
KB
-rw-r--r--
payments_2x.png.tar
33
KB
-rw-r--r--
paypal_bt.png.png.tar.gz
13.5
KB
-rw-r--r--
paypal_bt.png.tar
15
KB
-rw-r--r--
paypaladvanced_2_6279148dd013c...
334
B
-rw-r--r--
paypaladvanced_2_6279148dd013c...
2.5
KB
-rw-r--r--
paypaladvanced_cancel_2.php.ph...
316
B
-rw-r--r--
paypaladvanced_cancel_2.php.ta...
2.5
KB
-rw-r--r--
paypaladvanced_return_2.php.ph...
316
B
-rw-r--r--
paypaladvanced_return_2.php.ta...
2.5
KB
-rw-r--r--
php-compat.tar
3
KB
-rw-r--r--
php-compat.tar.gz
649
B
-rw-r--r--
php-compat.zip
1.38
KB
-rw-r--r--
php-encryption.tar
26
KB
-rw-r--r--
php-encryption.tar.gz
6.52
KB
-rw-r--r--
php-encryption.zip
24.3
KB
-rw-r--r--
php.ini.ini.tar.gz
244
B
-rw-r--r--
php.ini.tar
3
KB
-rw-r--r--
php.png.png.tar.gz
4.91
KB
-rw-r--r--
php.png.tar
6.5
KB
-rw-r--r--
php_mail.log.log.tar.gz
6.45
KB
-rw-r--r--
php_mail.log.tar
100.5
KB
-rw-r--r--
pickapp.tar
83.5
KB
-rw-r--r--
pickapp.tar.gz
25.16
KB
-rw-r--r--
plg_installer_webinstaller.tar
34.5
KB
-rw-r--r--
plg_installer_webinstaller.tar...
6.53
KB
-rw-r--r--
plg_installer_webinstaller.zip
31.15
KB
-rw-r--r--
plg_media-action_crop.tar
19
KB
-rw-r--r--
plg_media-action_crop.tar.gz
4.14
KB
-rw-r--r--
plg_media-action_crop.zip
14.32
KB
-rw-r--r--
plg_media-action_resize.tar
15
KB
-rw-r--r--
plg_media-action_resize.tar.gz
3.31
KB
-rw-r--r--
plg_media-action_resize.zip
10.3
KB
-rw-r--r--
plg_media-action_rotate.tar
17
KB
-rw-r--r--
plg_media-action_rotate.tar.gz
3.98
KB
-rw-r--r--
plg_media-action_rotate.zip
12.17
KB
-rw-r--r--
plg_quickicon_extensionupdate....
3.5
KB
-rw-r--r--
plg_quickicon_extensionupdate....
791
B
-rw-r--r--
plg_quickicon_extensionupdate....
7.69
KB
-rw-r--r--
plg_quickicon_joomlaupdate.tar
4
KB
-rw-r--r--
plg_quickicon_joomlaupdate.tar...
890
B
-rw-r--r--
plg_quickicon_privacycheck.tar
3.5
KB
-rw-r--r--
plg_quickicon_privacycheck.tar...
860
B
-rw-r--r--
plg_quickicon_privacycheck.zip
2.12
KB
-rw-r--r--
plg_solidres_limitbooking.tar
6
KB
-rw-r--r--
plg_solidres_limitbooking.tar....
1.18
KB
-rw-r--r--
plg_system_highlight.tar
2
KB
-rw-r--r--
plg_system_highlight.tar.gz
166
B
-rw-r--r--
plg_system_highlight.zip
241
B
-rw-r--r--
plg_system_stats.tar
4
KB
-rw-r--r--
plg_system_stats.tar.gz
841
B
-rw-r--r--
plg_system_stats.zip
2.31
KB
-rw-r--r--
plg_twofactorauth_totp.tar
117
KB
-rw-r--r--
plg_twofactorauth_totp.tar.gz
49.11
KB
-rw-r--r--
plg_twofactorauth_totp.zip
113.39
KB
-rw-r--r--
pluggable-deprecated.php.php.t...
1.97
KB
-rw-r--r--
pluggable-deprecated.php.tar
8
KB
-rw-r--r--
pluggable.php.php.tar.gz
23.38
KB
-rw-r--r--
pluggable.php.tar
213
KB
-rw-r--r--
plugin-editor.php.php.tar.gz
4.7
KB
-rw-r--r--
plugin-editor.php.tar
15
KB
-rw-r--r--
plugin-install.php.php.tar.gz
2.64
KB
-rw-r--r--
plugin-install.php.tar
30
KB
-rw-r--r--
plugin.php.php.tar.gz
7.14
KB
-rw-r--r--
plugin.php.tar
36.5
KB
-rw-r--r--
plugin.tar
366
KB
-rw-r--r--
plugin.tar.gz
90.03
KB
-rw-r--r--
plugins.php.php.tar.gz
1.08
KB
-rw-r--r--
plugins.php.tar
86
KB
-rw-r--r--
plugins.tar
239.95
MB
-rw-r--r--
plugins.tar.gz
1.59
MB
-rw-r--r--
plugins.zip
715.26
MB
-rw-r--r--
plugins1.tar
9.22
MB
-rw-r--r--
plugins1.tar.gz
4.62
MB
-rw-r--r--
plugins1.zip
9.2
MB
-rw-r--r--
plupload.tar
486.5
KB
-rw-r--r--
plupload.tar.gz
134.75
KB
-rw-r--r--
pomo.tar
59
KB
-rw-r--r--
pomo.tar.gz
11.77
KB
-rw-r--r--
pomo.zip
54
KB
-rw-r--r--
popper.min.js.min.js.tar.gz
7.4
KB
-rw-r--r--
popper.min.js.tar
22.5
KB
-rw-r--r--
popup_img.jpg.jpg.tar.gz
17.31
KB
-rw-r--r--
popup_img.jpg.tar
19
KB
-rw-r--r--
portfolio.html.html.tar.gz
3.03
KB
-rw-r--r--
portfolio.html.tar
17.5
KB
-rw-r--r--
post-comments-form.zip
10.75
KB
-rw-r--r--
post-content.zip
2.05
KB
-rw-r--r--
post-excerpt.php.php.tar.gz
1.45
KB
-rw-r--r--
post-excerpt.php.tar
5
KB
-rw-r--r--
post-excerpt.tar
11
KB
-rw-r--r--
post-excerpt.tar.gz
919
B
-rw-r--r--
post-formats.php.php.tar.gz
1.97
KB
-rw-r--r--
post-formats.php.tar
16
KB
-rw-r--r--
post-new.php.php.tar.gz
1.13
KB
-rw-r--r--
post-new.php.tar
15
KB
-rw-r--r--
post-template.php.php.tar.gz
15.54
KB
-rw-r--r--
post-template.php.tar
67
KB
-rw-r--r--
post-template.tar
16
KB
-rw-r--r--
post-template.tar.gz
1.44
KB
-rw-r--r--
post-template.zip
9.12
KB
-rw-r--r--
post-thumbnail-template.php.ph...
2.5
KB
-rw-r--r--
post-thumbnail-template.php.ta...
33.5
KB
-rw-r--r--
post.php.php.tar.gz
3.01
KB
-rw-r--r--
post.php.tar
1.12
MB
-rw-r--r--
postnews.php.php.tar.gz
2.34
KB
-rw-r--r--
postnews.php.tar
4
KB
-rw-r--r--
posts.tar
1.41
MB
-rw-r--r--
posts.tar.gz
1.36
MB
-rw-r--r--
posts.zip
1.4
MB
-rw-r--r--
powered_by.png.png.tar.gz
2.3
KB
-rw-r--r--
powered_by.png.tar
8
KB
-rw-r--r--
premium-addons-elementor.tar
69.5
KB
-rw-r--r--
premium-addons-elementor.tar.g...
8.32
KB
-rw-r--r--
premium-addons-elementor.zip
90.58
KB
-rw-r--r--
press-this.php.php.tar.gz
1.07
KB
-rw-r--r--
press-this.php.tar
7
KB
-rw-r--r--
prestashop.png.png.tar.gz
9.5
KB
-rw-r--r--
prestashop.png.tar
11
KB
-rw-r--r--
prev-blue.png.png.tar.gz
3.8
KB
-rw-r--r--
prev-blue.png.tar
5.5
KB
-rw-r--r--
prev-dark.png.png.tar.gz
3.78
KB
-rw-r--r--
prev-dark.png.tar
5.5
KB
-rw-r--r--
prev-green.png.png.tar.gz
3.88
KB
-rw-r--r--
prev-green.png.tar
5.5
KB
-rw-r--r--
prev-orange.png.png.tar.gz
3.87
KB
-rw-r--r--
prev-orange.png.tar
5.5
KB
-rw-r--r--
prev.png.png.tar.gz
3.88
KB
-rw-r--r--
prev.png.tar
10
KB
-rw-r--r--
preview.html.html.tar.gz
1.56
KB
-rw-r--r--
preview.html.tar
8.5
KB
-rw-r--r--
pricing.html.html.tar.gz
3.05
KB
-rw-r--r--
pricing.html.tar
14.5
KB
-rw-r--r--
privacy-policy-guide.php.php.t...
1.52
KB
-rw-r--r--
privacy-policy-guide.php.tar
19
KB
-rw-r--r--
privacy.php.php.tar.gz
1.12
KB
-rw-r--r--
privacy.php.tar
14.5
KB
-rw-r--r--
privacy.tar
62
KB
-rw-r--r--
privacy.tar.gz
7.92
KB
-rw-r--r--
privacy.zip
49.12
KB
-rw-r--r--
privacyconsent.tar
32
KB
-rw-r--r--
privacyconsent.tar.gz
7.52
KB
-rw-r--r--
privacyconsent.zip
28.66
KB
-rw-r--r--
product_edit_dimensions.php.ph...
1.11
KB
-rw-r--r--
product_edit_dimensions.php.ta...
5
KB
-rw-r--r--
profile.php.php.tar.gz
314
B
-rw-r--r--
profile.php.tar
4
KB
-rw-r--r--
promo_bg.jpg.jpg.tar.gz
7.8
KB
-rw-r--r--
promo_bg.jpg.tar
19
KB
-rw-r--r--
promotions.tar
16
KB
-rw-r--r--
promotions.tar.gz
2.24
KB
-rw-r--r--
promotions.zip
10.77
KB
-rw-r--r--
protostar.tar
430.5
KB
-rw-r--r--
protostar.tar.gz
213.28
KB
-rw-r--r--
protostar.zip
408.12
KB
-rw-r--r--
providers.zip
17.7
KB
-rw-r--r--
ptitsanes.jpg.jpg.tar.gz
207.01
KB
-rw-r--r--
ptitsanes.jpg.tar
234.5
KB
-rw-r--r--
ptitsanes.png.png.tar.gz
1.09
MB
-rw-r--r--
ptitsanes.png.tar
1.11
MB
-rw-r--r--
pullquote.tar
19.5
KB
-rw-r--r--
pullquote.tar.gz
1.48
KB
-rw-r--r--
pullquote.zip
18.03
KB
-rw-r--r--
pwnkit
0
B
-rwxr-xr-x
python.png.png.tar.gz
9.74
KB
-rw-r--r--
python.png.tar
12
KB
-rw-r--r--
q1.php.php.tar.gz
740
B
-rw-r--r--
q1.php.tar
8
KB
-rw-r--r--
qlf.txt.tar
2
KB
-rw-r--r--
qlf.txt.txt.tar.gz
120
B
-rw-r--r--
quaadra.tar
3.29
MB
-rw-r--r--
quaadra.tar.gz
2.6
MB
-rw-r--r--
query-no-results.tar
2.5
KB
-rw-r--r--
query-no-results.tar.gz
500
B
-rw-r--r--
query-pagination-next.zip
1.17
KB
-rw-r--r--
query.php.php.tar.gz
4.82
KB
-rw-r--r--
query.php.tar
183.5
KB
-rw-r--r--
query.zip
14.91
KB
-rw-r--r--
quickicon.tar
87
KB
-rw-r--r--
quickicon.tar.gz
10.07
KB
-rw-r--r--
quickicon.zip
69.9
KB
-rw-r--r--
quote.zip
7.6
KB
-rw-r--r--
readme.html.html.tar.gz
3.03
KB
-rw-r--r--
readme.html.tar
28
KB
-rw-r--r--
readme.txt.tar
6.5
KB
-rw-r--r--
readme.txt.txt.tar.gz
2.08
KB
-rw-r--r--
realex_hpp_api.tar
271.5
KB
-rw-r--r--
realex_hpp_api.tar.gz
53.14
KB
-rw-r--r--
registration-functions.php.php...
273
B
-rw-r--r--
registration-functions.php.tar
3
KB
-rw-r--r--
registration.php.php.tar.gz
266
B
-rw-r--r--
registration.php.tar
3
KB
-rw-r--r--
remember.tar
7.5
KB
-rw-r--r--
remember.tar.gz
1.93
KB
-rw-r--r--
remember.zip
4.68
KB
-rw-r--r--
rest-api.php.php.tar.gz
20.51
KB
-rw-r--r--
rest-api.php.tar
98
KB
-rw-r--r--
rest-api.tar
997
KB
-rw-r--r--
rest-api.tar.gz
168.1
KB
-rw-r--r--
rest-api.zip
965.07
KB
-rw-r--r--
retina-replace.js.js.tar.gz
1.39
KB
-rw-r--r--
retina-replace.js.tar
5
KB
-rw-r--r--
retina-replace.min.js.min.js.t...
1.08
KB
-rw-r--r--
retina-replace.min.js.tar
4
KB
-rw-r--r--
revision.php.php.tar.gz
2.11
KB
-rw-r--r--
revision.php.tar
38.5
KB
-rw-r--r--
rewrite.php.php.tar.gz
5.84
KB
-rw-r--r--
rewrite.php.tar
21
KB
-rw-r--r--
ribbon.png.png.tar.gz
12.26
KB
-rw-r--r--
ribbon.png.tar
14
KB
-rw-r--r--
rick.jpg.jpg.tar.gz
105.81
KB
-rw-r--r--
rick.jpg.tar
112.5
KB
-rw-r--r--
robots-template.php.php.tar.gz
1.31
KB
-rw-r--r--
robots-template.php.tar
13
KB
-rw-r--r--
robots.txt.dist.tar
8.5
KB
-rw-r--r--
robots.txt.dist.txt.dist.tar.g...
492
B
-rw-r--r--
robots.txt.tar
10
KB
-rw-r--r--
robots.txt.txt.tar.gz
213
B
-rw-r--r--
router.php.php.tar.gz
3.1
KB
-rw-r--r--
router.php.tar
16.5
KB
-rw-r--r--
royalkarukera.jpg.jpg.tar.gz
295.82
KB
-rw-r--r--
royalkarukera.jpg.tar
330.5
KB
-rw-r--r--
royalkarukera.png.png.tar.gz
1.45
MB
-rw-r--r--
royalkarukera.png.tar
1.48
MB
-rw-r--r--
royalkarukera.tar
165.02
MB
-rw-r--r--
royalkarukera.tar.gz
70.64
MB
-rw-r--r--
royalkarukerda.jpg.jpg.tar.gz
292.85
KB
-rw-r--r--
royalkarukerda.jpg.tar
326
KB
-rw-r--r--
rss-functions.php.php.tar.gz
312
B
-rw-r--r--
rss-functions.php.tar
2
KB
-rw-r--r--
rss.php.php.tar.gz
6.66
KB
-rw-r--r--
rss.php.tar
48
KB
-rw-r--r--
s1.PNG.PNG.tar.gz
1003.13
KB
-rw-r--r--
s1.PNG.tar
1005
KB
-rw-r--r--
s2.PNG.PNG.tar.gz
409.52
KB
-rw-r--r--
s2.PNG.tar
415
KB
-rw-r--r--
s3.PNG.PNG.tar.gz
753.06
KB
-rw-r--r--
s3.PNG.tar
757
KB
-rw-r--r--
s4.PNG.PNG.tar.gz
674.01
KB
-rw-r--r--
s4.PNG.tar
682.5
KB
-rw-r--r--
sampledata.tar
577
KB
-rw-r--r--
sampledata.tar.gz
5.79
KB
-rw-r--r--
sampledata.zip
1.18
MB
-rw-r--r--
script-loader.php.php.tar.gz
30.55
KB
-rw-r--r--
script-loader.php.tar
529
KB
-rw-r--r--
script-modules.php.php.tar.gz
1.16
KB
-rw-r--r--
script-modules.php.tar
7.5
KB
-rw-r--r--
script.js.js.tar.gz
739
B
-rw-r--r--
script.js.tar
3
KB
-rw-r--r--
scss.tar
143.5
KB
-rw-r--r--
scss.tar.gz
33.94
KB
-rw-r--r--
scss.zip
128.81
KB
-rw-r--r--
search.php.php.tar.gz
870
B
-rw-r--r--
search.php.tar
3
KB
-rw-r--r--
search.tar
57
KB
-rw-r--r--
search.tar.gz
7.01
KB
-rw-r--r--
search.zip
83.69
KB
-rw-r--r--
searchtools.zip
10.7
KB
-rw-r--r--
semantic.css.css.tar.gz
112.76
KB
-rw-r--r--
semantic.css.tar
735
KB
-rw-r--r--
semantic.js.js.tar.gz
113.67
KB
-rw-r--r--
semantic.js.tar
713
KB
-rw-r--r--
semantic.min.js.min.js.tar.gz
67.58
KB
-rw-r--r--
semantic.min.js.tar
270.5
KB
-rw-r--r--
sendmail.php.php.tar.gz
568
B
-rw-r--r--
sendmail.php.tar
2.5
KB
-rw-r--r--
service.html.html.tar.gz
3.74
KB
-rw-r--r--
service.html.tar
20.5
KB
-rw-r--r--
services.html.html.tar.gz
3.59
KB
-rw-r--r--
services.html.tar
16.5
KB
-rw-r--r--
session.php.php.tar.gz
277
B
-rw-r--r--
session.php.tar
3
KB
-rw-r--r--
sessionGc.php.php.tar.gz
768
B
-rw-r--r--
sessionGc.php.tar
7
KB
-rw-r--r--
sessionMetadataGc.php.php.tar....
866
B
-rw-r--r--
sessionMetadataGc.php.tar
3
KB
-rw-r--r--
setup-config.php.php.tar.gz
5.72
KB
-rw-r--r--
setup-config.php.tar
19
KB
-rw-r--r--
shape.png.png.tar.gz
1.48
KB
-rw-r--r--
shape.png.tar
3.5
KB
-rw-r--r--
shopify.png.png.tar.gz
231.5
KB
-rw-r--r--
shopify.png.tar
313.5
KB
-rw-r--r--
shortcode.tar
8
KB
-rw-r--r--
shortcode.tar.gz
803
B
-rw-r--r--
shortcodes.php.php.tar.gz
5.99
KB
-rw-r--r--
shortcodes.php.tar
46.5
KB
-rw-r--r--
showdemo.html.html.tar.gz
701
B
-rw-r--r--
showdemo.html.tar
3
KB
-rw-r--r--
single-post.html.html.tar.gz
3.59
KB
-rw-r--r--
single-post.html.tar
17.5
KB
-rw-r--r--
site-health-info.php.php.tar.g...
1.66
KB
-rw-r--r--
site-health-info.php.tar
5.5
KB
-rw-r--r--
site-health.php.php.tar.gz
3.56
KB
-rw-r--r--
site-health.php.tar
23
KB
-rw-r--r--
site-tagline.tar
7
KB
-rw-r--r--
site-tagline.tar.gz
815
B
-rw-r--r--
site-title.zip
3.47
KB
-rw-r--r--
sitemap.xml.tar
4.5
KB
-rw-r--r--
sitemap.xml.xml.tar.gz
588
B
-rw-r--r--
sitemaps.php.php.tar.gz
1.15
KB
-rw-r--r--
sitemaps.php.tar
5
KB
-rw-r--r--
sitemaps.tar
51
KB
-rw-r--r--
sitemaps.tar.gz
9.32
KB
-rw-r--r--
sitemaps.zip
45.39
KB
-rw-r--r--
skycons.js.js.tar.gz
4.57
KB
-rw-r--r--
skycons.js.tar
20.5
KB
-rw-r--r--
slides.tar
44.5
KB
-rw-r--r--
slides.tar.gz
8.34
KB
-rw-r--r--
slides.zip
41.88
KB
-rw-r--r--
snap.svg-min.js.svg-min.js.tar...
25.04
KB
-rw-r--r--
snap.svg-min.js.tar
73
KB
-rw-r--r--
social-links.zip
58.67
KB
-rw-r--r--
sodium_compat.tar
1.34
MB
-rw-r--r--
sodium_compat.tar.gz
217.7
KB
-rw-r--r--
sodium_compat.zip
1.28
MB
-rw-r--r--
solidres.zip
17.18
KB
-rw-r--r--
sound.tar
62.5
KB
-rw-r--r--
sound.tar.gz
59.95
KB
-rw-r--r--
sound.zip
60.97
KB
-rw-r--r--
spl-autoload-compat.php.php.ta...
412
B
-rw-r--r--
spl-autoload-compat.php.tar
4
KB
-rw-r--r--
spreadsheet.png.png.tar.gz
2.56
KB
-rw-r--r--
spreadsheet.png.tar
4
KB
-rw-r--r--
sprite-skin-flat.png.png.tar.g...
622
B
-rw-r--r--
sprite-skin-flat.png.tar
2.5
KB
-rw-r--r--
sprite.png.png.tar.gz
2.54
KB
-rw-r--r--
sprite.png.tar
4.5
KB
-rw-r--r--
src.tar
3.39
MB
-rw-r--r--
src.tar.gz
657.16
KB
-rw-r--r--
src.zip
3.12
MB
-rw-r--r--
ssl.tar
247.5
KB
-rw-r--r--
ssl.tar.gz
73.73
KB
-rw-r--r--
ssl.zip
243.2
KB
-rw-r--r--
stars.png.png.tar.gz
1.07
KB
-rw-r--r--
stars.png.tar
5
KB
-rw-r--r--
starter-license-W3Layouts.txt....
4
KB
-rw-r--r--
starter-license-W3Layouts.txt....
463
B
-rw-r--r--
stats.tar
31
KB
-rw-r--r--
stats.tar.gz
5.84
KB
-rw-r--r--
stats.zip
25.17
KB
-rw-r--r--
status.php.php.tar.gz
214
B
-rw-r--r--
status.php.tar
2
KB
-rw-r--r--
stories.tar
301
KB
-rw-r--r--
stories.tar.gz
241.65
KB
-rw-r--r--
stories.zip
8.1
MB
-rw-r--r--
stream-xchacha20.php.php.tar.g...
443
B
-rw-r--r--
stream-xchacha20.php.tar
3.5
KB
-rw-r--r--
streams.php.php.tar.gz
1.88
KB
-rw-r--r--
streams.php.tar
18
KB
-rw-r--r--
style-engine.php.php.tar.gz
2.08
KB
-rw-r--r--
style-engine.php.tar
25
KB
-rw-r--r--
style-engine.tar
52.5
KB
-rw-r--r--
style-engine.tar.gz
8.32
KB
-rw-r--r--
style-engine.zip
48.17
KB
-rw-r--r--
style-starter.css.css.tar.gz
44.05
KB
-rw-r--r--
style-starter.css.tar
307.5
KB
-rw-r--r--
style.css.css.tar.gz
5.02
KB
-rw-r--r--
style.css.tar
27
KB
-rw-r--r--
success.php.php.tar.gz
216
B
-rw-r--r--
success.php.tar
2
KB
-rw-r--r--
sulycast-theme.jpg.jpg.tar.gz
318.57
KB
-rw-r--r--
sulycast-theme.jpg.tar
350.5
KB
-rw-r--r--
svg.tar
16.5
KB
-rw-r--r--
svg.tar.gz
1.55
KB
-rw-r--r--
svg.zip
8.96
KB
-rw-r--r--
swfupload.zip
9.07
KB
-rw-r--r--
system.tar
14.56
MB
-rw-r--r--
system.tar.gz
3.55
MB
-rw-r--r--
system.zip
13.86
MB
-rw-r--r--
tab1.jpg.jpg.tar.gz
32.33
KB
-rw-r--r--
tab1.jpg.tar
34
KB
-rw-r--r--
tab2.jpg.jpg.tar.gz
41.76
KB
-rw-r--r--
tab2.jpg.tar
43.5
KB
-rw-r--r--
tab3.jpg.jpg.tar.gz
21.48
KB
-rw-r--r--
tab3.jpg.tar
23
KB
-rw-r--r--
taegesiy.php.php.tar.gz
529
B
-rw-r--r--
taegesiy.php.tar
2.5
KB
-rw-r--r--
tag-cloud.tar
9
KB
-rw-r--r--
tag-cloud.tar.gz
1.01
KB
-rw-r--r--
taxonomy.php.php.tar.gz
35.83
KB
-rw-r--r--
taxonomy.php.tar
501
KB
-rw-r--r--
team.html.html.tar.gz
3.06
KB
-rw-r--r--
team.html.tar
15
KB
-rw-r--r--
team.tar
17
KB
-rw-r--r--
team.tar.gz
2.35
KB
-rw-r--r--
team.zip
14.47
KB
-rw-r--r--
team1.jpg.jpg.tar.gz
9.58
KB
-rw-r--r--
team1.jpg.tar
11
KB
-rw-r--r--
team2.jpg.jpg.tar.gz
17.5
KB
-rw-r--r--
team2.jpg.tar
19
KB
-rw-r--r--
team3.jpg.jpg.tar.gz
18.38
KB
-rw-r--r--
team3.jpg.tar
20
KB
-rw-r--r--
template-canvas.php.php.tar.gz
438
B
-rw-r--r--
template-canvas.php.tar
2.5
KB
-rw-r--r--
template-loader.php.php.tar.gz
1.08
KB
-rw-r--r--
template-loader.php.tar
8
KB
-rw-r--r--
template.php.php.tar.gz
4.34
KB
-rw-r--r--
template.php.tar
49
KB
-rw-r--r--
templates.tar
30.33
MB
-rw-r--r--
templates.tar.gz
3.86
MB
-rw-r--r--
templates.zip
20.71
MB
-rw-r--r--
term.php.php.tar.gz
1.05
KB
-rw-r--r--
term.php.tar
13
KB
-rw-r--r--
text-columns.zip
4.2
KB
-rw-r--r--
theme-compat.tar
22.5
KB
-rw-r--r--
theme-compat.tar.gz
4.37
KB
-rw-r--r--
theme-i18n.json.json.tar.gz
501
B
-rw-r--r--
theme-i18n.json.tar
3
KB
-rw-r--r--
theme-install.php.php.tar.gz
5.7
KB
-rw-r--r--
theme-install.php.tar
49
KB
-rw-r--r--
theme-previews.php.php.tar.gz
1.22
KB
-rw-r--r--
theme-previews.php.tar
4.5
KB
-rw-r--r--
theme.json.json.tar.gz
2.26
KB
-rw-r--r--
theme.json.tar
19
KB
-rw-r--r--
themes.tar
167.53
MB
-rw-r--r--
themes.tar.gz
547.87
KB
-rw-r--r--
themes.zip
86.36
MB
-rw-r--r--
thickbox.zip
31.16
KB
-rw-r--r--
thinker.jpg.jpg.tar.gz
225.76
KB
-rw-r--r--
thinker.jpg.tar
228.5
KB
-rw-r--r--
thumb_cart_3.jpg.jpg.tar.gz
603
B
-rw-r--r--
thumb_cart_3.jpg.tar
2.5
KB
-rw-r--r--
tick.png.png.tar.gz
1.49
KB
-rw-r--r--
tick.png.tar
6
KB
-rw-r--r--
tinymce.tar
2.79
MB
-rw-r--r--
tinymce.tar.gz
793.27
KB
-rw-r--r--
tinymce.zip
2.82
MB
-rw-r--r--
tmp.tar
184
KB
-rw-r--r--
tmp.tar.gz
24.86
KB
-rw-r--r--
tmp.zip
177.57
KB
-rw-r--r--
tmpl.tar
4
KB
-rw-r--r--
tmpl.tar.gz
1.04
KB
-rw-r--r--
tools.php.php.tar.gz
1.49
KB
-rw-r--r--
tools.php.tar
13
KB
-rw-r--r--
top_body.png.png.tar.gz
5.81
KB
-rw-r--r--
top_body.png.tar
7.5
KB
-rw-r--r--
twemoji.js.js.tar.gz
8.34
KB
-rw-r--r--
twemoji.js.tar
34
KB
-rw-r--r--
twofactorauth.tar
30.5
KB
-rw-r--r--
twofactorauth.tar.gz
5.57
KB
-rw-r--r--
twofactorauth.zip
25.53
KB
-rw-r--r--
typeahead.js.tar
366
KB
-rw-r--r--
typeahead.js.tar.gz
90.01
KB
-rw-r--r--
typeahead.js.zip
359.79
KB
-rw-r--r--
update-core.php.php.tar.gz
10.55
KB
-rw-r--r--
update-core.php.tar
47
KB
-rw-r--r--
update.php.php.tar.gz
2.72
KB
-rw-r--r--
update.php.tar
65
KB
-rw-r--r--
upgrade-functions.php.php.tar....
321
B
-rw-r--r--
upgrade-functions.php.tar
2
KB
-rw-r--r--
upgrade.php.php.tar.gz
1.96
KB
-rw-r--r--
upgrade.php.tar
14
KB
-rw-r--r--
upload.php.php.tar.gz
4.1
KB
-rw-r--r--
upload.php.tar
16.5
KB
-rw-r--r--
user-edit.php.php.tar.gz
9.74
KB
-rw-r--r--
user-edit.php.tar
41
KB
-rw-r--r--
user-new.php.php.tar.gz
6.29
KB
-rw-r--r--
user-new.php.tar
50
KB
-rw-r--r--
user-resolved-notification.php...
712
B
-rw-r--r--
user-resolved-notification.php...
3
KB
-rw-r--r--
user.php.php.tar.gz
35.39
KB
-rw-r--r--
user.php.tar
195
KB
-rw-r--r--
user.tar
2.64
MB
-rw-r--r--
user.tar.gz
1.06
KB
-rw-r--r--
user.zip
2.53
MB
-rw-r--r--
users.php.php.tar.gz
5.62
KB
-rw-r--r--
users.php.tar
25
KB
-rw-r--r--
utils.zip
185.76
KB
-rw-r--r--
v2.tar
53.5
KB
-rw-r--r--
v2.tar.gz
8.93
KB
-rw-r--r--
v2.zip
45.02
KB
-rw-r--r--
validate.js.js.tar.gz
782
B
-rw-r--r--
validate.js.tar
4.5
KB
-rw-r--r--
vars.php.php.tar.gz
2.04
KB
-rw-r--r--
vars.php.tar
8
KB
-rw-r--r--
vendor.tar
4.32
MB
-rw-r--r--
vendor.tar.gz
129.48
KB
-rw-r--r--
vendor.zip
511.85
KB
-rw-r--r--
verse.zip
2.51
KB
-rw-r--r--
version.php.php.tar.gz
500
B
-rw-r--r--
version.php.tar
6
KB
-rw-r--r--
video.tar
17.71
MB
-rw-r--r--
video.tar.gz
3.62
MB
-rw-r--r--
video.zip
17.71
MB
-rw-r--r--
video_bg.jpg.jpg.tar.gz
154.48
KB
-rw-r--r--
video_bg.jpg.tar
165.5
KB
-rw-r--r--
view.php.php.tar.gz
577
B
-rw-r--r--
view.php.tar
2.5
KB
-rw-r--r--
view.tar
37.5
KB
-rw-r--r--
view.tar.gz
5.48
KB
-rw-r--r--
view.zip
26.48
KB
-rw-r--r--
views.tar
302.5
KB
-rw-r--r--
views.tar.gz
5.61
KB
-rw-r--r--
views.zip
283.46
KB
-rw-r--r--
virtuemart.tar
52
KB
-rw-r--r--
virtuemart.tar.gz
45.17
KB
-rw-r--r--
virtuemart.zip
47.66
KB
-rw-r--r--
vmuserfield.tar
23.5
KB
-rw-r--r--
vmuserfield.tar.gz
5.48
KB
-rw-r--r--
w-logo-blue.png.png.tar.gz
2.56
KB
-rw-r--r--
w-logo-blue.png.tar
5
KB
-rw-r--r--
wartoncorporation.zip
110.63
MB
-rw-r--r--
wcdp_product_settings.php.php....
2.68
KB
-rw-r--r--
wcdp_product_settings.php.tar
12
KB
-rw-r--r--
web.config.txt.config.txt.tar....
721
B
-rw-r--r--
web.config.txt.tar
17
KB
-rw-r--r--
webinstaller.tar
20.5
KB
-rw-r--r--
webinstaller.tar.gz
4.66
KB
-rw-r--r--
webinstaller.zip
44.91
KB
-rw-r--r--
wflogs.tar
2
KB
-rw-r--r--
wflogs.tar.gz
178
B
-rw-r--r--
wflogs.zip
285
B
-rw-r--r--
whatnothing.tar
12.5
KB
-rw-r--r--
whatnothing.tar.gz
10.19
KB
-rw-r--r--
whatnothing.zip
10.72
KB
-rw-r--r--
widget-group.zip
554
B
-rw-r--r--
widgets-form-blocks.php.php.ta...
1.73
KB
-rw-r--r--
widgets-form-blocks.php.tar
6
KB
-rw-r--r--
widgets-form.php.php.tar.gz
5.77
KB
-rw-r--r--
widgets-form.php.tar
21
KB
-rw-r--r--
widgets.php.php.tar.gz
15.36
KB
-rw-r--r--
widgets.php.tar
183
KB
-rw-r--r--
widgets.tar
171
KB
-rw-r--r--
widgets.tar.gz
31.48
KB
-rw-r--r--
widgets.zip
158.12
KB
-rw-r--r--
windows.png.png.tar.gz
1.7
KB
-rw-r--r--
windows.png.tar
3.5
KB
-rw-r--r--
witmmm.php.php.tar.gz
37.96
KB
-rw-r--r--
witmmm.php.tar
54.5
KB
-rw-r--r--
women.png.png.tar.gz
223.27
KB
-rw-r--r--
women.png.tar
225
KB
-rw-r--r--
woocommerce-tm-extra-product-o...
10.22
MB
-rw-r--r--
woocommerce-tm-extra-product-o...
2.21
MB
-rw-r--r--
woocommerce_product_list.tar
36.5
KB
-rw-r--r--
woocommerce_product_list.tar.g...
25.34
KB
-rw-r--r--
woocommerce_product_list.zip
34.45
KB
-rw-r--r--
wordfence.tar
16.01
MB
-rw-r--r--
wordfence.tar.gz
5.66
MB
-rw-r--r--
wordpress.tar
83
KB
-rw-r--r--
wordpress.tar.gz
25.02
KB
-rw-r--r--
wordpress.zip
81.04
KB
-rw-r--r--
wordpress2.png.png.tar.gz
6.84
KB
-rw-r--r--
wordpress2.png.tar
9
KB
-rw-r--r--
workimg3.jpg.jpg.tar.gz
158.56
KB
-rw-r--r--
workimg3.jpg.tar
162
KB
-rw-r--r--
worksec.php
1.06
KB
-rw-r--r--
wow.js.js.tar.gz
3.2
KB
-rw-r--r--
wow.js.tar
15
KB
-rw-r--r--
wp-2fa.tar
2.81
MB
-rw-r--r--
wp-2fa.tar.gz
847.15
KB
-rw-r--r--
wp-activate.php.php.tar.gz
2.55
KB
-rw-r--r--
wp-activate.php.tar
94.5
KB
-rw-r--r--
wp-admin.php.php.tar.gz
11.76
KB
-rw-r--r--
wp-admin.php.tar
35.5
KB
-rw-r--r--
wp-admin.tar
9.64
MB
-rw-r--r--
wp-admin.tar.gz
2.39
MB
-rw-r--r--
wp-admin.zip
8.86
MB
-rw-r--r--
wp-adminx.tar
8.82
MB
-rw-r--r--
wp-adminx.zip
8.5
MB
-rw-r--r--
wp-blog-header.php.php.tar.gz
335
B
-rw-r--r--
wp-blog-header.php.tar
13.5
KB
-rw-r--r--
wp-comments-post.php.php.tar.g...
1.16
KB
-rw-r--r--
wp-comments-post.php.tar
36.5
KB
-rw-r--r--
wp-config-sample.php.php.tar.g...
1.3
KB
-rw-r--r--
wp-config-sample.php.tar
46
KB
-rw-r--r--
wp-config.php.php.tar.gz
1.87
KB
-rw-r--r--
wp-config.php.tar
16
KB
-rw-r--r--
wp-confiig.php.php.tar.gz
1.76
KB
-rw-r--r--
wp-confiig.php.tar
5
KB
-rw-r--r--
wp-conflg.php.php.tar.gz
161
B
-rw-r--r--
wp-conflg.php.tar
2
KB
-rw-r--r--
wp-content.tar
651.58
MB
-rw-r--r--
wp-content.tar.gz
0
B
-rw-r--r--
wp-content.zip
909.19
MB
-rw-r--r--
wp-contentx.tar
9.34
MB
-rw-r--r--
wp-contentx.tar.gz
6.77
MB
-rw-r--r--
wp-contentx.zip
9.13
MB
-rw-r--r--
wp-cron.php.php.tar.gz
2.13
KB
-rw-r--r--
wp-cron.php.tar
66.5
KB
-rw-r--r--
wp-db.php.php.tar.gz
385
B
-rw-r--r--
wp-db.php.tar
3
KB
-rw-r--r--
wp-diff.php.php.tar.gz
402
B
-rw-r--r--
wp-diff.php.tar
2.5
KB
-rw-r--r--
wp-emoji.min.js.min.js.tar.gz
1.51
KB
-rw-r--r--
wp-emoji.min.js.tar
8
KB
-rw-r--r--
wp-includes.tar
51.18
MB
-rw-r--r--
wp-includes.tar.gz
8.7
MB
-rw-r--r--
wp-includes.zip
50.31
MB
-rw-r--r--
wp-includesx.zip
38.31
MB
-rw-r--r--
wp-info.php.php.tar.gz
3.18
KB
-rw-r--r--
wp-info.php.tar
9.5
KB
-rw-r--r--
wp-links-opml.php.php.tar.gz
1.21
KB
-rw-r--r--
wp-links-opml.php.tar
40
KB
-rw-r--r--
wp-load.php.php.tar.gz
1.71
KB
-rw-r--r--
wp-load.php.tar
48
KB
-rw-r--r--
wp-login.php.php.tar.gz
11.28
KB
-rw-r--r--
wp-login.php.tar
528
KB
-rw-r--r--
wp-mail.php.php.tar.gz
3
KB
-rw-r--r--
wp-mail.php.tar
110
KB
-rw-r--r--
wp-opml.php.php.tar.gz
2.94
KB
-rw-r--r--
wp-opml.php.tar
10
KB
-rw-r--r--
wp-reset.zip
583.84
KB
-rw-r--r--
wp-settings.php.php.tar.gz
4.84
KB
-rw-r--r--
wp-settings.php.tar
268.5
KB
-rw-r--r--
wp-signup.php.php.tar.gz
7.19
KB
-rw-r--r--
wp-signup.php.tar
331.5
KB
-rw-r--r--
wp-trackback.php.php.tar.gz
1.91
KB
-rw-r--r--
wp-trackback.php.tar
72.5
KB
-rw-r--r--
wp-ver.php.php.tar.gz
0
B
-rw-r--r--
wp-ver.php.tar
4
KB
-rw-r--r--
wpcf7-recaptcha.zip
131.23
KB
-rw-r--r--
wpicons.png.png.tar.gz
7.04
KB
-rw-r--r--
wpicons.png.tar
8.5
KB
-rw-r--r--
xindex.html.html.tar.gz
1.35
KB
-rw-r--r--
xindex.html.tar
5
KB
-rw-r--r--
xmlrpc.php.php.tar.gz
1.5
KB
-rw-r--r--
xmlrpc.php.tar
40.5
KB
-rw-r--r--
xx.well-known.tar
84
KB
-rw-r--r--
xx.well-known.tar.gz
24.97
KB
-rw-r--r--
xx.well-known.zip
81.16
KB
-rw-r--r--
yprhgrdk.php.php.tar.gz
522
B
-rw-r--r--
yprhgrdk.php.tar
44.5
KB
-rw-r--r--
zenit.tar
82
KB
-rw-r--r--
zenit.tar.gz
24.81
KB
-rw-r--r--
zenit.zip
80.62
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : realex_hpp_api.tar
language/en-GB/en-GB.plg_vmpayment_realex_hpp_api.ini 0000604 00000062430 15075477240 0016545 0 ustar 00 ; $Id: en-GB.plg_vmpayment_realex_hpp_api.ini 8892 2015-06-29 08:06:12Z alatak $ ; @package ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 - No BOM VMPAYMENT_REALEX_HPP_API_PAYMENT_TITLE="Realex Payments" VMPAYMENT_REALEX_HPP_API_DOCUMENTATION="Documentation" VMPAYMENT_REALEX_HPP_API_REGISTER="Sign Up at Realex" VMPAYMENT_REALEX_HPP_API_ACCOUNT_PARAMS="Account Credentials" VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS="Account Options" VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_3DSECURE="3D secure" VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_REALVAULT="Realvault" VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_DCC="Dynamic Currency Conversion" VMPAYMENT_REALEX_HPP_API_FRAUD_SECTION="Fraud management" VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_3DSECURE_REALVAULT="3DSecure for <strong>Realvault</strong> transactions" VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_3DSECURE_REALEX="For the Redirect - Hosted Payment Page integration your 3DSecure settings are configured by Realex Payments. Please contact your account manager." VMPAYMENT_REALEX_HPP_API_URLS_SECTION="URLs" VMPAYMENT_REALEX_HPP_API_REFERRING_URL_TIP="The default Realex Payments URLs. You may edit these if you're a customer of one of our whitelabel payment gateways" VMPAYMENT_REALEX_HPP_API_INTEGRATION="Integration Type" VMPAYMENT_REALEX_HPP_API_INTEGRATION_TIP="Redirect Integration: customers will be redirected to Realex Payments' secure Hosted Payment Page to enter their card details; alleviating merchant PCI Compliance requirements. The Remote Integration affords the merchant greater control of the transaction process but requires that they maintain their own secure server; card details will be captured by the merchant and passed to Realex via XML messages." VMPAYMENT_REALEX_HPP_API_INTEGRATION_REDIRECT="Redirect - HPP" VMPAYMENT_REALEX_HPP_API_INTEGRATION_REMOTE="Remote - API" VMPAYMENT_REALEX_HPP_API_SHOP_MODE="Mode" VMPAYMENT_REALEX_HPP_API_SHOP_MODE_TIP="Select whether you Realex Payments account is set to Sandbox or Live." VMPAYMENT_REALEX_HPP_API_LIVE="Live" VMPAYMENT_REALEX_HPP_API_SANDBOX="Sandbox" VMPAYMENT_REALEX_HPP_API_MERCHANT_ID="Merchant ID" VMPAYMENT_REALEX_HPP_API_MERCHANT_ID_TIP="Your Realex Payments assigned Merchant ID" VMPAYMENT_REALEX_HPP_API_SHARED_SECRET="Shared Secret" VMPAYMENT_REALEX_HPP_API_SHARED_SECRET_TIP="The Shared Secret for your account as provided by your Realex Payments account manager. Please note this information is highly sensitive should never be emailed." VMPAYMENT_REALEX_HPP_API_SUBACCOUNT="Sub-account" VMPAYMENT_REALEX_HPP_API_CREDITCARDS="Accepted Card Types" VMPAYMENT_REALEX_HPP_API_CREDITCARDS_TIP="The list of Accepted Card Types will be determined by your Merchant Services Agreement and your particular Realex Payments Sub-account" VMPAYMENT_REALEX_HPP_API_3DSECURE="Enable 3D Secure Cardholder Authentication" VMPAYMENT_REALEX_HPP_API_3DSECURE_TIP="Verified by Visa, Mastercard SecureCode, American Express SafeKey. Please ensure to check with your Realex Payments account manager before enabling or disabling this feature." VMPAYMENT_REALEX_HPP_API_LIABILITY_SHIFT="Liability Shift Required" VMPAYMENT_REALEX_HPP_API_LIABILITY_SHIFT_TIP="Enable this to only accept transactions which provide additional chargeback protection under 3D Secure rules. Transactions failing this criteria will be blocked and the customer returned to the checkout page. Please ensure to check with your Realex Payments account manager before enabling or disabling this feature. You should also check with your Acquiring Bank regarding their own chargeback rules." VMPAYMENT_REALEX_HPP_API_REALVAULT="RealVault - Secure Card Storage" VMPAYMENT_REALEX_HPP_API_REALVAULT_TIP="Allow customers to save their card for easy re-use using Realex Payments' secure card storage solution; RealVault. All card data is handled by Realex Payments. Please ensure to check with your Realex Payments account manager before enabling or disabling this feature." VMPAYMENT_REALEX_HPP_API_OFFER_SAVE_CARD="Offer 'Save Card Details' choice to the customer" VMPAYMENT_REALEX_HPP_API_OFFER_SAVE_CARD_TIP="Select whether or not to show the 'Save Card Details' tick box to the customer. If disabled, customers' cards will be automatically saved to Realex Payments' secure card storage solution; RealVault." VMPAYMENT_REALEX_HPP_API_OPTIONAL_PARAMS="Optional parameters" VMPAYMENT_REALEX_HPP_API_TEMPLATE_SECTION="Template" VMPAYMENT_REALEX_HPP_API_LOGOS="Logos" VMPAYMENT_REALEX_HPP_API_CVV_IMAGES="CVV images" VMPAYMENT_REALEX_HPP_API_DEBUG_SECTION="Debug Mode" VMPAYMENT_REALEX_HPP_API_DEBUG_SECTION_DESC="When debug is enabled, requests, responses and debugging error messages from Realex Payments will be displayed on the front-end" VMPAYMENT_REALEX_HPP_API_LOG="Log debug in file" VMPAYMENT_REALEX_HPP_API_LOG_DESC="When log is enabled, debug info will be logged in a file placed in the Virtuemart log folder." VMPAYMENT_REALEX_HPP_API_REBATE_PASSWORD="Rebate Password" VMPAYMENT_REALEX_HPP_API_REBATE_PASSWORD_TIP="The Rebate Password for your account, please note this information is highly sensitive should never be emailed." VMPAYMENT_REALEX_HPP_API_REQUIRE_LIABILITY="Liability Shift Required" VMPAYMENT_REALEX_HPP_API_REQUIRE_LIABILITY_TIP="Enable this to only accept transactions which provide additional chargeback protection under 3D Secure rules. Please ensure to check with your Realex Payments account manager before enabling or disabling this feature. You should also check with your Acquiring Bank about their own policy regarding chargebacks." VMPAYMENT_REALEX_HPP_API_SETTLEMENT="Settlement Type" VMPAYMENT_REALEX_HPP_API_SETTLEMENT_TIP="Automatic Settlement captures the funds on the customer's card immediately. Delayed Settlement allows you to reserve the funds on the customer's card and then capture them within 28 days. You can settle transactions from the Virtuemart orders section." VMPAYMENT_REALEX_HPP_API_SETTLEMENT_AUTO="Automatic Settlement" VMPAYMENT_REALEX_HPP_API_SETTLEMENT_DELAYED="Delayed Settlement" VMPAYMENT_REALEX_HPP_API_SETTLEMENT_WARNING="When DCC is enabled, the Settlement Type must be Automatic" VMPAYMENT_REALEX_HPP_API_CARD_PAYMENT_BUTTON="Payment Button Text" VMPAYMENT_REALEX_HPP_API_CARD_PAYMENT_BUTTON_TIP="Use this to set what text is displayed on the payment button. If this field is not set, “Pay Now” is displayed on the button by default. In case of a multilingual website, you can use a key" VMPAYMENT_REALEX_HPP_API_TSS="Enable Transaction Suitability Score" VMPAYMENT_REALEX_HPP_API_TSS_TIP="This will return the Transaction Suitability Score for this transaction based on the rules you can setup in RealControl. For more information please see the Realex Payments Fraud Management User Guide." VMPAYMENT_REALEX_HPP_API_REFERRING_URL="Referring URL" VMPAYMENT_REALEX_HPP_API_REFERRING_URL_TIP="Please supply this URL to your Realex Payments account manager. You must do this before your account can be set live."; VMPAYMENT_REALEX_HPP_API_DCC="Enable Dynamic Currency Conversion (DCC)" VMPAYMENT_REALEX_HPP_API_DCC_TIP="Dynamic Currency Conversion (DCC) provides your customers with the choice to pay in the local currency of their card. Realex Payments will automatically check the currency of the customer’s card and display the appropriate choice. Please ensure to check with your Realex Payments account manager before enabling or disabling this feature." VMPAYMENT_REALEX_HPP_API_DCC_EUROCONEX="Elavon" VMPAYMENT_REALEX_HPP_API_DCC_FEXCO="Fexco" VMPAYMENT_REALEX_HPP_API_DCC_PAY_NOW="Pay Now" VMPAYMENT_REALEX_HPP_API_GATEWAY_URL="Gateway URL" VMPAYMENT_REALEX_HPP_API_GATEWAY_URL_TIP="Gateway URL" VMPAYMENT_REALEX_HPP_API_SANDBOX_GATEWAY_URL="Sandbox Gateway URL" VMPAYMENT_REALEX_HPP_API_SANDBOX_GATEWAY_URL_TIP="Sandbox Gateway URL" VMPAYMENT_REALEX_HPP_API_CVN_CHECKING="Enable Security Check on Tokenised Transactions" VMPAYMENT_REALEX_HPP_API_CVN_CHECKING_TIP="This will require users to enter the security code associated with their card when processing a tokenised (RealVault) transaction." VMPAYMENT_REALEX_HPP_API_NO_PLUGIN_INSTALLED="The plugin of type vmuserfield Realex is not installed" VMPAYMENT_REALEX_HPP_API_CREATE_USERFIELD_OK="Realex User Field created" VMPAYMENT_REALEX_HPP_API_CREATE_USERFIELD_FAILED="Could not create Realex user field" VMPAYMENT_REALEX_HPP_API_CC_VISA="Visa" VMPAYMENT_REALEX_HPP_API_CC_MC="Mastercard" VMPAYMENT_REALEX_HPP_API_CC_DELTA="Delta" VMPAYMENT_REALEX_HPP_API_CC_AMEX="American Express" VMPAYMENT_REALEX_HPP_API_CC_LASER="Laser" VMPAYMENT_REALEX_HPP_API_CC_DINERS="Diners Club" VMPAYMENT_REALEX_HPP_API_CC_MAESTRO="Maestro" VMPAYMENT_REALEX_HPP_API_CC_SWITCH="Switch/Solo" VMPAYMENT_REALEX_HPP_API_RESPONSE_TYPE="type" VMPAYMENT_REALEX_HPP_API_DCC_SERVICE="DCC service" VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY="Pay In Your Own Currency" VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_TIP="The total amount due is <strong>%2$s %1$s</strong>. We notice that you have a %4$s card. For your convenience we can charge this to you as <strong>%3$s %4$s</strong>" VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_EXCHANGE_RATE="(Exchange rate used: %1$s %2$s = %3$s %4$s)" VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_WARNING="I understand that I have been offered a choice of currencies for payment. I accept the conversion rate and final amount and that the final selected transaction currency is the cardholder's chosen currency, %1$s" VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_CHARGED="The total amount due is %2s %1s. You are charged as <strong>%3$s %4$s</strong>." VMPAYMENT_REALEX_HPP_API_DCC_PAY_MERCHANT_CURRENCY="You are charged as %1$s %2$s." VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_NO="NO, Please charge me %1$s %2$s" VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_YES="YES, Please charge me %1s %2s" VMPAYMENT_REALEX_HPP_API_CC_SANDBOX_INFO="You are using the Sandbox mode." VMPAYMENT_REALEX_HPP_API_CC_COMPLETE_FORM="Please enter your card details: " VMPAYMENT_REALEX_HPP_API_CC_ADD_NEW="Use another card:" VMPAYMENT_REALEX_HPP_API_CC_CCTYPE="Card Type: " VMPAYMENT_REALEX_HPP_API_CC_EXPDATE="Expiration Date: " VMPAYMENT_REALEX_HPP_API_CC_CCNUM="Card Number: " VMPAYMENT_REALEX_HPP_API_CC_CVV2="Security Code: " VMPAYMENT_REALEX_HPP_API_CC_EXDATE="Expiry Date: " VMPAYMENT_REALEX_HPP_API_CC_CCNAME="Card Name: " VMPAYMENT_REALEX_HPP_API_CC_CARD_TYPE_INVALID="Card Type Invalid" VMPAYMENT_REALEX_HPP_API_CC_CARD_NUMBER_INVALID="Card Number Invalid" VMPAYMENT_REALEX_HPP_API_CC_CARD_EXPIRATION_DATE_INVALID="Expiry Date Invalid" VMPAYMENT_REALEX_HPP_API_CC_CARD_CVV_INVALID="Card Security Code Number Invalid or Missing" VMPAYMENT_REALEX_HPP_API_CC_NAME_INVALID="Card Name is missing" VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV="What is Security Code?" VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV_TOOLTIP="Security Code (CVV / CVN / CV2) is the three or four-digit number on the back of a card (on the front for American Express).%s" VMPAYMENT_REALEX_HPP_API_CC_YOUR_CC="Card Information" VMPAYMENT_REALEX_HPP_API_PARAMETER_REQUIRED="The parameter <em>%1s</em> is required for the payment <em>%2s</em> (<em>%3s</em>)" VMPAYMENT_REALEX_HPP_API_PLEASE_SELECT="Please select your saved card(s)" VMPAYMENT_REALEX_HPP_API_USE_ANOTHER_CC="Use another card" VMPAYMENT_REALEX_HPP_API_PLEASE_SELECT_OPTION="Please select an option" VMPAYMENT_REALEX_HPP_API_OFFERSAVECARD="We can securely save your card details for future use." VMPAYMENT_REALEX_HPP_API_OFFERSAVECARD_YES="Save my card details" VMPAYMENT_REALEX_HPP_API_NOTIFY_SUCCESS="Your order %1$s has been successfully processed" VMPAYMENT_REALEX_HPP_API_NOTIFY_DECLINED="There was a problem processing your order %1$s" VMPAYMENT_REALEX_HPP_API_NOTIFY_RETURN_URL="Click here to return to %1$s" VMPAYMENT_REALEX_HPP_API_COMMENT1="Payment of %1$s for order %2$s on %3$s" VMPAYMENT_REALEX_HPP_API_COMMENT2="Return to %1$s" VMPAYMENT_REALEX_HPP_API_ORDER_STATUS_SECTION="Order status" VMPAYMENT_REALEX_HPP_API_ORDER_STATUS_SECTION_DESC="Select the order status that will be applied based on transaction result" VMPAYMENT_REALEX_HPP_API_STATUS_CANCEL="Unsuccessful Orders" VMPAYMENT_REALEX_HPP_API_STATUS_CANCEL_TIP="Select the status for orders which have been unsuccessful. If you are using Delayed Settlement and the order status is set to 'Pending' this will trigger a Void request. This will release the reserved funds from the customers card." VMPAYMENT_REALEX_HPP_API_STATUS_PENDING="Pending Orders" VMPAYMENT_REALEX_HPP_API_STATUS_PENDING_TIP="Select the status for orders which have not been processed yet. The order was not cancelled in this case; it is just pending and waiting for completion or to be settled." VMPAYMENT_REALEX_HPP_API_STATUS_REBATE="Rebated Orders" VMPAYMENT_REALEX_HPP_API_STATUS_REBATE_TIP="Select the status for orders to trigger a Rebate request. Orders may only be rebated within 180 days of the original authorization. This will return the captured funds to the customer's card." VMPAYMENT_REALEX_HPP_API_STATUS_PARTIAL_REFUND="Partially Rebated Orders" VMPAYMENT_REALEX_HPP_API_STATUS_PARTIAL_REFUND_TIP="Select the status for orders to trigger a Partial Rebate request. Orders may only be rebated within 180 days of the original authorization. This will return the captured funds to the customer's card." VMPAYMENT_REALEX_HPP_API_STATUS_SUCCESS="Successful Orders" VMPAYMENT_REALEX_HPP_API_STATUS_SUCCESS_TIP="Select the status for orders which have been successful. If using 'Download' selling options: select the status which enables the download (then the customer is instantly notified about the download via e-mail)." VMPAYMENT_REALEX_HPP_API_STATUS_CAPTURE="Settled Orders" VMPAYMENT_REALEX_HPP_API_STATUS_CAPTURE_TIP="Select the order status to trigger a Settle request. Orders may only be settled within 28 days of the original authorization." VMPAYMENT_REALEX_HPP_API_NO_ACTION="No action performed on payment" VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED="Your order of <strong>%s</strong> for <strong>%s</strong> was successful." VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED="There was a problem processing your order, please try again or contact the store administrator." VMPAYMENT_REALEX_HPP_API_PAYMENT_DECLINED="There was a problem processing your order %1$s, please try again or contact the store administrator." VMPAYMENT_REALEX_HPP_API_PAYMENT_TOTAL="Payment of %s" ;-------------------- ; Currencies ;-------------------- VMPAYMENT_REALEX_HPP_API_CURRENCIES_SECTION="Currencies" VMPAYMENT_REALEX_HPP_API_CURRENCIES_SECTION_DESC="Select the payment and email currencies for this payment method" VMPAYMENT_REALEX_HPP_API_CURRENCY="Payment Currency" VMPAYMENT_REALEX_HPP_API_CURRENCY_DESC="Currency accepted for the payment" VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY="Email Currency" VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY_DESC="Email currency" VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY_PAYMENT="Payment currency" VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY_VENDOR="Vendor currency" ;-------------- ; Restrictions ;-------------- VMPAYMENT_REALEX_HPP_API_RESTRICTIONS_SECTION="Restrictions" VMPAYMENT_REALEX_HPP_API_RESTRICTIONS_SECTION_DESC="Fill out filters to disable the payment option based on customer and his cart.<br/>Amount are based on the vendor currency" VMPAYMENT_REALEX_HPP_API_COUNTRIES="Countries" VMPAYMENT_REALEX_HPP_API_COUNTRIES_DESC="Please select the countries for which this payment method applies. If no country is selected, this payment method will be applied for all countries" VMPAYMENT_REALEX_HPP_API_MIN_AMOUNT="Minimum Amount" VMPAYMENT_REALEX_HPP_API_MIN_AMOUNT_TIP="Minimum Order Amount to offer this Payment" VMPAYMENT_REALEX_HPP_API_MAX_AMOUNT="Maximum Amount" VMPAYMENT_REALEX_HPP_API_MAX_AMOUNT_TIP="Maximum Order Amount to offer this Payment" ;-------------------- ; Discounts ;-------------------- VMPAYMENT_REALEX_HPP_API_DISCOUNT_FEE_SECTION="Discounts and Fees" VMPAYMENT_REALEX_HPP_API_DISCOUNT_FEE_SECTION_DESC="Enter discounts or Fees that will be applied when the payment option is selected" VMPAYMENT_REALEX_HPP_API_WARNING="<font color='red'><b>Warning</b></font> - For subscriptions and Payment plans, if the payment method adds discounts, they will be collected as an initial non-recurring payment." VMPAYMENT_REALEX_HPP_API_COST_PERCENT_TOTAL="Percent of the total amount" VMPAYMENT_REALEX_HPP_API_COST_PERCENT_TOTAL_TIP="Percent to apply to the total product amount. Shipment cost are not included" VMPAYMENT_REALEX_HPP_API_COST_PER_TRANSACTION="Fee per transaction" VMPAYMENT_REALEX_HPP_API_COST_PER_TRANSACTION_TIP="Flat amount to apply per transaction" VMPAYMENT_REALEX_HPP_API_TAX="Tax" VMPAYMENT_REALEX_HPP_API_TAX_TIP="Tax to apply to the fee" VMPAYMENT_REALEX_HPP_API_DATE="Date" VMPAYMENT_REALEX_HPP_API_VIEW_TRANSACTION_LOG="View transaction log" VMPAYMENT_REALEX_HPP_API_REDIRECT_MESSAGE="Please wait while redirecting" ;---------- ; messages ;---------- VMPAYMENT_REALEX_HPP_API_SAVE_CARD_DETAILS="Save my Card Details" VMPAYMENT_REALEX_HPP_API_SAVE_CARD_DETAILS_TIP="We'll securely store your card details for future orders. To avail of this service please tick the checkbox." VMPAYMENT_REALEX_HPP_API_SAVE_CARD_DETAILS_YES="My card details will be stored for future orders." VMPAYMENT_REALEX_HPP_API_ERROR_NO_SECRET="The parameter 'Shared Secret' is missing" VMPAYMENT_REALEX_HPP_API_ERROR_TRY_AGAIN="There was a problem processing your order, please try again or contact the store administrator." VMPAYMENT_REALEX_HPP_API_ERROR_CHOOSE_ANOTHER_PAYMENT="There was a problem processing your order. Please try again or contact the store administrator." VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_SUCCESS="Card Details Successfully Saved" VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_FAILED="An error occurred, your card details have not been saved. Please contact the store administrator." VMPAYMENT_REALEX_HPP_API_ERROR_DELETE_CC="An error occurred, your card details were not deleted. Please try again or contact the store administrator."; VMPAYMENT_REALEX_HPP_API_ERROR_WRONG_HASH="Hash has not been validated: calculated hash %s, received hash:%s"; VMPAYMENT_REALEX_HPP_API_ERROR_NOT_SETTLE="There was a problem processing the Settle request. The order has not be settled." VMPAYMENT_REALEX_HPP_API_ERROR_REBATE_SETTLE_FIRST="You can't Rebate a transaction that hasn't been Settled yet (order number %1$s)." VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_REBATE="There was a problem processing the Rebate request. The order has not be rebated." VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_SETTLE="Cannot settle your transaction" VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_VOID="Cannot void your transaction" VMPAYMENT_REALEX_HPP_API_3DS_VERIFICATION="3D Secure Cardholder Authentication" VMPAYMENT_REALEX_HPP_API_UPDATE_STATUS_REBATE="The order has been successfully rebated" VMPAYMENT_REALEX_HPP_API_UPDATE_STATUS_CANCELED="The order has been successfully voided" VMPAYMENT_REALEX_HPP_API_UPDATE_STATUS_CAPTURE="The order has been successfully settled" VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_VOID_LAST_TRANSACTION_NOT_AUTH="Cannot Void order: Last transaction is not a Authorization transaction" VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_VOID_TIME="Cannot Void order. Authorization request was done: %s" VMPAYMENT_REALEX_HPP_API_ERROR_REBATE_DCC_TRANSACTION="Cannot rebate this order: the transaction uses DCC" VMPAYMENT_REALEX_HPP_API_ORDER_BE_CAPTURE="Settle" VMPAYMENT_REALEX_HPP_API_ORDER_BE_REBATE="Rebate" VMPAYMENT_REALEX_HPP_API_ORDER_BE_AMOUNT="Amount" VMPAYMENT_REALEX_HPP_API_UPDATEPAYMENT_UNKNOWN_ACTION="Unknown action. Please try again" ;-------------------- ; Response codes ;-------------------- VMPAYMENT_REALEX_HPP_API_RESPONSE_PASREF="Transaction Reference" VMPAYMENT_REALEX_HPP_API_RESPONSE_CVNRESULT="Security Code Check" VMPAYMENT_REALEX_HPP_API_RESPONSE_CVNRESULT_M="Security Code Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_CVNRESULT_N="Security Code Not Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_CVNRESULT_I="Security Code not checked due to circumstances" VMPAYMENT_REALEX_HPP_API_RESPONSE_CVNRESULT_U="CVV Not checked – issuer not certified" VMPAYMENT_REALEX_HPP_API_RESPONSE_CVNRESULT_P="CVV Not Processed" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCCHOICE="DCC option" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCRATE="Exchange rate" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCMERCHANTAMOUNT="Original amount of the transaction" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCCARDHOLDERAMOUNT="Amount of the transaction in the cardholder’s card currency" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCMERCHANTCURRENCY="Original currency of the transaction" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCMARGINRATEPERCENTAGE="Foreign exchange margin that is applied to the transaction" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCEXCHANGERATESOURCENAME="Source of the exchange rate" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCCOMMISSIONPERCENTAGE="Commission percentage" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCEXCHANGERATESOURCETIMESTAMP="Timestamp" VMPAYMENT_REALEX_HPP_API_RESPONSE_DCCCARDHOLDERCURRENCY="Currency of the cardholder’s card" VMPAYMENT_REALEX_HPP_API_RESPONSE_AUTHCODE="Authcode" VMPAYMENT_REALEX_HPP_API_NO_RESPONSE="No response from payment gateway" VMPAYMENT_REALEX_HPP_API_RESPONSE_REALWALLET_CHOSEN="Card details saved" VMPAYMENT_REALEX_HPP_API_RESPONSE_REALWALLET_CHOSEN_1="Yes" VMPAYMENT_REALEX_HPP_API_RESPONSE_REALWALLET_CHOSEN_0="No" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESULT="Post Code Check" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESULT_M="Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESULT_N="Not Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESULT_I="Problem with check" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESULT_U="Unable to check (not certified etc)" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESULT_P="Partial Match" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESULT="Address Verification Service" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESULT_M="Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESULT_N="Not Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESULT_I="Problem with check" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESULT_U="Unable to check (not certified etc)" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESULT_P="Partial Match" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESPONSE="Post Code Check" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESPONSE_M="Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESPONSE_N="Not Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESPONSE_I="Problem with check" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESPONSE_U="Unable to check (not certified etc)" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSPOSTCODERESPONSE_P="Partial Match" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESPONSE="Address Verification Service" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESPONSE_M="Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESPONSE_N="Not Matched" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESPONSE_I="Problem with check" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESPONSE_U="Unable to check (not certified etc)" VMPAYMENT_REALEX_HPP_API_RESPONSE_AVSADDRESSRESPONSE_P="Partial Match" VMPAYMENT_REALEX_HPP_API_RESPONSE_THREEDSECURE="3D Secure" VMPAYMENT_REALEX_HPP_API_RESPONSE_THREEDSECURE_STATUS="3D Secure status" VMPAYMENT_REALEX_HPP_API_RESPONSE_THREEDSECURE_STATUS_Y="Cardholder successfully authenticated" VMPAYMENT_REALEX_HPP_API_RESPONSE_THREEDSECURE_STATUS_N="Cardholder did not authenticate successfully" VMPAYMENT_REALEX_HPP_API_RESPONSE_THREEDSECURE_STATUS_A="Cardholder is enrolled and the bank acknowledges the attempted authentication." VMPAYMENT_REALEX_HPP_API_RESPONSE_THREEDSECURE_STATUS_U="Cardholder authentication temporarily unavailable – no liability shift available." VMPAYMENT_REALEX_HPP_API_RESPONSE_THREEDSECURE_ECI="ECI" VMPAYMENT_REALEX_HPP_API_RESPONSE_CAVV="Cardholder Authentication Verification Value" VMPAYMENT_REALEX_HPP_API_RESPONSE_TSS="Transaction Suitability Score" VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT="Result" VMPAYMENT_REALEX_HPP_API_RESPONSE_MESSAGE="Message" VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_00="Successful" VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_1="A failed transaction." VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_101="Declined by Bank – generally insufficient funds or incorrect expiry date." VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_102="Referral by Bank (treat as decline in automated system such as internet)" VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_103="Card reported lost or stolen" VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_107="Your fraud checks blocked the transaction." VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_2="Error with bank systems" VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_3="Error with Realex Payments systems" VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_5="Incorrect XML message formation or content.Configuration issue – check the message. You may need to contact Realex support to fix these issues." VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_508="Development issue – check the message and correct your integration." VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_509="Customer issue – check the message and ask the customer to confirm their payment details and try again." VMPAYMENT_REALEX_HPP_API_RESPONSE_RESULT_666="Client deactivated – your Realex account has been suspended. Contact Realex support for further information." VMPAYMENT_REALEX_HPP_API_INVALID_PAYMENT_DETAILS="There was an error processing your payment.<br />%1s.<br />Please check your payment details and try again." VMPAYMENT_REALEX_HPP_API_INVALID_PAYMENT_DETAILS_REALVAULT="There was an error processing your payment.<br />%1s.<br />Please check <a href='%2s'>your payment details</a> and try again." jump.php 0000604 00000002472 15075477240 0006244 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: jump.php 8699 2015-02-12 16:51:08Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ $_GET["option"] = "com_virtuemart"; $_GET["element"] = "realex_hpp_api"; $_REQUEST["option"] = "com_virtuemart"; $_REQUEST["element"] = "realex_hpp_api"; $_GET["view"] = "pluginresponse"; $_GET["task"] = "pluginnotification"; $_GET["format"] = "raw"; $_GET["notificationTask"] = "jumpRedirect"; $_REQUEST["view"] = "pluginresponse"; $_REQUEST["task"] = "pluginnotification"; $_REQUEST["format"] = "raw"; $_REQUEST["notificationTask"] = "jumpRedirect"; $vmpayment_realex_path = dirname(__FILE__); if( file_exists($vmpayment_realex_path."/../../../index.php")) { include($vmpayment_realex_path."/../../../index.php"); } realex_hpp_api.php 0000604 00000232456 15075477240 0010260 0 ustar 00 <?php defined('_JEXEC') or die(); /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: realex_hpp_api.php 9081 2015-12-10 09:21:25Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die('Restricted access'); if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php'); if (!class_exists('vmPSPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); } if (!class_exists('RealexHelperRealex')) { require(VMPATH_ROOT . DS.'plugins'. DS.'vmpayment'. DS.'realex_hpp_api'. DS.'realex_hpp_api'. DS.'helpers'. DS.'helper.php'); } if (!class_exists('RealexHelperCustomerData')) { require(VMPATH_ROOT . DS.'plugins'. DS.'vmpayment'. DS.'realex_hpp_api'. DS.'realex_hpp_api'. DS.'helpers'. DS.'customerdata.php'); } if (!class_exists('vmPSPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); } class plgVmPaymentRealex_hpp_api extends vmPSPlugin { private $customerData; function __construct (& $subject, $config) { parent::__construct($subject, $config); if (!class_exists('RealexHelperCustomerData')) { require(VMPATH_ROOT . DS.'plugins'.DS.'vmpayment'.DS.'realex_hpp_api'.DS.'realex_hpp_api'.DS.'helpers'.DS.'customerdata.php'); } $this->customerData = new RealexHelperCustomerData(); $this->_loggable = TRUE; $this->tableFields = array_keys($this->getTableSQLFields()); $this->_tablepkey = 'id'; $this->_tableId = 'id'; $varsToPush = $this->getVarsToPush(); $this->setCryptedFields(array('shared_secret', 'rebate_password')); $this->setConfigParameterable($this->_configTableFieldName, $varsToPush); } /** * Create the table for this plugin if it does not yet exist. */ protected function getVmPluginCreateTableSQL () { return $this->createTableSQL('Payment Realex_hpp_api Table'); } /** * Fields to create the payment table * @return string SQL Fileds */ function getTableSQLFields () { $SQLfields = array( 'id' => 'int(11) UNSIGNED NOT NULL AUTO_INCREMENT', 'virtuemart_order_id' => 'int(11) UNSIGNED', 'order_number' => 'char(64)', 'virtuemart_paymentmethod_id' => 'mediumint(1) UNSIGNED', 'payment_name' => 'varchar(5000)', 'payment_order_total' => 'decimal(15,5) NOT NULL', 'payment_currency' => 'smallint(1)', 'email_currency' => 'smallint(1)', 'cost_per_transaction' => 'decimal(10,2)', 'cost_percent_total' => 'decimal(10,2)', 'tax_id' => 'smallint(1)', 'realex_hpp_api_custom' => 'varchar(255)', 'realex_hpp_api_request_type_response' => 'varchar(32)', 'realex_hpp_api_response_result' => 'varchar(3)', 'realex_hpp_api_response_pasref' => 'varchar(50)', 'realex_hpp_api_response_authcode' => 'varchar(10)', 'realex_hpp_api_fullresponse_format' => 'varchar(10)', 'realex_hpp_api_fullresponse' => 'text', ); return $SQLfields; } /** * @param $cart * @param $order * @return bool|null */ public function plgVmConfirmedOrder ($cart, $order) { if (!($this->_currentMethod = $this->getVmPluginMethod($order['details']['BT']->virtuemart_paymentmethod_id))) { return NULL; // Another method was selected, do nothing } if (!$this->selectedThisElement($this->_currentMethod->payment_element)) { return FALSE; } if (!class_exists('VirtueMartModelOrders')) { require(VMPATH_ADMIN . DS . 'models' . DS . 'orders.php'); } if (!class_exists('VirtueMartModelCurrency')) { require(VMPATH_ADMIN . DS . 'models' . DS . 'currency.php'); } //$this->setInConfirmOrder($cart); $email_currency = $this->getEmailCurrency($this->_currentMethod); $payment_name = $this->renderPluginName($this->_currentMethod, 'order'); $realexInterface = $this->_loadRealexInterface(); $realexInterface->loadCustomerData(); $realexInterface->debugLog('order number: ' . $order['details']['BT']->order_number, 'plgVmConfirmedOrder', 'debug'); $realexInterface->setCart($cart); /* if (!$realexInterface->validateConfirmedOrder()) { vmInfo('VMPAYMENT_REALEX_HPP_API_PLEASE_SELECT_OPTION'); return false; } */ $realexInterface->setOrder($order); $realexInterface->setPaymentCurrency(); $realexInterface->setTotalInPaymentCurrency($order['details']['BT']->order_total); // Prepare data that should be stored in the database $dbValues['order_number'] = $order['details']['BT']->order_number; $dbValues['payment_name'] = str_replace(array('\t', '\n'), '', $payment_name); $dbValues['virtuemart_paymentmethod_id'] = $cart->virtuemart_paymentmethod_id; $dbValues['realex_hpp_api_custom'] = $realexInterface->getContext(); $dbValues['cost_per_transaction'] = $this->_currentMethod->cost_per_transaction; $dbValues['cost_percent_total'] = $this->_currentMethod->cost_percent_total; $dbValues['payment_currency'] = $realexInterface->getPaymentCurrency(); $dbValues['email_currency'] = $email_currency; $dbValues['payment_order_total'] = $realexInterface->getTotalInPaymentCurrency(); $dbValues['tax_id'] = $this->_currentMethod->tax_id; $this->storePSPluginInternalData($dbValues); VmConfig::loadJLang('com_virtuemart_orders', TRUE); $selectedCCParams = array(); if ($this->_currentMethod->integration == 'redirect') { if (!$realexInterface->doRealvault($selectedCCParams)) { $html = $realexInterface->sendPostRequest(); vRequest::setVar('html', $html); $cart->_confirmDone = FALSE; $cart->_dataValidated = FALSE; $cart->setCartIntoSession(); } else { if (!JFactory::getUser()->guest AND $this->_currentMethod->realvault) { $remoteCCFormParams =$realexInterface->getRemoteCCFormParams(); $html = $this->renderByLayout('remote_cc_form', $remoteCCFormParams); vRequest::setVar('html', $html); vRequest::setVar('display_title', false); return; } $response = $realexInterface->requestReceiptIn($selectedCCParams); $request_type = $realexInterface->request_type . '_request'; $this->_storeRealexInternalData($realexInterface->xml_request, $this->_currentMethod->virtuemart_paymentmethod_id, $order['details']['BT']->virtuemart_order_id, $order['details']['BT']->order_number, $request_type); $realexInterface->manageResponseRequestReceiptIn($response); $xml_response = simplexml_load_string($response); $success = $realexInterface->isResponseSuccess($xml_response); if ($success) { $status = $this->_currentMethod->status_success; $amountInCurrency = vmPSPlugin::getAmountInCurrency($order['details']['BT']->order_total, $order['details']['BT']->order_currency); $currencyDisplay = CurrencyDisplay::getInstance($cart->pricesCurrency); $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED', $amountInCurrency['display'], $order['details']['BT']->order_number); } else { $order_history['comments'] = vmText::_('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED'); $status = $this->_currentMethod->status_canceled; } $order_history['customer_notified'] = true; $order_history['order_status'] = $status; $modelOrder = VmModel::getModel('orders'); $modelOrder->updateStatusForOneOrder($order['details']['BT']->virtuemart_order_id, $order_history, TRUE); $payments = $this->getDatasByOrderId($realexInterface->order['details']['BT']->virtuemart_order_id); $params = $realexInterface->getResponseParams($payments); $params['payment_name'] = $this->renderPluginName($this->_currentMethod, 'order'); $html = $this->renderByLayout('response',$params); vRequest::setVar('html', $html); $this->customerData->clear(); if ($success) { if (isset($payments[0]->realex_hpp_api_custom)) { $cart->emptyCart(); } } } } else { $remoteCCFormParams =$realexInterface->getRemoteCCFormParams(); $html = $this->renderByLayout('remote_cc_form', $remoteCCFormParams); vRequest::setVar('html', $html); vRequest::setVar('display_title', false); } return true; } function updateOrderStatus ($order, $useTriggers = true) { $realexInterface = $this->_loadRealexInterface(); $realexInterface->setOrder($order); $realexInterface->setPaymentCurrency(); $realexInterface->setTotalInPaymentCurrency($order['details']['BT']->order_total); $cart = VirtueMartCart::getCart(); $realexInterface->setCart($cart, false); if (!($payments = $this->getDatasByOrderId($order['details']['BT']->virtuemart_order_id))) { // JError::raiseWarning(500, $db->getErrorMsg()); return null; } $payment = end($payments); $xml_response = simplexml_load_string($payment->realex_hpp_api_fullresponse); $order_history = array(); $success = $realexInterface->isResponseSuccess($xml_response); if ($success) { $status = $this->_currentMethod->status_success; $amountValue = vmPSPlugin::getAmountInCurrency($order['details']['BT']->order_total, $order['details']['BT']->order_currency); //$amountValueInPaymentCurrency = vmPSPlugin::getAmountInCurrency($realexInterface->getTotalInPaymentCurrency(), $realexInterface->getPaymentCurrency()); $currencyDisplay = CurrencyDisplay::getInstance($realexInterface->cart->pricesCurrency); $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED', $amountValue['display'], $order['details']['BT']->order_number); $order_history['success'] = true; if (isset($xml_response->dccinfo) AND isset($xml_response->dccinfo->cardholderrate)) { $order_history['comments'] .= "<br />"; if ($xml_response->dccinfo->cardholderrate != 1.0) { $order_history['comments'] .= vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_CHARGED', $this->getCardHolderAmount($xml_response->dccinfo->merchantamount), $xml_response->dccinfo->merchantcurrency, $this->getCardHolderAmount($xml_response->dccinfo->cardholderamount), $xml_response->dccinfo->cardholdercurrency); } else { $order_history['comments'] .= vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_MERCHANT_CURRENCY', $this->getCardHolderAmount($xml_response->dccinfo->merchantamount), $xml_response->dccinfo->merchantcurrency); } $order_history['comments'] .= "<br />"; } else { } } else { if ($realexInterface->isResponseDeclined($xml_response)) { $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_DECLINED', $realexInterface->order['details']['BT']->order_number); } else { $order_history['comments'] = vmText::_('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED'); } $status = $this->_currentMethod->status_canceled; $order_history['success'] = false; } $order_history['customer_notified'] = true; $order_history['order_status'] = $status; $modelOrder = VmModel::getModel('orders'); $modelOrder->updateStatusForOneOrder($order['details']['BT']->virtuemart_order_id, $order_history, $useTriggers); return $success; } function redirectToCart ($msg = NULL) { if (!$msg) { $msg = vmText::_('VMPAYMENT_REALEX_HPP_API_ERROR_TRY_AGAIN'); } $this->customerData->clear(); $app = JFactory::getApplication(); $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart&Itemid=' . vRequest::getInt('Itemid'), false), $msg); } /*********************/ /* Private functions */ /*********************/ private function _loadRealexInterface () { if ($this->_currentMethod->integration == 'redirect') { if (!class_exists('RealexHelperRealexRedirect')) { require(VMPATH_ROOT . DS .'plugins'. DS .'vmpayment'. DS .'realex_hpp_api'. DS .'realex_hpp_api'. DS .'helpers'. DS .'redirect.php'); } $realexInterface = new RealexHelperRealexRedirect($this->_currentMethod, $this); } else { if ($this->_currentMethod->integration == 'remote') { if (!class_exists('RealexHelperRealexRemote')) { require(VMPATH_ROOT . DS .'plugins'. DS .'vmpayment'. DS .'realex_hpp_api'. DS .'realex_hpp_api'. DS .'helpers'. DS .'remote.php'); } $realexInterface = new RealexHelperRealexRemote($this->_currentMethod, $this); } else { Vmerror('Wrong Realex Integration method - developer error '.$this->_currentMethod->integration, 'Wrong Realex Integration method '); return NULL; } } return $realexInterface; } public function plgVmOnPaymentResponseReceived (&$html) { if (!class_exists('VirtueMartCart')) { require(VMPATH_SITE . DS . 'helpers' . DS . 'cart.php'); } if (!class_exists('shopFunctionsF')) { require(VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } if (!class_exists('VirtueMartModelOrders')) { require(VMPATH_ADMIN . DS . 'models' . DS . 'orders.php'); } VmConfig::loadJLang('com_virtuemart_orders', TRUE); // the payment itself should send the parameter needed. $virtuemart_paymentmethod_id = vRequest::getInt('pm', 0); $order_number = vRequest::getString('on', 0); if (!($this->_currentMethod = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { return NULL; // Another method was selected, do nothing } if (!$this->selectedThisElement($this->_currentMethod->payment_element)) { return NULL; } if (!($virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number))) { return NULL; } $payments = $this->getDatasByOrderId($virtuemart_order_id); VmConfig::loadJLang('com_virtuemart'); $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($virtuemart_order_id); $realexInterface = $this->_loadRealexInterface(); $realexInterface->loadCustomerData(); $realexInterface->setOrder($order); $params = $realexInterface->getResponseParams($payments); $params['payment_name'] = $this->renderPluginName($this->_currentMethod, 'order'); $html = $this->renderByLayout('response',$params); $this->customerData->clear(); $cart = VirtueMartCart::getCart(); $cart->emptyCart(); return TRUE; } public function plgVmOnUserPaymentCancel() { $virtuemart_paymentmethod_id = vRequest::getInt('pm', 0); if (!($this->_currentMethod = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { return NULL; // Another method was selected, do nothing } if (!$this->selectedThisElement($this->_currentMethod->payment_element)) { return NULL; } JFactory::getApplication()->enqueueMessage(vmText::_('VMPAYMENT_REALEX_HPP_API_ERROR_TRY_AGAIN')); } /** * Display stored payment data for an order * * @see components/com_virtuemart/helpers/vmPSPlugin::plgVmOnShowOrderBEPayment() */ public function plgVmOnShowOrderBEPayment ($virtuemart_order_id, $virtuemart_paymentmethod_id) { if (!$this->selectedThisByMethodId($virtuemart_paymentmethod_id)) { return NULL; // Another method was selected, do nothing } if (!($this->_currentMethod = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { return FALSE; } if (!($payments = $this->getDatasByOrderId($virtuemart_order_id))) { // JError::raiseWarning(500, $db->getErrorMsg()); return ''; } $html = $this->showActionOrderBEPayment($virtuemart_order_id, $virtuemart_paymentmethod_id, $payments); //$html = $this->renderByLayout('orderbepayment', array($payments, $this->_psType)); //$html = '<table class="adminlist table-striped" >' . "\n"; //$html .= $this->getHtmlHeaderBE(); $code = "realex_hpp_api_response_"; $first = TRUE; foreach ($payments as $payment) { $html .= '<tr class="row1"><td><strong>' . vmText::_('VMPAYMENT_REALEX_HPP_API_DATE') . '</strong></td><td align="left"><strong>' . $payment->created_on . '</strong></td></tr>'; // Now only the first entry has this data when creating the order if ($first) { $html .= $this->getHtmlRowBE('COM_VIRTUEMART_PAYMENT_NAME', $payment->payment_name); // keep that test to have it backwards compatible. Old version was deleting that column when receiving an IPN notification if ($payment->payment_order_total and $payment->payment_order_total != 0.00) { $html .= $this->getHtmlRowBE('COM_VIRTUEMART_TOTAL', $payment->payment_order_total * 0.01 . " " . $payment->payment_currency); } $first = FALSE; } else { $realexInterface = $this->_loadRealexInterface(); if (isset($payment->realex_hpp_api_fullresponse) and !empty($payment->realex_hpp_api_fullresponse)) { //$realex_data = json_decode($payment->realex_hpp_api_fullresponse); if ($payment->realex_hpp_api_fullresponse_format == 'json') { $realex_data = json_decode($payment->realex_hpp_api_fullresponse); } elseif ($payment->realex_hpp_api_fullresponse_format == 'xml') { $html .= $this->getHtmlRowBE('VMPAYMENT_REALEX_HPP_API_RESPONSE_TYPE', $payment->realex_hpp_api_request_type_response); $realex_data = simplexml_load_string($payment->realex_hpp_api_fullresponse); } $html .= $realexInterface->onShowOrderBEPayment($realex_data, $payment->realex_hpp_api_fullresponse_format, $payment->realex_hpp_api_request_type_response, $virtuemart_order_id); $html .= '<tr><td></td><td> <a href="#" class="RealexLogOpener" rel="' . $payment->id . '" > <div style="background-color: white; z-index: 100; right:0; display: none; border:solid 2px; padding:10px;" class="vm-absolute" id="RealexLog_' . $payment->id . '">'; if ($payment->realex_hpp_api_fullresponse_format != 'xml') { foreach ($realex_data as $key => $value) { if ($key=='SHA1HASH' OR $key=='SAVED_PMT_DIGITS') { $value = $realexInterface->obscureValue($value); } $html .= ' <b>' . $key . '</b>: ' . $value . '<br />'; } } else { $xml_realex_hpp_api_fullresponse = simplexml_load_string($payment->realex_hpp_api_fullresponse); $xml_realex_hpp_api_fullresponse = $realexInterface->obscureSha1hash($xml_realex_hpp_api_fullresponse); //$html .= "<pre>" . htmlentities(wordwrap($realex_hpp_api_fullresponse, 100, "\n", true)) . "</pre>"; //$html .= $xml_realex_hpp_api_fullresponse->asXML(); $html .= "<pre>" . wordwrap(print_r($xml_realex_hpp_api_fullresponse, true), 100, "\n", true) . "</pre>"; } $html .= ' </div> <span class="icon-nofloat vmicon vmicon-16-xml"></span> '; $html .= vmText::_('VMPAYMENT_REALEX_HPP_API_VIEW_TRANSACTION_LOG'); $html .= ' </a>'; $html .= ' </td></tr>'; } else { //$html .= $realexInterface->onShowOrderBEPaymentByFields($payment); } } } $html .= '</table>' . "\n"; $js = " jQuery().ready(function($) { $('.RealexLogOpener').click(function() { var logId = $(this).attr('rel'); $('#RealexLog_'+logId).toggle(); return false; }); });"; vmJsApi::addJScript("RealexLogOpener",$js); return $html; } private function showActionOrderBEPayment ($virtuemart_order_id, $virtuemart_paymentmethod_id, $payments) { $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($virtuemart_order_id); $options = array(); if ($this->isDelayedSettlement()) { $options[] = JHTML::_('select.option', 'settlePayment', vmText::_('VMPAYMENT_REALEX_HPP_API_ORDER_BE_CAPTURE'), 'value', 'text'); } $options[] = JHTML::_('select.option', 'rebatePayment', vmText::_('VMPAYMENT_REALEX_HPP_API_ORDER_BE_REBATE'), 'value', 'text'); $actionList = JHTML::_('select.genericlist', $options, 'action', '', 'value', 'text', 'capturePayment', 'action', true); $html = '<table class="adminlist table" >' . "\n"; $html .= $this->getHtmlHeaderBE(); $html .= '<form action="index.php" method="post" name="updateOrderBEPayment" id="updateOrderBEPayment">'; $html .= '<tr ><td >'; $html .= $actionList; $html .= ' </td><td>'; $html .= '<input type="text" id="amount" name="amount" size="20" value="" class="required" maxlength="25" placeholder="' . vmText::sprintf('VMPAYMENT_REALEX_HPP_API_ORDER_BE_AMOUNT', shopFunctions::getCurrencyByID($payments[0]->payment_currency, 'currency_code_3')) . '"/>'; $html .= '<input type="hidden" name="type" value="vmpayment"/>'; $html .= '<input type="hidden" name="name" value="realex_hpp_api"/>'; $html .= '<input type="hidden" name="view" value="plugin"/>'; $html .= '<input type="hidden" name="option" value="com_virtuemart"/>'; $html .= '<input type="hidden" name="virtuemart_order_id" value="' . $virtuemart_order_id . '"/>'; $html .= '<input type="hidden" name="virtuemart_paymentmethod_id" value="' . $virtuemart_paymentmethod_id . '"/>'; $html .= '<a class="updateOrderBEPayment btn btn-small" href="#" >' . vmText::_('COM_VIRTUEMART_SAVE') . '</a>'; $html .= '</form>'; $html .= ' </td></tr>'; vmJsApi::addJScript('vmRealex.updateOrderBEPayment'," jQuery(document).ready( function($) { jQuery('.updateOrderBEPayment').click(function() { document.updateOrderBEPayment.submit(); return false; }); }); "); //$html .= '</table>' ; return $html; } /** * Order status changed * @param $order * @param $old_order_status * @return bool|null */ public function plgVmOnUpdateOrderPayment (&$order, $old_order_status) { //Load the method if (!($this->_currentMethod = $this->getVmPluginMethod($order->virtuemart_paymentmethod_id))) { return NULL; // Another method was selected, do nothing } if (!$this->selectedThisElement($this->_currentMethod->payment_element)) { return NULL; } //Load the payments if (!($payments = $this->getDatasByOrderId($order->virtuemart_order_id))) { // JError::raiseWarning(500, $db->getErrorMsg()); return null; } $updateOrderPaymentStatus = array( $this->_currentMethod->status_capture, $this->_currentMethod->status_canceled, $this->_currentMethod->status_rebate, ); if (!in_array($order->order_status, $updateOrderPaymentStatus)) { //vmInfo(vmText::_('VMPAYMENT_REALEX_HPP_API_NO_ACTION')); return true; } $orderModel = VmModel::getModel('orders'); $orderData = $orderModel->getOrder($order->virtuemart_order_id); $requestSent = false; $order_history_comment = ''; $realexInterface = $this->_loadRealexInterface(); $canDo = true; if ($order->order_status == $this->_currentMethod->status_capture AND !$this->isDcc() AND $this->isDelayedSettlement() AND ($canDo = $this->canDoSettle($realexInterface, $old_order_status, $payments))) { $requestSent = true; $order_history_comment = vmText::_('VMPAYMENT_REALEX_HPP_API_UPDATE_STATUS_CAPTURE'); $realexInterface->setOrder($orderData); $realexInterface->setPaymentCurrency(); $realexInterface->setTotalInPaymentCurrency($orderData['details']['BT']->order_total); $realexInterface->loadCustomerData(); $response = $realexInterface->settleTransaction($payments); } elseif ($order->order_status == $this->_currentMethod->status_canceled AND ($canDo = $this->canDoVoid($realexInterface, $old_order_status, $payments))) { $requestSent = true; $order_history_comment = vmText::_('VMPAYMENT_REALEX_HPP_API_UPDATE_STATUS_CANCELED'); $realexInterface->setOrder($orderData); $realexInterface->setPaymentCurrency(); $realexInterface->setTotalInPaymentCurrency($orderData['details']['BT']->order_total); $realexInterface->loadCustomerData(); $response = $realexInterface->voidTransaction($payments); } elseif ($order->order_status == $this->_currentMethod->status_rebate AND ($canDo = $this->canDoRebate($realexInterface, $old_order_status, $payments))) { $requestSent = true; $response = $this->doRebate($realexInterface, $orderData, $payments); } if ($requestSent) { if ($response) { $db_values = $this->_storeRealexInternalData($response, $this->_currentMethod->virtuemart_paymentmethod_id, $orderData['details']['BT']->virtuemart_order_id, $orderData['details']['BT']->order_number, $realexInterface->request_type); $xml_response = simplexml_load_string($response); $success = $realexInterface->isResponseSuccess($xml_response); if (!$success) { $error = $xml_response->message . " (" . (string)$xml_response->result . ")"; $realexInterface->displayError($error); return false; //return NULL; } else { $order_history = array(); $order_history['comments'] = $order_history_comment; $order_history['customer_notified'] = false; $order_history['order_status'] = $order->order_status; $modelOrder = VmModel::getModel('orders'); $modelOrder->updateStatusForOneOrder($orderData['details']['BT']->virtuemart_order_id, $order_history, false); return true; } } else { vmError('VMPAYMENT_REALEX_HPP_API_NO_RESPONSE'); return false; } } else { //vmInfo(vmText::_('VMPAYMENT_REALEX_HPP_API_NO_ACTION')); } return $canDo; } function plgVmOnSelfCallBE ($type, $name, &$render) { if ($name != $this->_name || $type != 'vmpayment') { return FALSE; } $virtuemart_paymentmethod_id = vRequest::getInt('virtuemart_paymentmethod_id'); //Load the method if (!($this->_currentMethod = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { return NULL; // Another method was selected, do nothing } $amount = vRequest::getFloat('amount'); $actions=array('rebatePayment', 'settlePayment'); $action = vRequest::getCmd('action'); if (!in_array($action, $actions)) { vmError('VMPAYMENT_REALEX_HPP_API_UPDATEPAYMENT_UNKNOWN_ACTION'); return NULL; } $virtuemart_order_id = vRequest::getInt('virtuemart_order_id'); if (!($payments = $this->getDatasByOrderId($virtuemart_order_id))) { return null; } $orderModel = VmModel::getModel('orders'); $orderData = $orderModel->getOrder(vRequest::getInt('virtuemart_order_id')); $requestSent = false; $order_history_comment = ''; $realexInterface = $this->_loadRealexInterface(); $canDo = true; if ( $action=='settlePayment' ) { $requestSent = true; $order_history_comment = vmText::_('VMPAYMENT_REALEX_HPP_API_UPDATE_STATUS_CAPTURE'); $realexInterface->setOrder($orderData); $realexInterface->setPaymentCurrency(); $realexInterface->setTotalInPaymentCurrency($amount); $realexInterface->loadCustomerData(); $response = $realexInterface->settleTransaction($payments); } elseif ( $action=='rebatePayment') { $requestSent = true; $response = $this->doRebate($realexInterface, $orderData, $payments, $amount); } if ($requestSent) { if ($response) { $db_values = $this->_storeRealexInternalData($response, $this->_currentMethod->virtuemart_paymentmethod_id, $orderData['details']['BT']->virtuemart_order_id, $orderData['details']['BT']->order_number, $realexInterface->request_type); $xml_response = simplexml_load_string($response); $success = $realexInterface->isResponseSuccess($xml_response); if (!$success) { $error = $xml_response->message . " (" . (string)$xml_response->result . ")"; $realexInterface->displayError($error); } else { $order_history = array(); $order_history['comments'] = $order_history_comment; $order_history['customer_notified'] = false; $order_history['order_status'] = $orderData['details']['BT']->order_status; $modelOrder = VmModel::getModel('orders'); $modelOrder->updateStatusForOneOrder($orderData['details']['BT']->virtuemart_order_id, $order_history, false); } } else { vmError('VMPAYMENT_REALEX_HPP_API_NO_RESPONSE'); } } $app = JFactory::getApplication(); $link = 'index.php?option=com_virtuemart&view=orders&task=edit&virtuemart_order_id=' . $virtuemart_order_id; $app->redirect(JRoute::_($link, FALSE)); } /** * Merchants can Rebate for any amount up to 115% of the original order value. * Pop up will ask for the amount * @param $realexInterface * @param $orderData * @param $payments */ function doRebate ($realexInterface, $orderData, $payments, $amount=false) { $order_history_comment = vmText::_('VMPAYMENT_REALEX_HPP_API_UPDATE_STATUS_REBATE'); $realexInterface->setOrder($orderData); $realexInterface->setPaymentCurrency(); if ($amount===false) { $amount=$orderData['details']['BT']->order_total; } $realexInterface->setTotalInPaymentCurrency($amount); $realexInterface->loadCustomerData(); $response = $realexInterface->rebateTransaction($payments); return $response; } /** * Check if Dcc option * @return bool */ private function isDcc () { if ($this->_currentMethod->dcc) { return true; } return false; } /** check if the setelement is set to Delayed */ private function isDelayedSettlement () { if (($this->_currentMethod->settlement == 'delayed')) { return true; } return false; } /** * Check if Can do settle * @param $realexInterface * @param $old_order_status * @param $payments * @return bool */ private function canDoSettle ($realexInterface, $old_order_status, $payments) { // Delayed settlement if (!($old_order_status == $this->_currentMethod->status_success)) { vmError('VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_SETTLE'); return false; } return true; } /** * Before settlement, it is possible to void an authorisation * Void (if same day or delayed settlement) * * @param $old_order_status * @param $payments * @param $realexInterface * @return bool */ private function canDoVoid ($realexInterface, $old_order_status, $payments) { if ($this->_currentMethod->settlement == 'auto') { if (!($old_order_status == $this->_currentMethod->status_success)) { vmError('VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_VOID'); return false; } } else { if (!($old_order_status == $this->_currentMethod->status_success OR $old_order_status == $this->_currentMethod->status_capture)) { vmError('VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_VOID'); return false; } } return true; } /** * And in live mode, merchants can only rebate transactions the day after they've settled. * It maybe would be best not to allow merchants to attempt rebate on the same day a transactions is processed. * @param $old_order_status * @param $payments * @param $realexInterface * @return bool */ private function canDoRebate ($realexInterface, $old_order_status, $payments) { if ($this->transactionIsDcc($realexInterface, $payments)) { vmError(vmText::_('VMPAYMENT_REALEX_HPP_API_ERROR_REBATE_DCC_TRANSACTION')); return false; } if ($this->_currentMethod->settlement == 'auto') { if (!($old_order_status == $this->_currentMethod->status_success)) { vmError('VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_REBATE'); return false; } } else { if (!($old_order_status == $this->_currentMethod->status_capture)) { vmError('VMPAYMENT_REALEX_HPP_API_ERROR_CANNOT_REBATE'); return false; } } /* if ($this->_currentMethod->settlement=='auto') return true; if (!($settleTime = $this->transactionIsSettled($realexInterface, $payments))) { vmError(vmText::sprintf('VMPAYMENT_REALEX_HPP_API_ERROR_REBATE_SETTLE_FIRST', $payments[0]->order_number)); return false; } //And in live mode, merchants can only rebate transactions the day after they've settled. if ($this->_currentMethod->shop_mode == 'sandbox') { return true; } */ return true; } private function transactionIsSettled ($realexInterface, $payments) { $payment = $realexInterface->getTransactionData($payments, array($realexInterface::REQUEST_TYPE_SETTLE)); if (!$payment) { return false; } return $payment->created_on; } private function transactionIsDcc ($realexInterface, $payments) { if (!$this->_currentMethod->dcc) { return false; } $payment = $realexInterface->getTransactionData($payments, array($realexInterface::REQUEST_TYPE_SETTLE)); if (!$payment) { return false; } return true; } private function transactionIsAuth ($realexInterface, $payments) { $payment = $realexInterface->getLastTransactionData($payments, array( $realexInterface::REQUEST_TYPE_AUTH, $realexInterface::REQUEST_TYPE_RECEIPT_IN )); if (!$payment) { return false; } return $payment->created_on; } function plgVmOnUpdateOrderLinePayment (&$order) { if (!($this->_currentMethod = $this->getVmPluginMethod($order->virtuemart_paymentmethod_id))) { return NULL; // Another method was selected, do nothing } if (!$this->selectedThisElement($this->_currentMethod->payment_element)) { return NULL; } } /** * Create the table for this plugin if it does not yet exist. * This functions checks if the called plugin is active one. * When yes it is calling the standard method to create the tables * */ public function plgVmOnStoreInstallPaymentPluginTable ($jplugin_id) { if ($jplugin_id != $this->_jid) { return FALSE; } $this->_currentMethod = $this->getPluginMethod(vRequest::getInt('virtuemart_paymentmethod_id')); if ($this->_currentMethod->published) { $required_parameters = array('merchant_id', 'shared_secret', 'subaccount'); foreach ($required_parameters as $required_parameter) { if (empty ($this->_currentMethod->$required_parameter)) { $text = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PARAMETER_REQUIRED', vmText::_('VMPAYMENT_REALEX_HPP_API_' . $required_parameter), $this->_currentMethod->payment_name, $this->_currentMethod->virtuemart_paymentmethod_id); vmWarn($text); } } } $this->createPayerRefTable(); $this->createPmtRefTable(); return $this->onStoreInstallPluginTable($jplugin_id); } private function createPmtRefTable () { $db = JFactory::getDBO(); $q = 'SELECT `extension_id` FROM `#__extensions` WHERE `folder` = "vmuserfield" and `state`="0" AND `element` = "'.$this->_name.'"'; $db->setQuery($q); $extension_id = $db->loadResult(); if (empty($extension_id)) { $app = JFactory::getApplication(); $app->enqueueMessage(vmText::_('VMPAYMENT_REALEX_HPP_API_NO_PLUGIN_INSTALLED')); return; } // publish the plugin $q="UPDATE `#__extensions` SET `enabled` = '1' WHERE `extension_id` =".$extension_id; $db->setQuery($q); $db->execute(); // is this plugin already $q = 'SELECT `virtuemart_userfield_id` FROM `#__virtuemart_userfields` WHERE `userfield_jplugin_id` = ' . $extension_id; $db->setQuery($q); $virtuemart_userfield_id = $db->loadResult(); if (empty($virtuemart_userfield_id)) { //$app = JFactory::getApplication(); //$app -> enqueueMessage(vmText::_('VMUSERFIELD_REALEX_NO_PLUGIN_ALREADY_INSTALLED')); $userFieldsModel = VmModel::getModel('UserFields'); $data['virtuemart_userfield_id'] = 0; $data['published'] = 1; $data['userfield_jplugin_id'] = $extension_id; $data['required'] = 0; $data['account'] = 1; $data['shipment'] = 0; $data['registration'] = 0; $data['vNames'] = array(); $data['vValues'] = array(); $data['name'] = 'realex_hpp_api'; $data['type'] = 'pluginrealex_hpp_api'; $data['title'] = 'Payment means'; $ret = $userFieldsModel->store($data); if (!$ret) { vmError(vmText::_('VMPAYMENT_REALEX_HPP_API_CREATE_USERFIELD_FAILED') . " " . $data['name'] . " " . $ret); } else { vmInfo(vmText::_('VMPAYMENT_REALEX_HPP_API_CREATE_USERFIELD_OK') . " " . $data['name']); } } JLoader::import('joomla.plugin.helper'); JPluginHelper::importPlugin('vmuserfield'); JFactory::getApplication()->triggerEvent('plgVmOnStoreInstallPluginTable', array( 'userfield', 'realex_hpp_api' )); } /** * Fields to create the payment table * @return string SQL Fileds */ private function getPayerRefTableSQLFields () { // We must save both , since the customer number can be changed $SQLfields = array( 'id' => 'int(11) UNSIGNED NOT NULL AUTO_INCREMENT', 'virtuemart_user_id' => 'int(11) UNSIGNED', 'payer_ref' => 'char(32)', 'merchant_id' => 'varchar(128)', ); return $SQLfields; } /** * @param $tableComment * @return string */ private function createPayerRefTable ($tablesFields = 0) { $payerRefTableName = $this->getPayerRefTableName(); $query = "CREATE TABLE IF NOT EXISTS `" . $payerRefTableName . "` ("; $SQLfields = $this->getPayerRefTableSQLFields(); $loggablefields = $this->getTableSQLLoggablefields(); foreach ($SQLfields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . " , "; } foreach ($loggablefields as $fieldname => $fieldtype) { $query .= '`' . $fieldname . '` ' . $fieldtype . ", "; } $query .= " PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Realex PayerRef Table' AUTO_INCREMENT=1 ;"; $db = JFactory::getDBO(); $db->setQuery($query); if (!$db->execute()) { JError::raiseWarning(1, $payerRefTableName . '::createPayerRefTable: ' . vmText::_('COM_VIRTUEMART_SQL_ERROR') . ' ' . $db->stderr(TRUE)); echo $payerRefTableName . '::createPayerRefTable: ' . vmText::_('COM_VIRTUEMART_SQL_ERROR') . ' ' . $db->stderr(TRUE); } } /** * This event is fired after the payment method has been selected. It can be used to store * additional payment info in the cart. * * @param VirtueMartCart $cart: the actual cart * @return null if the payment was not selected, true if the data is valid, error message if the data is not vlaid * */ public function plgVmOnSelectCheckPayment (VirtueMartCart $cart) { return $this->onSelectCheck($cart); } /** * This is for checking the input data of the payment method within the checkout * */ public function plgVmOnCheckoutCheckDataPayment (VirtueMartCart $cart) { if (!$this->selectedThisByMethodId($cart->virtuemart_paymentmethod_id)) { return NULL; // Another method was selected, do nothing } if (!($this->_currentMethod = $this->getVmPluginMethod($cart->virtuemart_paymentmethod_id))) { return NULL; } return true; } /** * plgVmDisplayListFEPayment * This event is fired to display the pluginmethods in the cart (edit shipment/payment) for exampel * * @param VirtueMartCart $cart Cart object * @param integer $selected ID of the method selected * @return boolean True on success, false on failures, null when this plugin was not selected. * On errors, JError::raiseWarning (or JError::raiseError) must be used to set a message. * */ public function plgVmDisplayListFEPayment (VirtueMartCart $cart, $selected = 0, &$htmlIn) { if ($this->getPluginMethods($cart->vendorId) === 0) { if (empty($this->_name)) { $app = JFactory::getApplication(); $app->enqueueMessage(vmText::_('COM_VIRTUEMART_CART_NO_' . strtoupper($this->_psType))); return false; } else { return false; } } $htmla = array(); foreach ($this->methods as $this->_currentMethod) { if ($this->checkConditions($cart, $this->_currentMethod, $cart->cartPrices)) { $html = ''; $cart_prices = array(); $cart_prices['withTax'] = ''; $cart_prices['salesPrice'] = ''; $methodSalesPrice = $this->setCartPrices($cart, $cart_prices, $this->_currentMethod); //if ($selected == $method->virtuemart_paymentmethod_id) { // $this->customerData->load(); //} $html .= '<br />'; $payment_name = $this->renderPluginName($this->_currentMethod, 'DisplayListFEPayment'); //$html .= $this->getPluginHtml($this->_currentMethod, $selected, $methodSalesPrice); $realexInterface = $this->_loadRealexInterface(); if ($realexInterface == NULL) { vmdebug('renderPluginName', $this->_currentMethod); break; } $realexInterface->loadCustomerData(); if ($selected == $this->_currentMethod->virtuemart_paymentmethod_id) { $checked = 'checked="checked"'; } else { $checked = ''; } /* $ccDropdown = ""; if ($this->_currentMethod->integration == 'redirect') { if (!JFactory::getUser()->guest AND $this->_currentMethod->realvault) { $selected_cc = $this->customerData->getVar('saved_cc_selected'); $ccDropdown = $realexInterface->getCCDropDown($this->_currentMethod->virtuemart_paymentmethod_id, JFactory::getUser()->id, $selected_cc); } } */ $html .= $this->renderByLayout('redirect_form', array( //'creditcardsDropDown' => $ccDropdown, 'virtuemart_paymentmethod_id' => $this->_currentMethod->virtuemart_paymentmethod_id, 'payment_name' => $payment_name, 'checked' => $checked, )); $htmla[] = $html; } } $htmlIn[] = $htmla; return true; } /** * Check if the payment conditions are fulfilled for this payment method * @param VirtueMartCart $cart * @param int $activeMethod * @param array $cart_prices * @return bool */ protected function checkConditions ($cart, $method, $cart_prices) { $method->min_amount = (float)$method->min_amount; $method->max_amount = (float)$method->max_amount; $address = (($cart->ST == 0) ? $cart->BT : $cart->ST); $amount = $this->getCartAmount($cart_prices); $amount_cond = ($amount >= $method->min_amount AND $amount <= $method->max_amount OR ($method->min_amount <= $amount AND ($method->max_amount == 0))); $countries = array(); if (!empty($method->countries)) { if (!is_array($method->countries)) { $countries[0] = $method->countries; } else { $countries = $method->countries; } } // probably did not gave his BT:ST address if (!is_array($address)) { $address = array(); $address['virtuemart_country_id'] = 0; } if (!isset($address['virtuemart_country_id'])) { $address['virtuemart_country_id'] = 0; } if (in_array($address['virtuemart_country_id'], $countries) || count($countries) == 0) { if ($amount_cond) { return TRUE; } } return FALSE; } /** * plgVmonSelectedCalculatePricePayment * Calculate the price (value, tax_id) of the selected method * It is called by the calculator * This function does NOT to be reimplemented. If not reimplemented, then the default values from this function are taken. * @cart: VirtueMartCart the current cart * @cart_prices: array the new cart prices * @return null if the method was not selected, false if the shiiping rate is not valid any more, true otherwise * * */ public function plgVmonSelectedCalculatePricePayment (VirtueMartCart $cart, array &$cart_prices, &$cart_prices_name) { return $this->onSelectedCalculatePrice($cart, $cart_prices, $cart_prices_name); } /* * @param $method plugin * @param $where from where tis function is called */ function renderPluginName ($method, $where = 'checkout') { $display_logos = ""; if (!class_exists('RealexHelperCustomerData')) { require(VMPATH_ROOT .'plugins'. DS .'vmpayment'. DS .'realex_hpp_api'. DS .'realex_hpp_api'. DS .'helpers'. DS .'customerdata.php'); } $this->_currentMethod = $method; $realexInterface = $this->_loadRealexInterface(); if ($realexInterface == NULL) { vmdebug('renderPluginName', $method); return; } $realexInterface->getCustomerData(); $extraInfo = ''; if ($realexInterface->customerData->getVar('selected_method') == $method->virtuemart_paymentmethod_id) { //$extraInfo = $realexInterface->getExtraPluginInfo(); //$extraInfo['cc_number'] =$realexInterface->cc_mask($extraInfo['cc_number']); } $logos = $method->payment_logos; if (!empty($logos)) { $display_logos = $this->displayLogos($logos) . ' '; } $payment_name = $method->payment_name; $html = $this->renderByLayout('render_pluginname', array( 'where' => $where, 'shop_mode' => $method->shop_mode, 'virtuemart_paymentmethod_id' => $method->virtuemart_paymentmethod_id, 'logo' => $display_logos, 'payment_name' => $payment_name, 'extraInfo' => $extraInfo, 'payment_description' => $method->payment_desc, )); $html = $this->rmspace($html); return $html; } private function rmspace ($buffer) { return preg_replace('~>\s*\n\s*<~', '><', $buffer); } public function plgVmgetPaymentCurrency ($virtuemart_paymentmethod_id, &$paymentCurrencyId) { if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { return null; // Another method was selected, do nothing } if (!$this->selectedThisElement($method->payment_element)) { return false; } $this->getPaymentCurrency($method); $paymentCurrencyId = $method->payment_currency; //! $method->payment_currency might not be correct } /** * plgVmOnCheckAutomaticSelectedPayment * Checks how many plugins are available. If only one, the user will not have the choice. Enter edit_xxx page * The plugin must check first if it is the correct type * @param VirtueMartCart cart: the cart object * @return null if no plugin was found, 0 if more then one plugin was found, virtuemart_xxx_id if only one plugin is found * */ function plgVmOnCheckAutomaticSelectedPayment (VirtueMartCart $cart, array $cart_prices = array(), &$methodCounter = 0) { return $this->onCheckAutomaticSelected($cart, $cart_prices, $paymentCounter); } /** * This method is fired when showing the order details in the frontend. * It displays the method-specific data. * * @param integer $order_id The order ID * @return mixed Null for methods that aren't active, text (HTML) otherwise */ public function plgVmOnShowOrderFEPayment ($virtuemart_order_id, $virtuemart_paymentmethod_id, &$payment_name) { $this->onShowOrderFE($virtuemart_order_id, $virtuemart_paymentmethod_id, $payment_name); return true; } /** * This method is fired when showing when priting an Order * It displays the the payment method-specific data. * * @param integer $_virtuemart_order_id The order ID * @param integer $method_id method used for this order * @return mixed Null when for payment methods that were not selected, text (HTML) otherwise */ public function plgVmonShowOrderPrintPayment ($order_number, $method_id) { return $this->onShowOrderPrint($order_number, $method_id); } public function plgVmDeclarePluginParamsPaymentVM3( &$data) { return $this->declarePluginParams('payment', $data); } public function plgVmSetOnTablePluginParamsPayment ($name, $id, &$table) { return $this->setOnTablePluginParams($name, $id, $table); } public function plgVmOnPaymentNotification () { if (!class_exists('VirtueMartModelOrders')) { require(VMPATH_ADMIN . DS . 'models' . DS . 'orders.php'); } if (!class_exists('VirtueMartCart')) { require(VMPATH_SITE . DS . 'helpers' . DS . 'cart.php'); } $notificationTask = vRequest::getCmd('notificationTask', ''); // this is not our notification if (empty($notificationTask)) { return; } if ($notificationTask == 'jumpRedirect') { $this->jumpRedirect(); } elseif ($notificationTask == 'handleRedirect') { $this->handleRedirect(); } elseif ($notificationTask == 'handleRemoteDccForm') { $this->handleRemoteDccForm(); } elseif ($notificationTask == 'handleRemoteCCForm') { $this->handleRemoteCCForm(); } elseif ($notificationTask == 'handleVerify3D') { $this->handleVerify3D(); } elseif ($notificationTask == 'handle3DSRequest') { $this->handle3DSRequest(); } return true; } private function handleRedirect () { $realex_data = vRequest::getPost(); $this->debugLog('plgVmOnPaymentNotification :' . var_export($realex_data, true), 'debug'); if (!isset($realex_data['ORDER_ID'])) { return false; } $order_number = $realex_data['ORDER_ID']; if (empty($order_number)) { return FALSE; } if (!($virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number))) { return FALSE; } if (!($payments = $this->getDatasByOrderId($virtuemart_order_id))) { return FALSE; } $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($virtuemart_order_id); $this->_currentMethod = $this->getVmPluginMethod($order['details']['BT']->virtuemart_paymentmethod_id); if (!$this->selectedThisElement($this->_currentMethod->payment_element)) { //echo "selectedThisElement PB"; return FALSE; } $realexInterface = $this->_loadRealexInterface(); if (!$realexInterface->validateResponseHash($realex_data)) { $this->returnToVm($realex_data, false, $order['details']['BT']->virtuemart_paymentmethod_id); return FALSE; } $result = $realex_data['RESULT']; $realexInterface->setOrder($order); //$cart = VirtueMartCart::getCart(); //$realexInterface->setCart($cart, false); $order_history = array(); $success = ($result == $realexInterface::RESPONSE_CODE_SUCCESS); if ($success) { $status = $this->_currentMethod->status_success; $amountInCurrency = vmPSPlugin::getAmountInCurrency($order['details']['BT']->order_total, $order['details']['BT']->order_currency); //$currencyDisplay = CurrencyDisplay::getInstance($cart->pricesCurrency); $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED', $amountInCurrency['display'], $order_number); if (isset($realex_data['DCCCHOICE']) and $realex_data['DCCCHOICE'] == $realexInterface::RESPONSE_DCC_CHOICE_YES) { $order_history['comments'] .= "<br />"; $order_history['comments'] .= vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_CHARGED', $this->getCardHolderAmount($realex_data['DCCMERCHANTAMOUNT']), $realex_data['DCCMERCHANTCURRENCY'], $this->getCardHolderAmount($realex_data['DCCCARDHOLDERAMOUNT']), $realex_data['DCCCARDHOLDERCURRENCY']); } $userfield = $realexInterface->cardStorageResponse($realex_data); $realexInterface->storeNewPayment($userfield); if (isset($realex_data['REALWALLET_CHOSEN']) and $realex_data['REALWALLET_CHOSEN'] == 1) { if ($userfield) { $cardStorageResponseText = vmText::_('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_SUCCESS'); } else { $cardStorageResponseText = vmText::_('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_FAILED'); } $order_history['comments'] .= "<br />"; $order_history['comments'] .= $cardStorageResponseText; } } else { /** * Note: If a transaction is processed through your account that triggers one of the scenarios that you have set up to reject, * HPP will send a post back to your response script with a Result Code of 110 and a relevant error message. The transaction will not be processed. */ $order_history['comments'] = vmText::_('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED'); // here we check if wee need to add the message /* if ($realex_data['RESULT'] == (int)$realexInterface::RESPONSE_CODE_NOT_VALIDATED) { $order_history['comments'] .= "<br />"; $order_history['comments'] .= $realex_data['MESSAGE']; } */ $status = $this->_currentMethod->status_canceled; } $order_history['customer_notified'] = true; $order_history['order_status'] = $status; $db_values['payment_name'] = $this->renderPluginName($this->_currentMethod, 'order'); $db_values['virtuemart_order_id'] = $virtuemart_order_id; $db_values['order_number'] = $order_number; $db_values['virtuemart_paymentmethod_id'] = $this->_currentMethod->virtuemart_paymentmethod_id; $db_values['realex_hpp_api_response_result'] = $realex_data['RESULT']; $db_values['realex_hpp_api_request_type_response'] = $realexInterface::REQUEST_TYPE_AUTH; $db_values['realex_hpp_api_response_pasref'] = isset($realex_data['PASREF']) ? $realex_data['PASREF'] : ""; $db_values['realex_hpp_api_response_authcode'] = isset($realex_data['AUTHCODE']) ? $realex_data['AUTHCODE'] : ""; $db_values['realex_hpp_api_fullresponse'] = json_encode($realex_data); $db_values['realex_hpp_api_fullresponse_format'] = 'json'; $this->storePSPluginInternalData($db_values); $modelOrder = VmModel::getModel('orders'); $modelOrder->updateStatusForOneOrder($virtuemart_order_id, $order_history, TRUE); if ($result == $realexInterface::RESPONSE_CODE_SUCCESS) { if (isset($payments[0]->realex_hpp_api_custom)) { $this->emptyCart($payments[0]->realex_hpp_api_custom, $order_number); } } //$this->displayMessageToRealex($realexInterface, $realex_data, $success, $order_history['comments'], $payments[0]->virtuemart_paymentmethod_id); $this->returnToVm($realex_data, $success, $order['details']['BT']->virtuemart_paymentmethod_id); } private function initRealexInterface ($loadCDFromPost = true) { // TODO check if cart is empty $virtuemart_paymentmethod_id = vRequest::getInt('pm', false); $this->_currentMethod = $this->getVmPluginMethod($virtuemart_paymentmethod_id); if (!$this->selectedThisElement($this->_currentMethod->payment_element)) { vmError('Programmer error: missing the pm parameter'); $this->redirectToCart(); return FALSE; } $realexInterface = $this->_loadRealexInterface(); $realexInterface->loadCustomerData($loadCDFromPost); $order_number = vRequest::getString('order_number', false); if (!($virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number))) { $this->redirectToCart(); return FALSE; } $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($virtuemart_order_id); $realexInterface->setOrder($order); $realexInterface->setPaymentCurrency(); $realexInterface->setTotalInPaymentCurrency($order['details']['BT']->order_total); return $realexInterface; } private function handleRemoteDccForm () { $realexInterface = $this->initRealexInterface(false); $cart = VirtueMartCart::getCart(); $realexInterface->setCart($cart, false); if (!($payments = $this->getDatasByOrderId($realexInterface->order['details']['BT']->virtuemart_order_id))) { $this->redirectToCart(); return FALSE; } $dcc_payment = $realexInterface->getTransactionData($payments, array( $realexInterface::REQUEST_TYPE_DCCRATE, $realexInterface::REQUEST_TYPE_REALVAULT_DCCRATE )); if (!$dcc_payment) { $this->redirectToCart(); return FALSE; } $this->handleRemoteCCForm($dcc_payment->realex_hpp_api_fullresponse); /* $realexInterface->confirmedOrderDccRequest($dcc_payment->realex_hpp_api_fullresponse); $this->updateOrderStatus($realexInterface->order); $this->customerData->clear(); $cart->emptyCart(); $submit_url = JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&pm=' . $this->_currentMethod->virtuemart_paymentmethod_id . '&on=' . $realexInterface->order['details']['BT']->order_number . '&Itemid=' . vRequest::getInt('Itemid') . '&lang=' . vRequest::getCmd('lang', ''); $app = JFactory::getApplication(); $app->redirect(JRoute::_($submit_url)); */ } private function handleRemoteCCForm ($response_dcc = NULL, $loadFromPost = true) { $realexInterface = $this->initRealexInterface($loadFromPost); $realvaultData = false; if (! $this->validateCCForm($realexInterface, $realvaultData)) { return; } if ($this->_currentMethod->dcc AND empty($response_dcc)) { $response = $realexInterface->requestDccRate($realvaultData); $realexInterface->manageResponseDccRate($response); //$this->_storeRealexInternalData($response, $this->_currentMethod->virtuemart_paymentmethod_id, $realexInterface->order['details']['BT']->virtuemart_order_id, $realexInterface->order['details']['BT']->order_number, $realexInterface->request_type); $xml_response = simplexml_load_string($response); /* * 105: Card not supported by eDCC * 00: Card supported by eDCC */ $success = $realexInterface->isResponseSuccess($xml_response); if ($success) { $remoteDCCFormParams =$realexInterface->getRemoteDCCFormParams($xml_response); $html = $this->renderByLayout('remote_cc_form', $remoteDCCFormParams); echo $html; return; } else { //vmError($xml_response->message); //$this->redirectToCart(); //$response = $realexInterface->requestAuth(); //$realexInterface->manageResponseRequestAuth($response); } } if ($realvaultData) { $pmt_type = $realvaultData->realex_hpp_api_saved_pmt_type; } else { $pmt_type = NULL; } if ($this->_currentMethod->threedsecure and $realexInterface->isCC3DSVerifyEnrolled($pmt_type)) { $response3DSVerifyEnrolled = $realexInterface->request3DSVerifyEnrolled($realvaultData); $realexInterface->manageResponse3DSVerifyEnrolled($response3DSVerifyEnrolled); $eci = $realexInterface->getEciFrom3DSVerifyEnrolled($response3DSVerifyEnrolled); $xml_response3DSVerifyEnrolled = simplexml_load_string($response3DSVerifyEnrolled); $result = (string)$xml_response3DSVerifyEnrolled->result; // 503 - no entry for MERCHANT in RealMPI merchant_details table if ($eci === false and $result != 503) { //$this->_storeRealexInternalData($response, $this->_currentMethod->virtuemart_paymentmethod_id, $realexInterface->order['details']['BT']->virtuemart_order_id, $realexInterface->order['details']['BT']->order_number, $realexInterface->request_type); if ($result == $realexInterface::RESPONSE_CODE_SUCCESS) { $realexInterface->redirect3DSRequest($response3DSVerifyEnrolled); return; } else { // we should be here if Result=110 + enrolled =U // result=5xx and enrolled not available // result =220 (ENROLLED_RESULT_FATAL_ERROR) $this->redirectToCart(); return FALSE; } } else { $xml_response3DSVerifyEnrolled = simplexml_load_string($response3DSVerifyEnrolled); $xml_response3DSVerifyEnrolled->addChild('eci', $eci); $xml_response_dcc = simplexml_load_string($response_dcc); //$response = $realexInterface->requestAuth($response_dcc, $xml_response3DSVerifyEnrolled); if ($realvaultData) { $response = $realexInterface->requestReceiptIn($realvaultData, $xml_response_dcc, $xml_response3DSVerifyEnrolled); } else { $response = $realexInterface->requestAuth($xml_response_dcc, $xml_response3DSVerifyEnrolled); } $realexInterface->manageResponseRequestAuth($response); } } else { //$userfield = $realexInterface->handleCardStorage($saved_cc_selected); // TODO eci missing? $xml_response_dcc = NULL; if ($response_dcc) { $xml_response_dcc = simplexml_load_string($response_dcc); } if ($realvaultData) { $response = $realexInterface->requestReceiptIn($realvaultData, $xml_response_dcc); } else { $response = $realexInterface->requestAuth($xml_response_dcc); } $realexInterface->manageResponseRequestAuth($response); } //$payments = $this->getDatasByOrderId($realexInterface->order['details']['BT']->virtuemart_order_id); $success = $this->updateOrderStatus($realexInterface->order, false); if ($success) { $saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); $userfield = $realexInterface->handleCardStorage($saved_cc_selected); $realexInterface->storeNewPayment($userfield); $this->customerData->clear(); $cart = VirtueMartCart::getCart(); $cart->emptyCart(); $submit_url = JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&pm=' . $this->_currentMethod->virtuemart_paymentmethod_id . '&on=' . $realexInterface->order['details']['BT']->order_number . '&Itemid=' . vRequest::getInt('Itemid') . '&lang=' . vRequest::getCmd('lang', ''); $app = JFactory::getApplication(); $app->redirect(JRoute::_($submit_url)); } else { $this->redirectToCart(); } } private function validateCCForm($realexInterface, &$realvaultData) { $realvaultData = false; $return=false; if (!JFactory::getUser()->guest AND $this->_currentMethod->realvault) { $saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); if ($saved_cc_selected > 0) { $realvaultData = $realexInterface->getStoredCCsData($saved_cc_selected); if (!$cvv_realvault = $realexInterface->validateCvv()) { $remoteCCFormParams =$realexInterface->getRemoteCCFormParams(NULL, true); $html = $this->renderByLayout('remote_cc_form', $remoteCCFormParams); echo $html; return false; } $realvaultData->cc_cvv_realvault = $this->customerData->getVar('cc_cvv_realvault'); $this->customerData->saveCustomerRealVaultData((array)$realvaultData); return true; } else { if ($this->_currentMethod->integration == 'redirect') { $html = $realexInterface->sendPostRequest(); echo $html; $cart = VirtueMartCart::getCart(); $cart->_confirmDone = FALSE; $cart->_dataValidated = FALSE; $cart->setCartIntoSession(); return false; } else { if (!$realexInterface->validateRemoteCCForm()) { $remoteCCFormParams =$realexInterface->getRemoteCCFormParams(); $html = $this->renderByLayout('remote_cc_form', $remoteCCFormParams); echo $html; return false; } else { return true; } } } } else { if (!$realexInterface->validateRemoteCCForm()) { $remoteCCFormParams =$realexInterface->getRemoteCCFormParams(); $html = $this->renderByLayout('remote_cc_form', $remoteCCFormParams); echo $html; return false; } else { return true; } } return $return; } /** * @return bool */ private function handleVerify3D () { $realexInterface = $this->initRealexInterface(); $realvaultData=false; if (! $this->validateCCForm($realexInterface, $realvaultData)) { return; } $cart = VirtueMartCart::getCart(); $realexInterface->setCart($cart, false); $response3DSVerifyEnrolled = $realexInterface->request3DSVerifyEnrolled($realvaultData); $eci = $realexInterface->manageResponse3DSVerifyEnrolled($response3DSVerifyEnrolled); $xml_response3DSVerifyEnrolled = simplexml_load_string($response3DSVerifyEnrolled); $result = (string)$xml_response3DSVerifyEnrolled->result; if (!$eci and $result != '503') { $realexInterface->redirect3dsRequest($response3DSVerifyEnrolled); return; } $saved_cc_selected=NULL; if ($eci !== false or $result == '503') { $realexInterface->handleCardStorage($saved_cc_selected); $xml_response3DSVerifyEnrolled = simplexml_load_string($response3DSVerifyEnrolled); $response = $realexInterface->requestAuth(NULL, $xml_response3DSVerifyEnrolled); $realexInterface->manageResponseRequestAuth($response); $xml_response = simplexml_load_string($response); $success = $realexInterface->isResponseSuccess($xml_response); } else { $success = false; } $order_history = array(); if ($success) { $status = $this->_currentMethod->status_success; $amountValue = vmPSPlugin::getAmountInCurrency($realexInterface->order['details']['BT']->order_total, $realexInterface->order['details']['BT']->order_currency); $currencyDisplay = CurrencyDisplay::getInstance($realexInterface->cart->pricesCurrency); $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED', $amountValue['display'], $realexInterface->order['details']['BT']->order_number); } else { $order_history['comments'] = vmText::_('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED'); $status = $this->_currentMethod->status_canceled; } $order_history['customer_notified'] = true; $order_history['order_status'] = $status; $modelOrder = VmModel::getModel('orders'); $modelOrder->updateStatusForOneOrder($realexInterface->order['details']['BT']->virtuemart_order_id, $order_history, TRUE); //$payments = $this->getDatasByOrderId($realexInterface->order['details']['BT']->virtuemart_order_id); //$html = $realexInterface->getResponseHTML($payments); $this->customerData->clear(); $cart->emptyCart(); $submit_url = JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&pm=' . $this->_currentMethod->virtuemart_paymentmethod_id . '&on=' . $realexInterface->order['details']['BT']->order_number . '&Itemid=' . vRequest::getInt('Itemid') . '&lang=' . vRequest::getCmd('lang', ''); $app = JFactory::getApplication(); $app->redirect(JRoute::_($submit_url)); return true; } private function handle3DSRequest () { $realexInterface = $this->initRealexInterface(false); $cart = VirtueMartCart::getCart(); $realexInterface->setCart($cart, false); $saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); $realvault = false; if ($saved_cc_selected > 0) { $realvault = $realexInterface->getStoredCCsData($saved_cc_selected); $realvault->cc_cvv_realvault = $this->customerData->getVar('cc_cvv_realvault'); $this->customerData->saveCustomerRealVaultData((array)$realvault); } if (!($payments = $this->getDatasByOrderId($realexInterface->order['details']['BT']->virtuemart_order_id))) { $this->redirectToCart(); return FALSE; } $dcc_payment = $realexInterface->getTransactionData($payments, array( $realexInterface::REQUEST_TYPE_DCCRATE, $realexInterface::REQUEST_TYPE_REALVAULT_DCCRATE )); if ($dcc_payment) { $xml_dcc_payment = simplexml_load_string($dcc_payment->realex_hpp_api_fullresponse); } else { $xml_dcc_payment = NULL; } $response3DSVerifysig = $realexInterface->request3DSVerifysig($realvault); $realexInterface->manageResponse3DSVerifysig($response3DSVerifysig); $eci = $realexInterface->getEciFrom3DSVerifysig($response3DSVerifysig, $this->_currentMethod->require_liability); $xml_response3DSVerifysig = simplexml_load_string($response3DSVerifysig); if ($eci !== false) { $xml_response3DSVerifysig->threedsecure->eci = $eci; if ($realvault) { $response = $realexInterface->requestReceiptIn($realvault, $xml_dcc_payment, $xml_response3DSVerifysig); } else { $response = $realexInterface->requestAuth($xml_dcc_payment, $xml_response3DSVerifysig); } $realexInterface->manageResponseRequestAuth($response); $xml_response = simplexml_load_string($response); $success = $realexInterface->isResponseSuccess($xml_response); } else { $success = false; } $order_history = array(); $redirectToCart = false; if ($success) { $userfield = $realexInterface->handleCardStorage($saved_cc_selected); $realexInterface->storeNewPayment($userfield); $status = $this->_currentMethod->status_success; $amountValue = vmPSPlugin::getAmountInCurrency($realexInterface->order['details']['BT']->order_total, $realexInterface->order['details']['BT']->order_currency); $currencyDisplay = CurrencyDisplay::getInstance($realexInterface->cart->pricesCurrency); $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED', $amountValue['display'], $realexInterface->order['details']['BT']->order_number); if (isset($xml_response->dccinfo) AND isset($xml_response->dccinfo->cardholderrate)) { $order_history['comments'] .= "<br />"; if ($xml_response->dccinfo->cardholderrate != 1.0) { $order_history['comments'] .= vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_CHARGED', $this->getCardHolderAmount($xml_response->dccinfo->merchantamount), $xml_response->dccinfo->merchantcurrency, $this->getCardHolderAmount($xml_response->dccinfo->cardholderamount), $xml_response->dccinfo->cardholdercurrency); } else { $order_history['comments'] .= vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_MERCHANT_CURRENCY', $this->getCardHolderAmount($xml_response->dccinfo->merchantamount), $xml_response->dccinfo->merchantcurrency); } $order_history['comments'] .= "<br />"; } else { } } else { $msgToShopper=''; $status = $this->_currentMethod->status_canceled; if ($realexInterface->isResponseDeclined($xml_response3DSVerifysig)) { $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_DECLINED', $realexInterface->order['details']['BT']->order_number); $msgToShopper=$xml_response3DSVerifysig->message; } elseif ($realexInterface->isResponseWrongPhrase($xml_response3DSVerifysig)) { $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED', $realexInterface->order['details']['BT']->order_number); $msgToShopper=$xml_response3DSVerifysig->message; } elseif ($realexInterface->isResponseAlreadyProcessed($xml_response3DSVerifysig)) { $order_history['comments'] = $xml_response3DSVerifysig->message; $msgToShopper=$xml_response3DSVerifysig->message; // log this response, but do not change the order status $status = $realexInterface->order['details']['BT']->order_status; /* } elseif ($xml_response and $realexInterface->isResponseInvalidPaymentDetails($xml_response)) { $order_history['comments'] =$xml_response->message; if ($realvault) { $accountURL=JRoute::_('index.php?option=com_virtuemart&view=user&layout=edit'); $msgToShopper=vmText::sprintf('VMPAYMENT_REALEX_HPP_API_INVALID_PAYMENT_DETAILS_REALVAULT',$xml_response->message, $accountURL); } else { $msgToShopper=vmText::sprintf('VMPAYMENT_REALEX_HPP_API_INVALID_PAYMENT_DETAILS',$xml_response->message); } */ } else { $order_history['comments'] = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED', $realexInterface->order['details']['BT']->order_number); } $redirectToCart = true; } $order_history['customer_notified'] = true; $order_history['order_status'] = $status; // $this->updateOrderStatus($realexInterface->order, $redirectToCart); $modelOrder = VmModel::getModel('orders'); $modelOrder->updateStatusForOneOrder($realexInterface->order['details']['BT']->virtuemart_order_id, $order_history, false); /* $payments = $this->getDatasByOrderId($realexInterface->order['details']['BT']->virtuemart_order_id); $html = $realexInterface->getResponseHTML($payments); $this->customerData->clear(); $cart = VirtueMartCart::getCart(); $cart->emptyCart(); vRequest::setVar('display_title', false); vRequest::setVar('html', $html); echo $html; */ //$html = $realexInterface->getResponseHTML($payments); if ($redirectToCart) { $this->redirectToCart($msgToShopper); } else { $this->customerData->clear(); $cart = VirtueMartCart::getCart(); $cart->emptyCart(); $submit_url = JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&pm=' . $this->_currentMethod->virtuemart_paymentmethod_id . '&on=' . $realexInterface->order['details']['BT']->order_number . '&Itemid=' . vRequest::getInt('Itemid') . '&lang=' . vRequest::getCmd('lang', ''); $app = JFactory::getApplication(); $app->redirect(JRoute::_($submit_url)); } return true; } /** * This message allows to redirect from Realex payment form to VM * @param $realex_data * @param $success * @param $virtuemart_paymentmethod_id */ private function returnToVm ($realex_data, $success, $virtuemart_paymentmethod_id) { $html=''; // add spin image $html .= '<form action="' . JURI::root(false) . '" method="post" id="vmPaymentForm" name="vm_realex_form" accept-charset="UTF-8">'; $html .= '<input type="hidden" name="charset" value="utf-8">'; $html .= '<input type="hidden" name="option" value="com_virtuemart" />'; $html .= '<input type="hidden" name="view" value="pluginresponse" />'; if ($success) { $html .= '<input type="hidden" name="task" value="pluginresponsereceived" />'; } else { $html .= '<input type="hidden" name="task" value="pluginUserPaymentCancel" />'; } $html .= '<input type="hidden" name="on" value="' . $realex_data['ORDER_ID'] . '" />'; $html .= '<input type="hidden" name="pm" value="' . $virtuemart_paymentmethod_id . '" />'; $html .= '<input type="hidden" name="Itemid" value="' . vRequest::getInt('Itemid') . '" />'; $html .= '<input type="hidden" name="lang" value="' . vRequest::getCmd('lang', '') . '" />'; $html .= '<input type="submit" value="' . vmText::_('VMPAYMENT_REALEX_HPP_API_REDIRECT_MESSAGE') . '" /> <script type="text/javascript">'; $html .= ' document.vm_realex_form.submit();'; $html .= ' </script>'; $html .= '</form>'; echo $html; } function getCardHolderAmount ($dcccardholderamount) { return sprintf("%01.2f", $dcccardholderamount * 0.01); } /*******************/ /* Credit Card API */ /*******************/ public function _getCVVImages ($cvv_images) { $img = ''; if ($cvv_images) { $img = $this->displayLogos($cvv_images); $img = str_replace('"', "'", $img); } return $img; } public function plgVmOnRealexDeletedStoredCard ($element, $storedCC, &$success) { if (!$this->selectedThisElement($element)) { return FALSE; } $vendorId = 1; if ($this->getPluginMethods($vendorId) === 0) { return false; } foreach ($this->methods as $method) { if ($method->merchant_id == $storedCC['merchant_id']) { // the crypted fields are decrypted with that function if (!($this->_currentMethod = $this->getVmPluginMethod($method->virtuemart_paymentmethod_id))) { return FALSE; // this should not happen } break; } } $realexInterface = $this->_loadRealexInterface(); if (!$realexInterface) { return false; } $success = $realexInterface->deleteStoredCard($storedCC); return $success; } public function plgVmOnRealexUpdateStoredCard ($element, $storedCC, &$success) { if (!$this->selectedThisElement($element)) { return FALSE; } $vendorId = 1; if ($this->getPluginMethods($vendorId) === 0) { return false; } foreach ($this->methods as $method) { if ($method->merchant_id == $storedCC['merchant_id']) { // the crypted fields are decrypted with that function if (!($this->_currentMethod = $this->getVmPluginMethod($method->virtuemart_paymentmethod_id))) { return FALSE; // this should not happen } break; } } if (empty($this->_currentMethod)) { Vmerror('No payment has been found with ' . $storedCC['merchant_id']); return FALSE; } //vmdebug('plgVmOnRealexUpdateStoredCard',$this->_currentMethod ); $realexInterface = $this->_loadRealexInterface(); if (!$realexInterface) { return false; } $success = $realexInterface->updateStoredCard($storedCC); return $success; } /** * @return string */ function getPayerRefTableName () { return $this->_tablename . '_payerref'; } /** * @param $response * @param $virtuemart_paymentmethod_id * @param $virtuemart_order_id * @param $order_number * @param $request_type * @return mixed */ function _storeRealexInternalData ($response, $virtuemart_paymentmethod_id, $virtuemart_order_id, $order_number, $request_type) { $xml_response = simplexml_load_string($response); //$db_values['payment_name'] = $this->renderPluginName($this->_currentMethod, 'order'); $db_values['virtuemart_order_id'] = $virtuemart_order_id; $db_values['order_number'] = $order_number; $db_values['virtuemart_paymentmethod_id'] = $virtuemart_paymentmethod_id; $db_values['realex_hpp_api_response_result'] = (string)$xml_response->result; if (isset($xml_response->pasref)) { $db_values['realex_hpp_api_response_pasref'] = (string)$xml_response->pasref; } if (isset($xml_response->authcode)) { $db_values['realex_hpp_api_response_authcode'] = (string)$xml_response->authcode; } $db_values['realex_hpp_api_request_type_response'] = $request_type; $db_values['realex_hpp_api_fullresponse_format'] = 'xml'; $db_values['realex_hpp_api_fullresponse'] = $response; $this->storePSPluginInternalData($db_values); return $db_values; } private function jumpRedirect () { // url sent in get $url = vRequest::getVar('gateway_url'); unset($_POST['gateway_url']); ?> <html> <head> <title>Transferring...</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="form1" action="<?php echo $url; ?>" method="POST"> <?php // get the posted vars $field_array = array_keys($_POST); //loop posted fields for ($i = 0; $i < count($field_array); $i++) { $actual_var = $field_array[$i]; $actual_val = stripslashes(vRequest::getVar($actual_var)); //hidden form field echo("<input type=\"hidden\" name=\""); echo($actual_var . "\" value=\""); echo(trim($actual_val) . "\" />\n"); } ?> </form> <script language="javascript"> var f = document.forms; f = f[0]; f.submit(); </script> </body> </html> <?php } /** * createToken to avoid double form submit * @return string */ function createToken () { static $chars = '0123456789abcdef'; $max = strlen($chars) - 1; $token = ''; $name = session_name(); $length = 32; for ($i = 0; $i < $length; ++$i) { $token .= $chars[(rand(0, $max))]; } return md5($token . $name); } function saveTokenInSession ($token) { $session = JFactory::getSession(); $session->set('RealexToken', $token, 'vm'); } function checkToken ($token) { $session = JFactory::getSession(); $sessionToken = $session->get('RealexToken', 0, 'vm'); if ($token == $sessionToken) { return true; } return false; } function clearToken() { $session = JFactory::getSession(); $session->clear('RealexToken', 'vm'); } } // class // No closing tag realex_hpp_api.xml 0000604 00000035705 15075477240 0010267 0 ustar 00 <?xml version="1.0" encoding="UTF-8" ?> <extension version="2.5" type="plugin" group="vmpayment" method="upgrade"> <description>Realex HPP and API</description> <name>realex_hpp_api</name> <creationDate>March 11 2016</creationDate> <author>The VirtueMart Development Team</author> <authorUrl>http://www.virtuemart.net</authorUrl> <copyright>Copyright (C) 2004-2016 Virtuemart Team. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> <version>3.0.14</version> <description><![CDATA[<a href="http://realex.com" target="_blank">realex</a> is a popular payment provider and available in many countries. ]]> </description> <files> <filename plugin="realex_hpp_api">realex_hpp_api.php</filename> <folder>language</folder> </files> <vmconfig> <fields name="params"> <fieldset name="Realex" addfieldpath="/plugins/vmpayment/realex_hpp_api/realex_hpp_api/fields"> <field type="getrealex" /> <field class="level1" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_ACCOUNT_PARAMS"/> <field name="integration" type="list" default="redirect" label="VMPAYMENT_REALEX_HPP_API_INTEGRATION" description="VMPAYMENT_REALEX_HPP_API_INTEGRATION_TIP"> <option value="redirect">VMPAYMENT_REALEX_HPP_API_INTEGRATION_REDIRECT</option> <option value="remote">VMPAYMENT_REALEX_HPP_API_INTEGRATION_REMOTE</option> </field> <field class="sandbox" name="shop_mode" type="radio" default="sandbox" label="VMPAYMENT_REALEX_HPP_API_SHOP_MODE" description="VMPAYMENT_REALEX_HPP_API_SHOP_MODE_TIP"> <option value="live">VMPAYMENT_REALEX_HPP_API_LIVE</option> <option value="sandbox">VMPAYMENT_REALEX_HPP_API_SANDBOX</option> </field> <!-- REDIRECT PARAMETERS --> <field class="required" name="merchant_id" type="text" size="40" default="" label="VMPAYMENT_REALEX_HPP_API_MERCHANT_ID" description="VMPAYMENT_REALEX_HPP_API_MERCHANT_ID_TIP"/> <field class="required" name="shared_secret" type="password" size="40" default="" label="VMPAYMENT_REALEX_HPP_API_SHARED_SECRET" description="VMPAYMENT_REALEX_HPP_API_SHARED_SECRET_TIP"/> <field class="required redirect remote" name="subaccount" type="text" size="40" default="" label="VMPAYMENT_REALEX_HPP_API_SUBACCOUNT"/> <field class="level1" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS"/> <field name="creditcards" type="creditcards" multiple="multiple" default="" label="VMPAYMENT_REALEX_HPP_API_CREDITCARDS" description="VMPAYMENT_REALEX_HPP_API_CREDITCARDS_TIP"/> <field class="nodcc" name="settlement" type="list" default="1" label="VMPAYMENT_REALEX_HPP_API_SETTLEMENT" description="VMPAYMENT_REALEX_HPP_API_SETTLEMENT_TIP"> <option value="auto">VMPAYMENT_REALEX_HPP_API_SETTLEMENT_AUTO</option> <option value="delayed">VMPAYMENT_REALEX_HPP_API_SETTLEMENT_DELAYED</option> </field> <field class="dcc" name="settlement_warning" type="list" default="auto" label="VMPAYMENT_REALEX_HPP_API_SETTLEMENT" description="VMPAYMENT_REALEX_HPP_API_SETTLEMENT_TIP"> <option value="auto">VMPAYMENT_REALEX_HPP_API_SETTLEMENT_AUTO</option> </field> <field class="dcc" type="vmtitle" default="" description="VMPAYMENT_REALEX_HPP_API_SETTLEMENT_WARNING"/> <field class="level2" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_REALVAULT"/> <field class="redirect remote" name="realvault" type="list" default="0" label="VMPAYMENT_REALEX_HPP_API_REALVAULT" description="VMPAYMENT_REALEX_HPP_API_REALVAULT_TIP"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field class="realvault-param" name="offer_save_card" type="list" default="0" label="VMPAYMENT_REALEX_HPP_API_OFFER_SAVE_CARD" description="VMPAYMENT_REALEX_HPP_API_OFFER_SAVE_CARD_TIP"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field class="realvault-param" name="cvn_checking" type="list" default="0" label="VMPAYMENT_REALEX_HPP_API_CVN_CHECKING" description="VMPAYMENT_REALEX_HPP_API_CVN_CHECKING_TIP"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field class="level2" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_3DSECURE"/> <field class="redirect-norealvault" type="vmtitle" description="VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_3DSECURE_REALEX"/> <field class="redirect-realvault" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_3DSECURE_REALVAULT"/> <field class="redirect-realvault realvault" name="threedsecure" type="list" default="1" label="VMPAYMENT_REALEX_HPP_API_3DSECURE" description="VMPAYMENT_REALEX_HPP_API_3DSECURE_TIP"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field class="redirect-realvault threedsecure" name="require_liability" type="list" default="0" label="VMPAYMENT_REALEX_HPP_API_REQUIRE_LIABILITY" description="VMPAYMENT_REALEX_HPP_API_REQUIRE_LIABILITY_TIP"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field class="level2" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_FRAUD_SECTION"/> <field name="tss" type="list" default="0" label="VMPAYMENT_REALEX_HPP_API_TSS" description="VMPAYMENT_REALEX_HPP_API_TSS_TIP"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field class="level2" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_ACCOUNT_OPTIONS_DCC"/> <field name="dcc" type="list" default="0" label="VMPAYMENT_REALEX_HPP_API_DCC" description="VMPAYMENT_REALEX_HPP_API_DCC_TIP"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field class="remote dcc" name="dcc_service" type="list" default="1" label="VMPAYMENT_REALEX_HPP_API_DCC_SERVICE" description="VMPAYMENT_REALEX_HPP_API_DCC__CHOICE_TIP"> <option value="fexco">VMPAYMENT_REALEX_HPP_API_DCC_FEXCO</option> <option value="euroconex">VMPAYMENT_REALEX_HPP_API_DCC_EUROCONEX</option> </field> <field class="level1 redirect" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_URLS_SECTION"/> <field class="redirect" name="referring_url" type="referringurl" size="100" default="" editable="true" label="VMPAYMENT_REALEX_HPP_API_REFERRING_URL" description="VMPAYMENT_REALEX_HPP_API_REFERRING_URL_TIP"/> <field class="redirect" name="gateway_url" type="text" size="100" default="https://hpp.realexpayments.com/pay" editable="true" label="VMPAYMENT_REALEX_HPP_API_GATEWAY_URL" description="VMPAYMENT_REALEX_HPP_API_GATEWAY_URL_TIP"/> <field class="redirect" name="sandbox_gateway_url" type="text" size="100" default="https://hpp.sandbox.realexpayments.com/pay" editable="true" label="VMPAYMENT_REALEX_HPP_API_SANDBOX_GATEWAY_URL" description="VMPAYMENT_REALEX_HPP_API_SANDBOX_GATEWAY_URL_TIP"/> <field class="level1" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_ORDER_STATUS_SECTION" description=""/> <field name="status_success" type="vmorderstate" scope="com_virtuemart" default="C" label="VMPAYMENT_REALEX_HPP_API_STATUS_SUCCESS" description="VMPAYMENT_REALEX_HPP_API_STATUS_SUCCESS_TIP"/> <field name="status_canceled" type="vmorderstate" scope="com_virtuemart" default="X" label="VMPAYMENT_REALEX_HPP_API_STATUS_CANCEL" description="VMPAYMENT_REALEX_HPP_API_STATUS_CANCEL_TIP"/> <field class="settlement" name="status_capture" type="vmorderstate" scope="com_virtuemart" default="S" label="VMPAYMENT_REALEX_HPP_API_STATUS_CAPTURE" description="VMPAYMENT_REALEX_HPP_API_STATUS_CAPTURE_TIP"/> <field name="status_rebate" type="vmorderstate" scope="com_virtuemart" default="R" label="VMPAYMENT_REALEX_HPP_API_STATUS_REBATE" description="VMPAYMENT_REALEX_HPP_API_STATUS_REBATE_TIP"/> <field class="required dcc_choice" name="rebate_password" type="password" size="40" default="" label="VMPAYMENT_REALEX_HPP_API_REBATE_PASSWORD" description="VMPAYMENT_REALEX_HPP_API_REBATE_PASSWORD_TIP"/> <field name="status_partial_refunded" type="vmorderstate" scope="com_virtuemart" default="R" label="VMPAYMENT_REALEX_HPP_API_STATUS_PARTIAL_REFUND" description="VMPAYMENT_REALEX_HPP_API_STATUS_PARTIAL_REFUND_TIP"/> <field class="level1" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_OPTIONAL_PARAMS"/> <!-- Restrictions --> <!-- ============ --> <field class="level2" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_RESTRICTIONS_SECTION" description=""/> <field name="countries" type="vmcountries" scope="com_virtuemart" default="" label="VMPAYMENT_REALEX_HPP_API_COUNTRIES" description="VMPAYMENT_REALEX_HPP_API_COUNTRIES_DESC"/> <field name="min_amount" type="text" label="VMPAYMENT_REALEX_HPP_API_MIN_AMOUNT" description="VMPAYMENT_REALEX_HPP_API_MIN_AMOUNT_TIP"/> <field name="max_amount" type="text" label="VMPAYMENT_REALEX_HPP_API_MAX_AMOUNT" description="VMPAYMENT_REALEX_HPP_API_MAX_AMOUNT_TIP"/> <!-- Currencies --> <!-- ============ --> <field class="level2" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_CURRENCIES_SECTION" description=""/> <field name="payment_currency" type="vmacceptedcurrency" default="" label="VMPAYMENT_REALEX_HPP_API_CURRENCY" description="VMPAYMENT_REALEX_HPP_API_CURRENCY_DESC"/> <field name="email_currency" type="list" default="vendor" label="VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY" description="VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY_DESC"> <option value="vendor">VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY_VENDOR</option> <option value="payment">VMPAYMENT_REALEX_HPP_API_EMAIL_CURRENCY_PAYMENT</option> </field> <!-- Discounts --> <!-- ============ --> <field class="level2" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_DISCOUNT_FEE_SECTION" description=""/> <field name="cost_per_transaction" type="text" label="VMPAYMENT_REALEX_HPP_API_COST_PER_TRANSACTION" description="VMPAYMENT_REALEX_HPP_API_COST_PER_TRANSACTION_TIP"/> <field name="cost_percent_total" type="text" label="VMPAYMENT_REALEX_HPP_API_COST_PERCENT_TOTAL" description="VMPAYMENT_REALEX_HPP_API_COST_PERCENT_TOTAL_TIP"/> <field name="tax_id" type="vmtaxes" scope="com_virtuemart" label="VMPAYMENT_REALEX_HPP_API_TAX" description="VMPAYMENT_REALEX_HPP_API_TAX_TIP"/> <field class="level1" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_TEMPLATE_SECTION" description=""/> <field name="payment_logos" type="vmfiles" multiple="true" label="VMPAYMENT_REALEX_HPP_API_LOGOS" description="VMPAYMENT_REALEX_HPP_API_LOGOS_DESC" directory="/images/stories/virtuemart/payment" default="default" hide_default="1" hide_none="1" stripext="0" exclude="^_"/> <field name="card_payment_button" type="text" size="40" maxlength="25" default="" label="VMPAYMENT_REALEX_HPP_API_CARD_PAYMENT_BUTTON" description="VMPAYMENT_REALEX_HPP_API_CARD_PAYMENT_BUTTON_TIP"/> <field class="remote" name="cvv_images" type="vmfiles" label="VMPAYMENT_REALEX_HPP_API_CVV_IMAGES" description="VMPAYMENT_REALEX_HPP_API_CVV_IMAGES_DESC" directory="/images/stories/virtuemart/payment" default="default" hide_default="1" hide_none="1" stripext="0" exclude="^_"/> <field class="level1" type="vmtitle" default="VMPAYMENT_REALEX_HPP_API_DEBUG_SECTION" description=""/> <field name="debug" type="radio" default="0" label="VMPAYMENT_REALEX_HPP_API_DEBUG_SECTION"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> <field name="log" type="radio" default="0" label="VMPAYMENT_REALEX_HPP_API_LOG" description="VMPAYMENT_REALEX_HPP_API_LOG_DESC"> <option value="0">COM_VIRTUEMART_NO</option> <option value="1">COM_VIRTUEMART_YES</option> </field> </fieldset> </fields> </vmconfig> <updateservers> <!-- Note: No spaces or linebreaks allowed between the server tags --> <server type="extension" name="VirtueMart plg_vmpayment_realex_hpp_api Update Site"><![CDATA[http://virtuemart.net/releases/vm3/plg_vmpayment_realex_hpp_api_update.xml]]></server> </updateservers> </extension> realex_hpp_api/assets/css/admin.css 0000604 00000000734 15075477240 0013433 0 ustar 00 .realex_title { margin: 10px 0 5px 0; font-weight: bold; padding: 5px; float: none; clear: both; background-color: #FFFFFF !important; height: 40px; padding-left: 100px !important; } .level1 { background-color: #7c7d7f !important; } .level2, .level1 { margin: 10px 0 5px 0; font-weight: bold; padding: 5px; float: none; clear: both; } .level2 { background-color: #cacaca; } .level3 { font-weight: bold; } realex_hpp_api/assets/css/realex.css 0000604 00000004254 15075477240 0013624 0 ustar 00 .remote_cc_form .vmpayment_label { width: 30%; display: inline-table; } .remote_cc_form .vmpayment_cardinfo { font-size: 100% !important; line-height: 170%; } .remote_cc_form .vmpayment_cardinfo_text { font-weight: bold; border-bottom: 1px solid #CCC; margin-top: 15px; margin-bottom: 10px; color: #333; } .vmpayment_cc_cvv_realvault .vmpayment_label { font-weight: bold; margin-top: 15px; margin-bottom: 10px; } .creditcardsDropDown input { margin: 5px; } .remote_cc_form .inputbox { width: 220px; background-position: 0 -160px; border: solid lightgray 1px; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; font-size: 12px; cursor: pointer; letter-spacing: 1px; display: inline-block; text-decoration: none; padding: 3px 12px 1px; } .remote_cc_form .cc_cvv { width: 100px; } .remote_cc_form .remote_save_card { font-weight: bold; } .vmpayment_enter_cc { color: #00a000; } .vmpayment_description { display: block; font-size: 100%; } .vmpayment_selected_cc { color: gray; } div.dcc_card_payment_button { text-align: center; margin-top: 15px; } .dcc_offer_title, .realex_payment_name { font-weight: bold; border-bottom: 1px solid #CCC; margin-top: 15px; } .dcc_box, .realex_response { min-height: 20px; padding: 19px; margin-bottom: 20px; border: 1px solid #e3e3e3; line-height: 20px; } .dcc_offer_legal { color: #898989; text-align: center; font-style: italic; font-size: 70%; padding-bottom: 0; margin-bottom: -10px; } .dcc_offer_exchange_rate { margin: 10px 0; } .dcc_choices { text-align: center; } .dcc_choice { background: #e8e8e8; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; cursor: pointer; text-align: center; letter-spacing: 1px; display: inline-block; text-decoration: none; margin: 20px; padding: 6px 12px 3px; font-weight: bold; } .dcc_card_payment_button span.addtocart-button { float: none; } .dcc_choice input { margin-right: 10px; } .realex_vieworder { margin-top: 10px; } realex_hpp_api/assets/js/site.js 0000604 00000003102 15075477240 0012747 0 ustar 00 /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: site.js 8200 2014-08-14 11:09:44Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ jQuery().ready(function ($) { /************/ /* Handlers */ /************/ handleRealexRemoteCCForm = function () { var hasCreditcardsDropDownClass = $("#vmpayment_cardinfo > *").hasClass("creditcardsDropDown"); if (hasCreditcardsDropDownClass) { var CCselected = $(".creditcardsDropDown input[type='radio']:checked").val(); $('.realexRemoteCCForm').hide(); $('.vmpayment_cc_cvv_realvault').show(); if (CCselected == -1) { $('.realexRemoteCCForm').show(); $('.vmpayment_cc_cvv_realvault').hide(); } } } /**********/ /* Events */ /**********/ $('.realexListCC').change(function () { handleRealexRemoteCCForm(); }); /*****************/ /* Initial calls */ /*****************/ handleRealexRemoteCCForm(); }); realex_hpp_api/assets/js/admin.js 0000604 00000010703 15075477240 0013100 0 ustar 00 /** * * Realex payment plugin * * @author Valérie Isaksen * @version $Id: admin.js 8466 2014-10-16 16:06:11Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ jQuery().ready(function ($) { /************/ /* Handlers */ /************/ handleIntegrationParameters = function () { var integration = $('#params_integration').val(); $('.redirect, .remote').parents('.control-group').hide(); if (integration == 'redirect') { $('.redirect').parents('.control-group').show(); } else if (integration == 'remote') { $('.remote').parents('.control-group').show(); } } handleRealvault = function () { var realvault = $('#params_realvault').val(); var integration = $('#params_integration').val(); $('.redirect-realvault').parents('.control-group').hide(); $('.redirect-norealvault').parents('.control-group').hide(); $('.realvault-param').parents('.control-group').hide(); $('.realvault').parents('.control-group').hide(); $('.norealvault').parents('.control-group').hide(); if (integration == 'redirect') { if (realvault == 1) { $('.redirect-realvault').parents('.control-group').show(); $('.realvault').parents('.control-group').show(); $('.realvault-param').parents('.control-group').show(); } else { $('.redirect-norealvault').parents('.control-group').show(); $('#params_threedsecure option').eq(0).attr('selected', 'selected'); // depends on the chosen version $('#params_threedsecure').trigger("chosen:updated"); //newer $("#params_threedsecure").trigger("liszt:updated"); // our } } else { if (realvault == 1) { $('.realvault-param').parents('.control-group').show(); } $('.realvault').parents('.control-group').show(); } } handleSettlement = function () { var settlement = $('#params_settlement').val(); $('.settlement').parents('.control-group').hide(); if (settlement == 'delayed') { $('.settlement').parents('.control-group').show(); } } handlethreedsecure = function () { var threedsecure = $('#params_threedsecure').val(); var realvault = $('#params_realvault').val(); var integration = $('#params_integration').val(); $('.threedsecure').parents('.control-group').hide(); if ((threedsecure == 1 && integration == 'redirect' && realvault == 1) || (threedsecure == 1 && integration == 'remote')) { $('.threedsecure').parents('.control-group').show(); } } handleDcc = function () { var dcc = $('#params_dcc').val(); $('.dcc').parents('.control-group').hide(); $('.nodcc').parents('.control-group').hide(); if (dcc == 1) { $('.dcc').parents('.control-group').show(); } if (dcc == 0) { $('.nodcc').parents('.control-group').show(); } } handleAutoComplete = function () { $('#params_merchant_id').attr('autocomplete', 'off'); } /**********/ /* Events */ /**********/ $('#params_integration').change(function () { handleIntegrationParameters(); handleRealvault(); }); $('#params_realvault').change(function () { handleRealvault(); }); $('#params_settlement').change(function () { handleSettlement(); }); $('#params_dcc').change(function () { handleDcc(); }); $('#params_threedsecure').change(function () { handlethreedsecure(); }); /*****************/ /* Initial calls */ /*****************/ handleIntegrationParameters(); handleRealvault(); handleSettlement(); handleDcc(); handlethreedsecure(); handleAutoComplete(); }); realex_hpp_api/helpers/remote.php 0000604 00000007742 15075477240 0013213 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: remote.php 8343 2014-09-30 11:49:09Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die('Restricted access'); class RealexHelperRealexRemote extends RealexHelperRealex { function __construct ($method, $plugin) { parent::__construct($method, $plugin); } public function confirmedOrder (&$postRequest, &$request3DSecure) { $postRequest = false; $request3DSecure = false; if ($this->_method->dcc) { $response = $this->requestDccRate(); } elseif ($this->_method->threedsecure and $this->isCC3DSVerifyEnrolled()) { $request3DSecure = true; $response = $this->request3DSecure(); } else { $response = $this->requestAuth(); } return $response; } /** * @return array */ function getExtraPluginInfo () { return NULL; } function confirmedOrderDccRequest ($response_dcc) { $request3DSecure = false; if ($this->_method->threedsecure and $this->isCC3DSVerifyEnrolled()) { $request3DSecure = true; $response = $this->request3DSecure(); } else { $selectedCCParams = array(); if ($this->doRealVault($selectedCCParams)) { $newPayerRef = ""; $responseNewPayer = $this->setNewPayer($newPayerRef); $setNewPayerSuccess = $this->manageSetNewPayer($responseNewPayer); if ($setNewPayerSuccess) { $newPaymentRef = ""; $responseNewPayment = $this->setNewPayment($newPayerRef, $newPaymentRef); $setNewPaymentSuccess = $this->manageSetNewPayment($responseNewPayment, $newPayerRef, $newPaymentRef); } } $xml_response_dcc = simplexml_load_string($response_dcc); // TODO if using CC stored? $response = $this->requestAuth($xml_response_dcc); $this->manageResponseRequestAuth($response); } } /** * @return string */ function displayExtraPluginInfo () { return NULL; } /** * @param bool $enqueueMessage * @return bool */ function validateRemoteCCForm ($enqueueMessage = true) { if (!class_exists('Creditcard')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'creditcard.php'); } $html = ''; $cc_valid = true; $errormessages = array(); $saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); $cc_type = $this->customerData->getVar('cc_type'); $cc_number = $this->customerData->getVar('cc_number'); $cc_name = $this->customerData->getVar('cc_name'); $cc_cvv = $this->customerData->getVar('cc_cvv'); $cc_expire_month = $this->customerData->getVar('cc_expire_month'); $cc_expire_year = $this->customerData->getVar('cc_expire_year'); if (!Creditcard::validate_credit_card_number($cc_type, $cc_number)) { $errormessages[] = 'VMPAYMENT_REALEX_HPP_API_CC_CARD_NUMBER_INVALID'; $cc_valid = false; } if ($this->_method->cvn_checking AND !Creditcard::validate_credit_card_cvv($cc_type, $cc_cvv, true, $cc_number)) { $errormessages[] = 'VMPAYMENT_REALEX_HPP_API_CC_CARD_CVV_INVALID'; $cc_valid = false; } if (!Creditcard::validate_credit_card_date($cc_type, $cc_expire_month, $cc_expire_year)) { $errormessages[] = 'VMPAYMENT_REALEX_HPP_API_CC_CARD_EXPIRATION_DATE_INVALID'; $cc_valid = false; } if (empty($cc_name)) { $errormessages[] = 'VMPAYMENT_REALEX_HPP_API_CC_NAME_INVALID'; $cc_valid = false; } if (!$cc_valid) { foreach ($errormessages as $msg) { $html .= vmText::_($msg) . "<br/>"; } } if (!$cc_valid) { $app = JFactory::getApplication(); $app->enqueueMessage($html, 'error'); return false; } return true; } } realex_hpp_api/helpers/customerdata.php 0000604 00000013376 15075477240 0014413 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: customerdata.php 8343 2014-09-30 11:49:09Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die('Restricted access'); class RealexHelperCustomerData { const REALEX_FOLDERNAME = "realex"; const REALEX_SESSION = "RealexCustomerData"; private $_cc_name = ''; private $_cc_type = ''; private $_cc_number = ''; private $_cc_cvv = ''; private $_cc_cvv_realvault = ''; private $_cc_expire_month = ''; private $_cc_expire_year = ''; private $_cc_valid = false; private $_selected_method = ''; private $_saved_cc_selected = ''; private $_save_card = ''; private $_dcc_choice = ''; public function load () { //$this->_clear(); /* TODO $store = 'none'; $options['expire']= 60* 60; $session = JFactory::getSession($store,$options); */ $session = JFactory::getSession(); $sessionData = $session->get(self::REALEX_SESSION, 0, 'vm'); if (!class_exists('vmCrypt')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'vmcrypt.php'); } if (!empty($sessionData)) { $data = (object)json_decode($sessionData, true); $this->_saved_cc_selected = $data->saved_cc_selected; $this->_save_card = $data->save_card; $this->_selected_method = $data->selected_method; $this->_dcc_choice = $data->dcc_choice; $this->_cc_cvv_realvault = $data->cc_cvv_realvault; $this->_cc_type = $data->cc_type; // card information are not saved in session } } public function loadPost () { $this->_selected_method = vRequest::getInt('virtuemart_paymentmethod_id', 0); $saved_cc_selected = vRequest::getInt('saved_cc_selected', 0); //$saved_cc_selected = vRequest::getInt('saved_cc_selected' , 0); if ($saved_cc_selected) { $this->_saved_cc_selected = $saved_cc_selected; } $this->_save_card = vRequest::getInt('save_card', 0); $dcc_choice = vRequest::getInt('dcc_choice', ''); if ($dcc_choice) { $this->_dcc_choice = $dcc_choice; } $cctype = vRequest::getString('cc_type', ''); if ($cctype) { $this->_cc_type = $cctype; } /** * name on CC should be restricted to letters only. */ $cc_name = vRequest::getString('cc_name', ''); if ($cc_name) { $this->_cc_name = $cc_name; } $cc_number = vRequest::getString('cc_number', ''); if ($cc_number) { $this->_cc_number = $cc_number; } $cc_cvv = vRequest::getInt('cc_cvv', ''); if ($cc_cvv) { $this->_cc_cvv = $cc_cvv; } $cc_expire_month = vRequest::getInt('cc_expire_month', ''); if ($cc_expire_month) { $this->_cc_expire_month = $cc_expire_month; } $cc_expire_year = vRequest::getInt('cc_expire_year', ''); if ($cc_expire_year) { $this->_cc_expire_year = $cc_expire_year; } $cc_cvv_realvault = vRequest::getInt('cc_cvv_realvault', ''); if ($cc_cvv_realvault) { $this->_cc_cvv_realvault = $cc_cvv_realvault; } $this->save(); } /** * save CustomerData when realvault * @param $data * */ public function saveCustomerRealVaultData ($data) { if (isset($data['realex_hpp_api_saved_pmt_type'])) { $this->_cc_type = $data['realex_hpp_api_saved_pmt_type']; } if (isset($data['realex_hpp_api_saved_pmt_digits'])) { $this->_cc_number = $data['realex_hpp_api_saved_pmt_digits']; } if (isset($data['realex_hpp_api_saved_pmt_name'])) { $this->_cc_name = $data['realex_hpp_api_saved_pmt_name']; } $this->save(); } /** * save the cc infos returned in the md (3DSverifySig) * @param $md */ public function saveCustomerMDData ($md) { $this->_cc_type = $md['cc_type']; $this->_cc_number = $md['cc_number']; $this->_cc_name = $md['cc_name']; $this->_cc_cvv = $md['cc_cvv']; $this->_cc_expire_month = $md['cc_expire_month']; $this->_cc_expire_year = $md['cc_expire_year']; $this->save(); } /** * */ public function unsetCustomerData () { $this->_cc_type = ''; $this->_cc_name = ''; $this->_cc_number = ''; $this->_cc_cvv = ''; $this->_cc_expire_month = ''; $this->_cc_expire_year = ''; } /** * save data in session */ public function save () { $session = JFactory::getSession(); $sessionData = new stdClass(); $sessionData->selected_method = $this->_selected_method; $sessionData->saved_cc_selected = $this->_saved_cc_selected; $sessionData->save_card = $this->_save_card; $sessionData->dcc_choice = $this->_dcc_choice; $sessionData->cc_cvv_realvault = $this->_cc_cvv_realvault; $sessionData->cc_type = $this->_cc_type; // card information should not be saved in session $session->set(self::REALEX_SESSION, json_encode($sessionData), 'vm'); } /** * @param $var * @return mixed */ public function getVar ($var) { $this->load(); return $this->{'_' . $var}; } /** * @param $var * @param $val */ public function setVar ($var, $val) { $this->{'_' . $var} = $val; } public function clear () { $session = JFactory::getSession(); $session->clear(self::REALEX_SESSION, 'vm'); } /** * Remove some numbers from the CC when displaying it * when debug or log option is on * */ function getMaskedCCnumber () { if (!class_exists('shopFunctionsF')) { require(VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } return shopFunctionsF::mask_string($this->getVar('cc_number'), '*'); $this->getVar('cc_number'); } } realex_hpp_api/helpers/helper.php 0000604 00000247234 15075477240 0013201 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: helper.php 9193 2016-03-11 10:17:04Z Milbo $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die('Restricted access'); /** * @property request_type */ class RealexHelperRealex { var $_method; var $cart; var $order; var $vendor; var $customerData; var $context; var $total; var $post_variables; var $post_string; var $requestData; var $response; var $currency_code_3; var $currency_display; var $plugin; const REQUEST_TYPE_AUTH = "auth"; const REQUEST_TYPE_RECEIPT_IN = 'receipt-in'; const REQUEST_TYPE_REBATE = "rebate"; const REQUEST_TYPE_SETTLE = "settle"; const REQUEST_TYPE_VOID = "void"; const REQUEST_TYPE_REALVAULT_3DS_VERIFYENROLLED = "realvault-3ds-verifyenrolled"; const REQUEST_TYPE_3DS_VERIFYENROLLED = "3ds-verifyenrolled"; const REQUEST_TYPE_3DS_VERIFYSIG = "3ds-verifysig"; const REQUEST_TYPE_DCCRATE = "dccrate"; const REQUEST_TYPE_REALVAULT_DCCRATE = "realvault-dccrate"; const REQUEST_TYPE_CARD_CANCEL_CARD = "card-cancel-card"; const REQUEST_TYPE_CARD_UPDATE_CARD = "card-update-card"; const REQUEST_TYPE_PAYER_NEW = "payer-new"; const REQUEST_TYPE_CARD_NEW = "card-new"; const RESPONSE_DCC_CHOICE_YES = "Yes"; const DCCRATE_RESULT_SUCCESS = '00'; const RESPONSE_CODE_SUCCESS = '00'; const RESPONSE_CODE_DECLINED = '101'; const RESPONSE_CODE_REFERRAL_B = '102'; const RESPONSE_CODE_REFERRAL_A = '103'; const RESPONSE_CODE_NOT_VALIDATED = '110'; const RESPONSE_CODE_INVALID_ORDER_ID = '501'; // This order ID has already been used - please use another one const RESPONSE_CODE_PAYER_REF_NOTEXIST = '501'; // This Payer Ref payerref does not exist const RESPONSE_CODE_INVALID_PAYER_REF_USED = '501'; // This Payer Ref payerref has already been used - please use another one const RESPONSE_CODE_INVALID_PAYMENT_DETAILS = '509'; const PAYER_SETUP_SUCCESS = "00"; const PMT_SETUP_SUCCESS = "00"; const ENROLLED_RESULT_ENROLLED = '00'; const ENROLLED_RESULT_NOT_ENROLLED = '110'; const ENROLLED_RESULT_INVALID_RESPONSE = '5xx'; const ENROLLED_RESULT_FATAL_ERROR = '220'; const ENROLLED_TAG_ENROLLED = 'Y'; const ENROLLED_TAG_UNABLE_TO_VERIFY = 'U'; const ENROLLED_TAG_NOT_ENROLLED = 'N'; /** * Response results from threedsecure = "3ds-verifysig"; */ const THREEDSECURE_STATUS_AUTHENTICATED = 'Y'; const THREEDSECURE_STATUS_NOT_AUTHENTICATED = 'N'; const THREEDSECURE_STATUS_ACKNOWLEDGED = 'A'; const THREEDSECURE_STATUS_UNAVAILABLE = 'U'; const ECI_AUTHENTICATED_VISA = 5; const ECI_LIABILITY_SHIFT_VISA = 6; const ECI_NO_LIABILITY_SHIFT_VISA = 7; const ECI_AUTHENTICATED_MASTERCARD = '2'; const ECI_LIABILITY_SHIFT_MASTERCARD = '1'; const ECI_NO_LIABILITY_SHIFT_MASTERCARD = '0'; /** * Response results REQUEST_TYPE_3DS_VERIFYSIG = "3ds-verifysig"; */ const VERIFYSIG_RESULT_VALIDATED = '00'; const VERIFYSIG_RESULT_NOT_VALIDATED = '110'; const VERIFYSIG_RESULT_INVALID_ACS_RESPONSE = '5xx'; function __construct ($method, $plugin) { if ($method->dcc) { $method->settlement = 'auto'; //$method->rebate_password = ""; } if (!$method->realvault) { $method->offer_save_card = 0; } $this->_method = $method; $this->_method->shared_secret=trim($this->_method->shared_secret); $this->_method->merchant_id=trim($this->_method->merchant_id); $this->plugin = $plugin; $session = JFactory::getSession(); $this->context = $session->getId(); } public function setTotalInPaymentCurrency ($total) { if (!class_exists('CurrencyDisplay')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'currencydisplay.php'); } $this->total = vmPSPlugin::getAmountValueInCurrency($total, $this->_method->payment_currency) * 100; $cd = CurrencyDisplay::getInstance($this->cart->pricesCurrency); } public function getTotalInPaymentCurrency () { return $this->total; } public function setPaymentCurrency () { vmPSPlugin::getPaymentCurrency($this->_method); $this->currency_code_3 = shopFunctions::getCurrencyByID($this->_method->payment_currency, 'currency_code_3'); } public function getPaymentCurrency () { return $this->currency_code_3; } public function setContext ($context) { $this->context = $context; } public function getContext () { return $this->context; } public function setCart ($cart, $doGetCartPrices = true) { $this->cart = $cart; if ($doGetCartPrices AND !isset($this->cart->cartPrices)) { $this->cart->getCartPrices(); } } public function setOrder ($order) { $this->order = $order; } /** * The digits from the first line of the address should be concatenated with the post code digits with a '|' in the middle. * * For example: Flat 123, No. 7 Grove Park, E98 7QJ * Billing Code: '987|123', the number of digits on each side of the '|' should also be restricted to 5. * @param $address */ public function getCode ($address) { // get first digits of the address line, $digits_addr = $this->stripnonnumeric($address->address_1, 5); // get digits from zip, $digits_zip = $this->stripnonnumeric($address->zip, 5); // concatenate with | return $digits_zip . "|" . $digits_addr; } private function stripnonnumeric ($code, $maxLg) { $code = preg_replace("/[^0-9]/", "", $code); $code = substr($code, 0, $maxLg); return $code; } function _getRealexUrl () { if ($this->_method->shop_mode == 'sandbox') { //return 'https://realcontrol.sandbox.realexpayments.com'; return $this->_method->sandbox_gateway_url; } else { //return ' https://realcontrol.realexpayments.com'; return $this->_method->gateway_url; } } function redirect3DSRequest ($response) { $xml_response = simplexml_load_string($response); // Merchant Data. Any data that you would like echoed back to you by the ACS. // Useful data here is your order id and the card details (so that you can send the authorisation message on receipt of a positive authentication). // Any information in this field must be encrypted then compressed and base64 encoded. $md = $this->setMd(); // The URL that the ACS should reply to. This should be on your website and must be an HTTPS address. $url_validation = JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification¬ificationTask=handle3DSRequest&order_number=' . $this->order['details']['BT']->order_number . '&pm=' . $this->order['details']['BT']->virtuemart_paymentmethod_id . '&Itemid=' . vRequest::getInt('Itemid') . '&lang=' . vRequest::getCmd('lang', ''); $this->display3DSForm((string)$xml_response->url, (string)$xml_response->pareq, $md, $url_validation); } function setMd () { if (!class_exists('vmCrypt')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'vmcrypt.php'); } $md = array( 'cc_type' => $this->customerData->getVar('cc_type'), 'cc_name' => $this->customerData->getVar('cc_name'), 'cc_number' => $this->customerData->getVar('cc_number'), 'cc_cvv' => $this->customerData->getVar('cc_cvv'), 'cc_expire_month' => $this->customerData->getVar('cc_expire_month'), 'cc_expire_year' => $this->customerData->getVar('cc_expire_year'), ); $jsonencodeMd = json_encode($md); $encryptMd = vmCrypt::encrypt($jsonencodeMd); return $encryptMd; } function getMd ($cryptedMd) { if (!class_exists('vmCrypt')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'vmcrypt.php'); } $decryptedMd = vmCrypt::decrypt($cryptedMd); $md = json_decode($decryptedMd, true); return $md; } /** * 4a. Realex send the URL of the cardholder’s bank ACS * (this is the webpage that the cardholder uses to enter their password). Also included is the PAReq (this is needed by the ACS). * POST this encoded PAReq (along with the TermURL and any merchant data you require). * This will result in the cardholder being presented with the authenticaton page where they will be asked to confirm the amount and enter their password. * 6. Once the cardholder enters their password, the ACS POSTS the encoded PARes to the merchants TermURL. * @param $url_redirect * @param $pareq * @param $md64 */ public function display3DSForm ($url_redirect, $pareq, $md, $url_validation) { ?> <HTML> <HEAD> <TITLE><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_3DS_VERIFICATION') ?></TITLE> <SCRIPT LANGUAGE="Javascript"> <!-- function OnLoadEvent() { document.form.submit(); } //--> </SCRIPT> </HEAD> <BODY onLoad="OnLoadEvent()"> <FORM NAME="form" ACTION="<?php echo $url_redirect ?>" METHOD="POST"> <INPUT TYPE="hidden" NAME="PaReq" VALUE="<?php echo $pareq ?>"> <INPUT TYPE="hidden" NAME="TermUrl" VALUE="<?php echo $url_validation ?>"> <INPUT TYPE="hidden" NAME="MD" VALUE="<?php echo $md ?>"> <NOSCRIPT><INPUT TYPE="submit"></NOSCRIPT> </FORM> </BODY> </HTML> <?php exit; } function getRemoteDCCFormParams ($xml_response_dcc) { $params = $this->getRemoteCCFormParams($xml_response_dcc); return $params; } /** * Checking if a card is 3D Secure enabled * @return bool|mixed */ function request3DSVerifyEnrolled ($realvault = false) { if ($realvault) { $response = $this->requestRealVault3DSVerifyEnrolled($realvault); } else { $response = $this->requestCard3DSVerifyEnrolled(); } return $response; } /** * Checking if a card is 3D Secure enabled * @return bool|mixed */ function requestCard3DSVerifyEnrolled () { $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_3DS_VERIFYENROLLED); $xml_request .= $this->getXmlRequestCard(); $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), $this->getCCnumber()); $xml_request .= $this->setSha1($sha1); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * Checking if a card is 3D Secure enabled in case of A card stored in RealVault * @param $realvault * @return bool|mixed */ function requestRealVault3DSVerifyEnrolled ($realvault) { $payerRef = $this->getSavedPayerRef(); $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_REALVAULT_3DS_VERIFYENROLLED); $xml_request .= '<payerref>' . $payerRef . '</payerref> <paymentmethod>' . $realvault->realex_hpp_api_saved_pmt_ref . '</paymentmethod>'; $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), $payerRef); $xml_request .= $this->setSha1($sha1); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * const VERIFYSIG_RESULT_VALIDATED = '00'; const VERIFYSIG_RESULT_NOT_VALIDATED = '110'; const VERIFYSIG_RESULT_INVALID_ACS_RESPONSE = '5xx'; * * /** * Response results from threedsecure = "3ds-verifysig"; const THREEDSECURE_STATUS_AUTHENTICATED = 'Y'; const THREEDSECURE_STATUS_NOT_AUTHENTICATED = 'N'; const THREEDSECURE_STATUS_ACKNOWLEDGED = 'A'; const THREEDSECURE_STATUS_UNAVAILABLE = 'U'; * 6. Take these values returned from the issuer, and create a 3ds-verifysig request. Send it to Realex. 7. Depending on the result take the following action: a. If the result is “00” the message has not been tampered with. Continue: i. If the status is “Y”, the cardholder entered their passphrase correctly. * This is a full 3DSecure transaction, go to step 8b. ii. If the status is “N”, the cardholder entered the wrong passphrase. * No shift in liability, do not proceed to authorisation. iii. If the status is “U”, then the Issuer was having problems with their systems at the time * and was unable to check the passphrase. You may continue with the transaction (go to step 8c) but there will be no shift in liability. iv. If the status is “A” the issuing bank acknowledges the attempt made by the merchant and accepts the liability shift. Continue to step 8a. 19  8. b. If the result is “110”, the digital signatures do not match the message and most likely the message has been tampered with. No shift in liability, do not proceed to authorisation. * @param $response * @return bool|int|string */ function getEciFrom3DSVerifysig ($response, $requireLiabilityShift = true) { $xml_response = simplexml_load_string($response); $result = (string)$xml_response->result; if (substr($result, 0, 1) == '5') { $result = '5xx'; } $allowLiabilityShift = false; $threedsecure = $xml_response->threedsecure; $threedsecure_status = (string)$threedsecure->status; if ($result == self::VERIFYSIG_RESULT_VALIDATED) { switch ($threedsecure_status) { case self::THREEDSECURE_STATUS_AUTHENTICATED: $allowLiabilityShift = true; $threedSecureAuthentication = true; break; case self::THREEDSECURE_STATUS_ACKNOWLEDGED: /** * If the status is “A” the issuing bank acknowledges the attempt made by the merchant and * accepts the liability shift. * Continue to step 8a. * a. Send a normal Realex authorisation message (set the ECI field to 6 or 1). * The merchant will not be liable for repudiation chargebacks. * */ $allowLiabilityShift = true; $threedSecureAuthentication = false; break; case self::THREEDSECURE_STATUS_NOT_AUTHENTICATED: /** * If the status is “N”, the cardholder entered the wrong passphrase. * No shift in liability, do not proceed to authorisation. * if the merchants chooses "Require liability shift" as "No" * then the transaction will proceed to authorisation * but there will not be a liability shift and the ECI value should be 7 */ $allowLiabilityShift = false; $threedSecureAuthentication = false; break; default: case self::THREEDSECURE_STATUS_UNAVAILABLE: /** * If the status is “U”, then the Issuer was having problems with their systems at the time * and was unable to check the passphrase. * You may continue with the transaction (go to step 8c) but there will be no shift in liability. * Send a normal Realex authorisation message (set the ECI field to 7 or 0). * The merchant will be liable for repudiation chargebacks. */ $allowLiabilityShift = false; $threedSecureAuthentication = false; break; } } else { /** * If the result is “110”, the digital signatures do not match the message * and most likely the message has been tampered with. No shift in liability, do not proceed to authorisation. */ $allowLiabilityShift = false; $threedSecureAuthentication = false; } if (!$allowLiabilityShift and $requireLiabilityShift) { return false; } $eci = $this->getEciValue($allowLiabilityShift, $threedSecureAuthentication); return $eci; } /** * 4. Depending on the response take the following action: a. If the response code is “00” and the enrolled tag is “Y” there will also be a URL returned. Redirect the cardholder to this URL using a hidden form. b. If the response code is “110” and the enrolled tag is “N” the cardholder is not enrolled. Skip to step 8a. c. If the enrolled tag is “U” the enrolled status could not be verified. Skip to step 8c. d. If the response is “220” the card scheme directory server may be unavailable. You may still proceed to authorisation but no liability shift will be received. Skip to step 8c. * @param $xml_response * @return bool|int|null */ public function getEciFrom3DSVerifyEnrolled ($response) { $xml_response = simplexml_load_string($response); $result = (string)$xml_response->result; if (substr($result, 0, 1) == '5') { $result = '5xx'; } switch ($result) { case self::ENROLLED_RESULT_ENROLLED: $liabilityShift = true; break; case self::ENROLLED_RESULT_NOT_ENROLLED: if ($xml_response->enrolled == self::ENROLLED_TAG_NOT_ENROLLED) { $liabilityShift = true; } else { $liabilityShift = false; } break; default: case self::ENROLLED_RESULT_INVALID_RESPONSE: case self::ENROLLED_RESULT_FATAL_ERROR: $liabilityShift = false; break; } // if there is no liability shift, and it is required by the client, throw exception $eci = false; if (!$liabilityShift && $this->_method->require_liability) { return $eci; } // determine the eci value to use if the card is not enrolled in the 3D Secure scheme if ($xml_response->enrolled != self::ENROLLED_TAG_ENROLLED) { $eci = $this->getEciValue($liabilityShift); } return $eci; } /** * Retrieve the ECI value for the provided card type, liability and 3D Secure result. * */ public function getEciValue ($allowLiabilityShift, $threedSecureAuthentication = false) { $eci_value = false; $cc_type = $this->customerData->getVar('cc_type'); if ($cc_type == '') { $this->debugLog('CC TYPE IS EMPTY', 'getEciValue', 'debug'); } if ($cc_type == 'VISA' or $cc_type == 'AMEX') { if ($threedSecureAuthentication === true) { $eci_value = self::ECI_AUTHENTICATED_VISA; } else { if ($allowLiabilityShift === true) { $eci_value = self::ECI_LIABILITY_SHIFT_VISA; } else { $eci_value = self::ECI_NO_LIABILITY_SHIFT_VISA; } } } else { if ($threedSecureAuthentication === true) { $eci_value = self::ECI_AUTHENTICATED_MASTERCARD; } else { if ($allowLiabilityShift === true) { $eci_value = self::ECI_LIABILITY_SHIFT_MASTERCARD; } else { $eci_value = self::ECI_NO_LIABILITY_SHIFT_MASTERCARD; } } } return $eci_value; } /** * @param $response * @param $order * @return null|string */ private function manageResponse3DSecure ($response) { $this->_storeRealexInternalData($response, $this->_currentMethod->virtuemart_paymentmethod_id, $this->order['details']['BT']->virtuemart_order_id, $this->order['details']['BT']->order_number, $this->request_type); $xml_response_3DSecure = simplexml_load_string($response); $responseAuth = ''; $BT = $this->order['details']['BT']; $order_number = $BT->order_number; $success = $this->isResponseSuccess($xml_response_3DSecure); $eci = $this->getEciFrom3DSVerifyEnrolled($xml_response_3DSecure); if ($eci == NULL) { return NULL; } if (!$eci) { $this->redirect3DSRequest($xml_response_3DSecure); } else { $xml_response_3DSecure->addChild('eci', $eci); $responseAuth = $this->requestAuth(NULL, $xml_response_3DSecure); $this->manageResponseRequestAuth($response); } return $responseAuth; } /** * @return bool|mixed */ function request3DSVerifysig ($realvault = false) { $paRes = vRequest::getVar('PaRes', ''); if (empty($paRes)) { $this->plugin->redirectToCart(vmText::_('VMPAYMENT_REALEX_HPP_API_ERROR_TRY_AGAIN')); } $jsonencodeMd = vRequest::getVar('MD', ''); $md = $this->getMd($jsonencodeMd); $this->customerData->saveCustomerMDData($md); $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_3DS_VERIFYSIG); if (!$realvault) { $xml_request .= $this->getXmlRequestCard(); $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), $this->getCCnumber()); } else { $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), ""); } $xml_request .= '<pares>' . $paRes . '</pares> '; $xml_request .= $this->setSha1($sha1); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * @param null $xml_response_dcc * @param null $xml_3Dresponse * @return bool|mixed */ function requestAuth ($xml_response_dcc = NULL, $xml_3Dresponse = NULL) { $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_AUTH); $xml_request .= '<card> <number>' . $this->getCCnumber() . '</number> <expdate>' . $this->getFormattedExpiryDateForRequest() . '</expdate> <chname>' . $this->sanitize($this->customerData->getVar('cc_name')) . '</chname> <type>' . $this->getCCtype($this->customerData->getVar('cc_type')) . '</type> <issueno></issueno> <cvn> <number>' . $this->customerData->getVar('cc_cvv') . '</number> <presind>1</presind> </cvn> </card> '; if ($this->_method->dcc) { $xml_request .= '<autosettle flag="1" /> '; } else { $xml_request .= '<autosettle flag="' . $this->getSettlement() . '" /> '; } $xml_request .= $this->setMpi($xml_3Dresponse); if ($this->_method->dcc) { $xml_request .= $this->setDccInfo($xml_response_dcc); } $xml_request .= $this->setComments(); $xml_request .= $this->setTssInfo(); $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), $this->getCCnumber()); $xml_request .= $this->setSha1($sha1); $xml_request .= '<md5hash></md5hash>'; $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * *7. Depending on the result take the following action: a. If the result is “00” the message has not been tampered with. Continue: i. If the status is “Y”, the cardholder entered their passphrase correctly. This is a full 3DSecure transaction, go to step 8b. ii. If the status is “N”, the cardholder entered the wrong passphrase. No shift in liability, do not proceed to authorisation. iii. If the status is “U”, then the Issuer was having problems with their systems at the time and was unable to check the passphrase. You may continue with the transaction (go to step 8c) but there will be no shift in liability. iv. If the status is “A” the issuing bank acknowledges the attempt made by the merchant and accepts the liability shift. Continue to step 8a. 19  8. b. If the result is “110”, the digital signatures do not match the message and most likely the message has been tampered with. No shift in liability, do not proceed to authorisation. * * @param $response3D * @return bool|mixed */ function manageResponse3DSVerifyEnrolled ($response3D) { $this->manageResponseRequest($response3D); } function manageResponse3DSVerifysig ($response3DSVerifysig) { $this->manageResponseRequest($response3DSVerifysig); } /** * @param $response */ function manageResponseRequestAuth ($response) { $this->manageResponseRequest($response); } /** * @param $response */ function manageResponseRequest3DSecure ($response) { $this->manageResponseRequest($response); } /** * @param $xml_response_dcc * @return string */ function setDCCInfo ($xml_response_dcc) { $dcc_choice = $this->customerData->getVar('dcc_choice'); if ($dcc_choice) { $rate = $xml_response_dcc->dccinfo->cardholderrate; $currency = $xml_response_dcc->dccinfo->cardholdercurrency; $amount = $xml_response_dcc->dccinfo->cardholderamount; } else { $rate = 1; if ($xml_response_dcc AND $this->isResponseSuccess($xml_response_dcc)) { $currency = $xml_response_dcc->dccinfo->merchantcurrency; $amount = $xml_response_dcc->dccinfo->merchantamount; } else { $currency = $this->getPaymentCurrency(); $amount = $this->getTotalInPaymentCurrency(); } } $xml_request = '<dccinfo> <ccp>' . $this->_method->dcc_service . '</ccp> <type>1</type> <rate>' . $rate . '</rate> <ratetype>S</ratetype> <amount currency="' . $currency . '">' . $amount . '</amount> </dccinfo> '; return $xml_request; } /** * @param bool $realvault * @return bool|mixed */ public function requestDccrate ($realvault = false) { $payerRef = $this->getSavedPayerRef(); $request_type = ($realvault) ? self::REQUEST_TYPE_REALVAULT_DCCRATE : self::REQUEST_TYPE_DCCRATE; $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, $request_type); if ($realvault) { $xml_request .= '<payerref>' . $payerRef . '</payerref> <paymentmethod>' . $realvault->realex_hpp_api_saved_pmt_ref . '</paymentmethod> '; $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), $payerRef); } else { $xml_request .= $this->getXmlRequestCard(); $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), $this->getCCnumber()); } $xml_request .= '<dccinfo> <ccp>' . $this->_method->dcc_service . '</ccp> <type>1</type> </dccinfo> '; $xml_request .= $this->setComments(); $xml_request .= $this->setSha1($sha1); $xml_request .= '<md5hash></md5hash>'; $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * possible results: * 105: Card not supported by DCC * 00: Card supported by eDCC * @param $response * @param $order * @return null|string */ function manageResponseDccRate ($response) { $this->manageResponseRequest($response); } function getXmlRequestCard () { $xml_request = '<card> <number>' . $this->getCCnumber() . '</number> <expdate>' . $this->getFormattedExpiryDateForRequest() . '</expdate> <chname>' . $this->sanitize($this->customerData->getVar('cc_name')) . '</chname> <type>' . $this->getCCtype($this->customerData->getVar('cc_type')) . '</type> </card>'; return $xml_request; } function getCCnumber () { return str_replace(" ", "", $this->customerData->getVar('cc_number')); } /*********************/ /* Log and Reporting */ /*********************/ public function debug ($subject, $title = '', $echo = true) { $debug = '<div style="display:block; margin-bottom:5px; border:1px solid red; padding:5px; text-align:left; font-size:10px;white-space:nowrap; overflow:scroll;">'; $debug .= ($title) ? '<br /><strong>' . $title . ':</strong><br />' : ''; //$debug .= '<pre>'; if (is_array($subject)) { $debug .= str_replace("=>", "⇒", str_replace("Array", "<font color=\"red\"><b>Array</b></font>", nl2br(str_replace(" ", " ", print_r($subject, true))))); } else { $debug .= str_replace("=>", "⇒", str_replace("Array", "<font color=\"red\"><b>Array</b></font>", (str_replace(" ", " ", print_r($subject, true))))); } //$debug .= '</pre>'; $debug .= '</div>'; if ($echo) { echo $debug; } else { return $debug; } } function highlight ($string) { return '<span style="color:red;font-weight:bold">' . $string . '</span>'; } public function debugLog ($message, $title = '', $type = 'message', $echo = false, $doVmDebug = false) { //Nerver log the full credit card number nor the CVV code. if (is_array($message)) { if (array_key_exists('REALEX_SAVED_PMT_DIGITS', $message)) { $message['REALEX_SAVED_PMT_DIGITS'] = "**** **** **** " . substr($message['REALEX_SAVED_PMT_DIGITS'], -4); } if (array_key_exists('SHA1HASH', $message)) { $message['SHA1HASH'] = '**MASKED**'; } if (array_key_exists('CVV2', $message)) { $message['CVV2'] = str_repeat('*', strlen($message['CVV2'])); } if (array_key_exists('signature', $message)) { $message['signature'] = '**MASKED**'; } if (array_key_exists('api_password', $message)) { $message['api_password'] = '**MASKED**'; } } if ($this->_method->debug) { $this->debug($message, $title, true); } if ($echo) { echo $message . '<br/>'; } $this->plugin->debugLog($message, $title, $type, $doVmDebug); } function getPaymentLang () { $available_languages = array( 'en-GB' => 'en', 'es-ES' => 'es', ); $default_language = 'en'; $language = JFactory::getLanguage(); if (array_key_exists($language->getTag(), $available_languages)) { return $available_languages[$language->getTag()]; } else { return $default_language; } } function getCardPaymentButton ($card_payment_button) { $lang = JFactory::getLanguage(); if ($lang->hasKey($card_payment_button)) { return vmText::_($card_payment_button); } else { return $card_payment_button; } } /** * @param $response */ function manageResponseRequest ($response) { if ($response == NULL) { $this->plugin->redirectToCart(vmText::_('VMPAYMENT_REALEX_HPP_API_ERROR_TRY_AGAIN')); } if (!$this->validateResponseHash($response)) { $this->plugin->redirectToCart(vmText::_('VMPAYMENT_REALEX_HPP_API_ERROR_TRY_AGAIN')); } $xml_response = simplexml_load_string($response); if ($this->isResponseInvalidPaymentDetails($xml_response)) { $msgToShopper=vmText::sprintf('VMPAYMENT_REALEX_HPP_API_INVALID_PAYMENT_DETAILS',$xml_response->message); $this->plugin->redirectToCart($msgToShopper); } $this->plugin->_storeRealexInternalData($response, $this->_method->virtuemart_paymentmethod_id, $this->order['details']['BT']->virtuemart_order_id, $this->order['details']['BT']->order_number, $this->request_type); /* $xml_response = simplexml_load_string($response); $success = $this->isResponseSuccess($xml_response); $reponse_enrolled=($xml_response->result==self::ENROLLED_RESULT_NOT_ENROLLED); $not_enrolled = ($xml_response->enrolled == self::ENROLLED_TAG_NOT_ENROLLED); if (! ($success OR $reponse_enrolled)) { $error = (string)$xml_response->message . " (" . (string)$xml_response->result . ")"; $this->displayError($error); $this->plugin->redirectToCart(vmText::_('VMPAYMENT_REALEX_HPP_API_ERROR_TRY_AGAIN')); } */ } /** * @param $response */ function manageResponseRequestReceiptIn ($response) { $xml_response = simplexml_load_string($response); if ($this->isResponseInvalidPaymentDetails($xml_response)) { $accountURL=JRoute::_('index.php?option=com_virtuemart&view=user&layout=edit'); $msgToShopper=vmText::sprintf('VMPAYMENT_REALEX_HPP_API_INVALID_PAYMENT_DETAILS_REALVAULT',$xml_response->message, $accountURL); $this->plugin->redirectToCart($msgToShopper); } $this->manageResponseRequest($response); } public function validateConfirmedOrder ($enqueueMessage = true) { return true; } public function validateSelectCheckPayment ($enqueueMessage = true) { return true; } /** * @param bool $enqueueMessage * @return bool */ function validateCheckoutCheckDataPayment () { return true; } function getOrderBEFields () { $showOrderBEFields = array( 'RESULT' => 'result', 'PASREF' => 'pasref', 'AUTHCODE' => 'authcode', 'MESSAGE' => 'message', 'TSS' => 'tss->result', 'CAVV' => 'cavv', 'CVNRESULT' => 'cvnresult', 'AVSPOSTCODERESULT' => 'avspostcoderesult', 'AVSPOSTCODERESPONSE' => 'avspostcoderesponse', 'AVSADDRESSRESPONSE' => 'avsaddressresponse', 'DCCCHOICE' => 'dccchoice', 'REALWALLET_CHOSEN' => 'realwallet_chosen', ); return $showOrderBEFields; } function getOrderBEFieldsDcc () { $showOrderBEFields = array( 'DCCRATE' => 'dccrate', 'DCCMERCHANTAMOUNT' => 'merchantamount', 'DCCMERCHANTCURRENCY' => 'merchantcurrency', 'DCCCARDHOLDERAMOUNT' => 'cardholderamount', 'DCCCARDHOLDERCURRENCY' => 'cardholdercurrency', ); return $showOrderBEFields; } function getOrderBEFields3DS () { $showOrderBEFields = array( 'status' => 'status', 'eci' => 'eci', ); return $showOrderBEFields; } function onShowOrderBEPayment ($data, $format, $request_type_response, $virtuemart_order_id) { $showOrderBEFields = $this->getOrderBEFields(); $prefix = 'REALEX_HPP_API_RESPONSE_'; $html = ''; if ($request_type_response == 'receipt-in_request') { if (!class_exists('VirtueMartModelOrders')) { require(VMPATH_ADMIN . DS . 'models' . DS . 'orders.php'); } $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($virtuemart_order_id); $usedCC = $this->getStoredCCByPmt_ref($order['details']['BT']->virtuemart_user_id, $data->paymentmethod); $this->loadJLangThis('plg_vmuserfield_realex_hpp_api'); $display_fields = array( 'realex_hpp_api_saved_pmt_type', 'realex_hpp_api_saved_pmt_digits', 'realex_hpp_api_saved_pmt_expdate', 'realex_hpp_api_saved_pmt_name' ); foreach ($display_fields as $display_field) { $complete_key = strtoupper('VMUSERFIELD_' . $display_field); $value = $usedCC->$display_field; $key_text = vmText::_($complete_key); $value = vmText::_($value); if (!empty($value)) { $html .= "<tr>\n<td>" . $key_text . "</label></td>\n <td align='left'>" . $value . "</td>\n</tr>\n"; } } } else { foreach ($showOrderBEFields as $key => $showOrderBEField) { if ($format == "xml") { $showOrderBEField = strtolower($showOrderBEField); } else { $showOrderBEField=$key; } if (isset($data->$showOrderBEField) and !empty($data->$showOrderBEField)) { $key = $prefix . $key; $html .= $this->plugin->getHtmlRowBE($key, $data->$showOrderBEField); } } if (isset($data->DCCCHOICE) or isset($data->dccinfo)) { if ($format == "xml") { $dccinfo=$data->dccinfo; } else { $dccinfo=$data; } $showOrderBEFields = $this->getOrderBEFieldsDcc(); foreach ($showOrderBEFields as $key => $showOrderBEField) { if ($format == "xml") { $showOrderBEField = strtolower($showOrderBEField); } else { $showOrderBEField=$key; } if (isset($dccinfo->$showOrderBEField)) { $key = $prefix . $key; $html .= $this->plugin->getHtmlRowBE($key, $dccinfo->$showOrderBEField); } } } if (isset($data->threedsecure)) { $showOrderBEFields = $this->getOrderBEFields3DS(); $prefix = 'REALEX_HPP_API_RESPONSE_THREEDSECURE_'; foreach ($showOrderBEFields as $key => $showOrderBEField) { if (isset($data->threedsecure->$showOrderBEField)) { $key = $prefix . $key; $html .= $this->plugin->getHtmlRowBE($key, $data->threedsecure->$showOrderBEField); } } } } return $html; } /** * @param $response * @param $order * @return null|string */ function getResponseParams ($payments) { $dcc_info = ""; $payer_info = ""; $auth_info = ""; $order_history = $this->order['history']; $last_history = end($order_history); if ($last_history->order_status_code == $this->_method->status_canceled) { $auth_info = $last_history->comments; $success = false; } else { } VmConfig::loadJLang('com_virtuemart_orders', TRUE); // FROM PAYMENT LOG??? why not from history if ($payments) { foreach ($payments as $payment) { if (isset($payment->realex_hpp_api_fullresponse) and !empty($payment->realex_hpp_api_fullresponse)) { if ($payment->realex_hpp_api_fullresponse_format == 'xml') { $xml_response = simplexml_load_string($payment->realex_hpp_api_fullresponse); if ($payment->realex_hpp_api_request_type_response == $this::REQUEST_TYPE_AUTH OR $payment->realex_hpp_api_request_type_response == $this::REQUEST_TYPE_RECEIPT_IN) { $success = $this->isResponseSuccess($xml_response); if ($success) { if (isset($xml_response->dccinfo) AND isset($xml_response->dccinfo->cardholderrate)) { if ($xml_response->dccinfo->cardholderrate != 1.0) { $dcc_info = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_CHARGED', $this->plugin->getCardHolderAmount($xml_response->dccinfo->merchantamount), $xml_response->dccinfo->merchantcurrency, $this->plugin->getCardHolderAmount($xml_response->dccinfo->cardholderamount), $xml_response->dccinfo->cardholdercurrency); } else { $dcc_info = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_MERCHANT_CURRENCY', $this->plugin->getCardHolderAmount($xml_response->dccinfo->merchantamount), $xml_response->dccinfo->merchantcurrency); } } $amountValue = vmPSPlugin::getAmountInCurrency($this->order['details']['BT']->order_total, $this->order['details']['BT']->order_currency); //$currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $auth_info = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED', $amountValue['display'], $this->order['details']['BT']->order_number); $pasref = $payment->realex_hpp_api_response_pasref; } else { if ($this->isResponseDeclined($xml_response)) { $auth_info = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_DECLINED', $this->order['details']['BT']->order_number); } else { $auth_info = vmText::_('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED'); } } } elseif ($payment->realex_hpp_api_request_type_response == $this::REQUEST_TYPE_CARD_NEW) { $success = $this->isResponseSuccess($xml_response); if ($success) { $payer_info = vmText::_('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_SUCCESS'); } else { $payer_info = vmText::_('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_FAILED'); } } } else { if ($payment->realex_hpp_api_fullresponse_format == 'json') { $realex_data = json_decode($payment->realex_hpp_api_fullresponse); $result = $payment->realex_hpp_api_response_result; $payer_info = ''; $success = ($result == self::RESPONSE_CODE_SUCCESS); if ($success) { $amountValue = vmPSPlugin::getAmountInCurrency($this->order['details']['BT']->order_total, $this->order['details']['BT']->order_currency); //$currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $auth_info = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CONFIRMED', $amountValue['display'], $this->order['details']['BT']->order_number); if (isset($realex_data->DCCCHOICE) and $realex_data->DCCCHOICE == $this::RESPONSE_DCC_CHOICE_YES) { $dcc_info = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_CHARGED', $this->plugin->getCardHolderAmount($realex_data->DCCMERCHANTAMOUNT), $realex_data->DCCMERCHANTCURRENCY, $this->plugin->getCardHolderAmount($realex_data->DCCCARDHOLDERAMOUNT), $realex_data->DCCCARDHOLDERCURRENCY); } if (isset($realex_data->REALWALLET_CHOSEN) and $realex_data->REALWALLET_CHOSEN == 1) { if ((isset($realex_data->PMT_SETUP) and $realex_data->PMT_SETUP == self::PMT_SETUP_SUCCESS)) { $payer_info = vmText::_('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_SUCCESS'); } else { $payer_info = vmText::_('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_FAILED'); } } $pasref = $realex_data->PASREF; } else { if ($this->isResponseDeclined($xml_response)) { $auth_info = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_DECLINED', $this->order['details']['BT']->order_number); } else { $auth_info = vmText::_('VMPAYMENT_REALEX_HPP_API_PAYMENT_STATUS_CANCELLED'); } } } } } } } $params= array( "success" => $success, "dcc_info" => $dcc_info, "auth_info" => $auth_info, "payer_info" => $payer_info, "pasref" => $pasref, "order_number" => $this->order['details']['BT']->order_number, "order_pass" => $this->order['details']['BT']->order_pass, ); return $params; } function handleCardStorage ($saved_cc_selected) { $userfield = false; // if no card are already saved, then if ($saved_cc_selected == -1 OR empty($saved_cc_selected)) { if ($this->doRealVault()) { $setNewPayerSuccess = true; $payerRef = $this->getSavedPayerRef(); if (!$payerRef) { $payerRef = $this->getNewPayerRef(); $responseNewPayer = $this->setNewPayer($payerRef); $setNewPayerSuccess = $this->manageSetNewPayer($responseNewPayer); if ($setNewPayerSuccess) { $this->saveNewPayerRef($payerRef, $this->order['details']['BT']->virtuemart_user_id); } } if ($setNewPayerSuccess) { $newPaymentRef = ""; $responseNewPayment = $this->setNewPayment($payerRef, $newPaymentRef); $userfield = $this->manageSetNewPayment($responseNewPayment, $payerRef, $newPaymentRef); } } } return $userfield; } /** * @param $response * @param $realexInterface * @return bool */ function manageSetNewPayer ($response) { $this->plugin->_storeRealexInternalData($response, $this->_currentMethod->virtuemart_paymentmethod_id, $this->order['details']['BT']->virtuemart_order_id, $this->order['details']['BT']->order_number, $this->request_type); $xml_response = simplexml_load_string($response); $success = $this->isResponseSuccess($xml_response); if (!$success) { $error = $xml_response->message . " (" . (string)$xml_response->result . ")"; $this->displayError($error); vmInfo('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_FAILED'); return false; } return true; } /** * @param $response * @param $realexInterface * @return bool */ function manageSetNewPayment ($response, $newPayerRef, $newPaymentRef) { $this->plugin->_storeRealexInternalData($response, $this->_method->virtuemart_paymentmethod_id, $this->order['details']['BT']->virtuemart_order_id, $this->order['details']['BT']->order_number, $this->request_type); $xml_response = simplexml_load_string($response); $success = $this->isResponseSuccess($xml_response); if (!$success) { $error = $xml_response->message . " (" . (string)$xml_response->result . ")"; $this->displayError($error); vmInfo('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_FAILED'); return false; } $userfield['virtuemart_user_id'] = $this->order['details']['BT']->virtuemart_user_id; $userfield['merchant_id'] = $this->_method->merchant_id; $userfield['realex_hpp_api_saved_pmt_ref'] = $newPaymentRef; //$userfield['realex_saved_payer_ref'] = $newPayerRef; $userfield['realex_hpp_api_saved_pmt_type'] = $this->customerData->getVar('cc_type'); if (!class_exists('shopFunctionsF')) { require(VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); } $userfield['realex_hpp_api_saved_pmt_digits'] = shopFunctionsF::mask_string($this->customerData->getVar('cc_number'), '*'); $userfield['realex_hpp_api_saved_pmt_name'] = $this->customerData->getVar('cc_name'); $userfield['realex_hpp_api_saved_pmt_expdate'] = $this->getFormattedExpiryDateForRequest(); return $userfield; } /** * Customer number gets sanitize to make sure that it contains only valid characters * @return mixed */ function getNewPayerRef () { return $this->getUniqueId($this->order['details']['BT']->customer_number); } /** * If Realvault, and new card, store after Authorization the card */ function storeNewPayment ($userfield) { if (!$userfield) { return; } if (!class_exists('VmTableData')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'vmtabledata.php'); } JLoader::import('joomla.plugin.helper'); JPluginHelper::importPlugin('vmuserfield'); $app = JFactory::getApplication(); $value = ''; $userfield['fromPayment'] = true; $app->triggerEvent('plgVmPrepareUserfieldDataSave', array( 'pluginrealex_hpp_api', 'realex_hpp_api', &$userfield, &$value, $userfield )); //vmInfo('VMPAYMENT_REALEX_HPP_API_CARD_STORAGE_SUCCESS'); } public function loadCustomerData ($loadCDFromPost = true) { if (!class_exists('RealexHelperCustomerData')) { require(JPATH_SITE . '/plugins/vmpayment/realex_hpp_api/realex_hpp_api/helpers/customerdata.php'); } $this->getCustomerData(); if ($loadCDFromPost) { $this->customerData->loadPost(); } } public function getCustomerData () { if (!class_exists('RealexHelperCustomerData')) { require(JPATH_SITE . '/plugins/vmpayment/realex_hpp_api/realex_hpp_api/helpers/customerdata.php'); } $this->customerData = new RealexHelperCustomerData(); $this->customerData->load(); } /** * @param bool $enqueueMessage * @return bool */ function validateCvv ($enqueueMessage = true) { if (!class_exists('Creditcard')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'creditcard.php'); } if (!$this->_method->cvn_checking) { return true; } $cc_cvv_realvault = vRequest::getInt('cc_cvv_realvault', ''); if (!Creditcard::validate_credit_card_cvv('', $cc_cvv_realvault, true)) { $app = JFactory::getApplication(); $app->enqueueMessage(vmText::_('VMPAYMENT_REALEX_HPP_API_CC_CARD_CVV_INVALID'), 'error'); return false; } return true; } /** * @param $saved_cc_selected * @return mixed */ function getStoredCCsData ($saved_cc_selected) { $realvault = false; $storedCCs = $this->getStoredCCs(JFactory::getUser()->id); foreach ($storedCCs as $storedCC) { if ($storedCC->id == $saved_cc_selected) { $realvault = $storedCC; break; } } return $realvault; } /** * @return array */ static function getRealexCreditCards () { return array( 'VISA', 'MC', 'AMEX', 'MAESTRO', 'DINERS', ); } function getVendorInfo ($field) { $virtuemart_vendor_id = 1; $vendorModel = VmModel::getModel('vendor'); $vendor = $vendorModel->getVendor($virtuemart_vendor_id); return $vendor->$field; } /** * the reference to use for the payment method saved. * If this field is not present an alphanumeric reference will be automatically generated. * @return string */ function getPmtRef () { return ''; } /** * This field contains the payer reference used for this cardholder. * If this field is empty or missing and PAYER_EXIST = 0, then a PAYER_REF will be automatically generated. * To add another card to an existing payer the PAYER_REF field should be set to their existing payer reference. * This field is mandatory if the CARD_STORAGE_ENABLE is set to 1 and * the PAYER_EXIST flag is set to 1. If PAYER_EXIST = 1 and CARD_STORAGE_ENABLE = 1, a 5xx error will be returned if the field is empty or missing: * 5xx “Mandatory field missing. PAYER_REF not present in request” * @return string */ function saveNewPayerRef ($payerRef) { $virtuemart_user_id = $this->order['details']['BT']->virtuemart_user_id; if (!$this->getSavedPayerRef($virtuemart_user_id)) { $PayerRefTableName = $this->plugin->getPayerRefTableName(); $q = 'INSERT INTO `' . $PayerRefTableName . '` (`virtuemart_user_id`,`payer_ref`, `merchant_id`) VALUES ("' . $virtuemart_user_id . '","' . $payerRef . '","' . $this->_method->merchant_id . '")'; $db = JFactory::getDBO(); $db->setQuery($q); $db->execute(); $err = $db->getErrorMsg(); if (!empty($err)) { vmError('Database error: Realex saveNewPayerRef ' . $err); } } } /** * PayerRef is the customer number which is unique * @return mixed */ function getSavedPayerRef ($userId = '') { if (empty($userId)) { if (JFactory::getApplication()->isSite()) { $userId = $this->order['details']['BT']->virtuemart_user_id; } else { $userId = vRequest::getVar('virtuemart_user_id', 0); if (is_array($userId)) { $userId = $userId[0]; } } } $PayerRefTableName = $this->plugin->getPayerRefTableName(); $q = 'SELECT `payer_ref` FROM `' . $PayerRefTableName . '` WHERE `virtuemart_user_id`="' . $userId . '" AND `merchant_id`="' . $this->_method->merchant_id . '" '; $db = JFactory::getDBO(); $db->setQuery($q); $payer_ref = $db->loadResult(); return $payer_ref; } /** * @param $storedCCs * @param $selected * @return null */ function getSelectedCC ($storedCCs, $selected) { if (empty($storedCCs)) { return NULL; } foreach ($storedCCs as $storedCC) { if ($storedCC->id == $selected) { return $storedCC; } } } /** * @param $selected_cc_id * @return null|stdClass */ function getSelectedCCParams ($selected_cc_id) { if ($selected_cc_id == -1) { $selectedCCParams = new stdClass(); $selectedCCParams->addNew = true; return $selectedCCParams; } $storedCCs = $this->getStoredCCs(JFactory::getUser()->id); $selectedCC = $this->getSelectedCC($storedCCs, $selected_cc_id); if ($selectedCC == NULL) { return NULL; } $selectedCCParams = $selectedCC; $selectedCCParams->addNew = false; return $selectedCCParams; } /** * @var */ static $_storedCCsCache; function getStoredCCs ($virtuemart_user_id) { //$this->debugLog( $virtuemart_user_id, 'getStoredCCs', 'debug'); if (!empty(self::$_storedCCsCache)) { if (isset(self::$_storedCCsCache[$virtuemart_user_id])) { $storedCCs = self::$_storedCCsCache[$virtuemart_user_id]['storedCC']; //$this->debugLog('from cache', 'getStoredCCs', 'debug'); return $storedCCs; } } JLoader::import('joomla.plugin.helper'); JPluginHelper::importPlugin('vmuserfield'); $app = JFactory::getApplication(); $storedCCs = ""; $app->triggerEvent('plgVmOnPaymentDisplay', array('pluginrealex_hpp_api', $virtuemart_user_id, &$storedCCs)); //$this->debugLog(var_export($storedCCs, true), 'getStoredCCs after plgVmOnPaymentDisplay', 'debug'); if (empty(self::$_storedCCsCache)) { self::$_storedCCsCache = array(); } if (empty(self::$_storedCCsCache[$virtuemart_user_id])) { self::$_storedCCsCache[$virtuemart_user_id] = array(); } self::$_storedCCsCache[$virtuemart_user_id]['storedCC'] = $storedCCs; return $storedCCs; } function getStoredCCsByPaymentMethod ($virtuemart_user_id, $virtuemart_paymentmethod_id) { $storedCCsByPaymentMethod = array(); $storeCCs = $this->getStoredCCs($virtuemart_user_id); if ($storeCCs) { foreach ($storeCCs as $storeCC) { if ($storeCC->virtuemart_paymentmethod_id == $virtuemart_paymentmethod_id) { $storedCCsByPaymentMethod[] = $storeCC; } } } return $storedCCsByPaymentMethod; } function getStoredCCByPmt_ref ($virtuemart_user_id, $pmt_ref) { $storedCCByPmt_ref = array(); $storeCCs = $this->getStoredCCs($virtuemart_user_id); if ($storeCCs) { foreach ($storeCCs as $storeCC) { if ($storeCC->realex_hpp_api_saved_pmt_ref == $pmt_ref) { $storedCCByPmt_ref = $storeCC; break; } } } return $storedCCByPmt_ref; } function getRemoteCCFormParams ($xml_response_dcc = NULL, $error = FALSE) { $realvault = false; $useSSL = $this->useSSL(); $submit_url = JRoute::_('index.php?option=com_virtuemart&Itemid=' . vRequest::getInt('Itemid') . '&lang=' . vRequest::getCmd('lang', ''), $this->cart->useXHTML, $useSSL); $card_payment_button = $this->getPaymentButton(); if (!empty($xml_response_dcc)) { $notificationTask = "handleRemoteDccForm"; } elseif ($this->_method->threedsecure AND $this->isCC3DSVerifyEnrolled() AND !$error) { $notificationTask = "handleVerify3D"; } else { $notificationTask = "handleRemoteCCForm"; } if (empty($this->_method->creditcards)) { $this->_method->creditcards = RealexHelperRealex::getRealexCreditCards(); } elseif (!is_array($this->_method->creditcards)) { $this->_method->creditcards = (array)$this->_method->creditcards; } $ccDropdown = ""; $offer_save_card = false; if (!JFactory::getUser()->guest AND $this->_method->realvault) { $selected_cc = $this->customerData->getVar('saved_cc_selected'); if (empty($selected_cc)) { $selected_cc = -1; } $use_another_cc = true; $ccDropdown = $this->getCCDropDown($this->_method->virtuemart_paymentmethod_id, JFactory::getUser()->id, $selected_cc, $use_another_cc, true); if ($selected_cc > 0) { $realvault = $this->getStoredCCsData($selected_cc); } $offer_save_card = $this->_method->offer_save_card; } $amountInCurrency = vmPSPlugin::getAmountInCurrency($this->order['details']['BT']->order_total, $this->_method->payment_currency); $order_amount = vmText::sprintf('VMPAYMENT_REALEX_HPP_API_PAYMENT_TOTAL', $amountInCurrency['display']); $cd = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $payment_name = $this->plugin->renderPluginName($this->_method); $cvv_images = $this->_method->cvv_images; $cvv_info = ""; $dccinfo = ""; if ($xml_response_dcc) { $success = $this->isResponseSuccess($xml_response_dcc); if ($success AND isset($xml_response_dcc->dccinfo)) { $dccinfo = $xml_response_dcc->dccinfo; } } if ($xml_response_dcc AND $realvault) { $ccData['cc_type'] = $realvault->realex_hpp_api_saved_pmt_type; $ccData['cc_number'] = $realvault->realex_hpp_api_saved_pmt_digits; $ccData['cc_number_masked'] = $realvault->realex_hpp_api_saved_pmt_digits; $ccData['cc_name'] = $realvault->realex_hpp_api_saved_pmt_name; $ccData['cc_cvv_realvault'] = $this->customerData->getVar('cc_cvv_realvault'); $ccData['cc_cvv_masked'] = '***'; } else { $ccData['cc_type'] = $this->customerData->getVar('cc_type'); $ccData['cc_number'] = $this->customerData->getVar('cc_number'); $ccData['cc_number_masked'] = $this->customerData->getMaskedCCnumber(); $ccData['cc_cvv'] = $this->customerData->getVar('cc_cvv'); $ccData['cc_cvv_masked'] = '***'; $ccData['cc_expire_month'] = $this->customerData->getVar('cc_expire_month'); $ccData['cc_expire_year'] = $this->customerData->getVar('cc_expire_year'); $ccData['cc_name'] = $this->customerData->getVar('cc_name'); $ccData['save_card'] = $this->customerData->getVar('save_card'); } return array( "order_amount" => $order_amount, "payment_name" => $payment_name, "submit_url" => $submit_url, "card_payment_button" => $card_payment_button, "notificationTask" => $notificationTask, 'creditcardsDropDown' => $ccDropdown, "dccinfo" => $dccinfo, "ccData" => $ccData, 'creditcards' => $this->_method->creditcards, 'offer_save_card' => $offer_save_card, 'order_number' => $this->order['details']['BT']->order_number, 'virtuemart_paymentmethod_id' => $this->_method->virtuemart_paymentmethod_id, 'integration' => $this->_method->integration, 'cvv_info' => $cvv_info, 'cvn_checking' => $this->_method->cvn_checking, 'cvv_images' => $cvv_images); } /** * Switch and Solo became Maestro * @return bool */ function isCC3DSVerifyEnrolled ($pmt_type = NULL) { $CC3DSVerifyEnrolled = array('VISA', 'MC', 'MAESTRO', 'AMEX'); if ($pmt_type == NULL) { $pmt_type = $this->customerData->getVar('cc_type'); } return in_array($pmt_type, $CC3DSVerifyEnrolled); } /** * @param $virtuemart_paymentmethod_id * @param $virtuemart_user_id * @param $selected_cc * @return mixed|null */ function getCCDropDown ($virtuemart_paymentmethod_id, $virtuemart_user_id, $selected_cc, $use_another_cc = true, $radio = false) { //$storeCCs = $this->getStoredCCsByPaymentMethod($virtuemart_user_id, $virtuemart_paymentmethod_id); $storeCCs = $this->getStoredCCs($virtuemart_user_id); if (empty($storeCCs)) { return null; } if (!class_exists('VmHTML')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'html.php'); } $attrs = 'class="inputbox vm-chzn-select"'; $idA = $id = 'saved_cc_selected'; //$idA = $id = 'saved_cc_selected_'; //$options[] = array('value' => '', 'text' => vmText::_('VMPAYMENT_REALEX_HPP_API_PLEASE_SELECT')); if ($use_another_cc) { $options[] = JHTML::_('select.option', -1, vmText::_('VMPAYMENT_REALEX_HPP_API_USE_ANOTHER_CC')); $radioOptions[-1] = vmText::_('VMPAYMENT_REALEX_HPP_API_USE_ANOTHER_CC'); } foreach ($storeCCs as $storeCC) { $cc_type = vmText::_('VMPAYMENT_REALEX_HPP_API_CC_' . $storeCC->realex_hpp_api_saved_pmt_type); $name = $cc_type . ' ' . $storeCC->realex_hpp_api_saved_pmt_digits . ' ' . $this->renderExpDate($storeCC->realex_hpp_api_saved_pmt_expdate) . ' (' . $storeCC->realex_hpp_api_saved_pmt_name . ')'; $options[] = JHTML::_('select.option', $storeCC->id, $name); $radioOptions[$storeCC->id] = $name; } if ($radio) { return VmHTML::radioList($idA, $selected_cc, $radioOptions, 'class="realexListCC"'); } else { return JHTML::_('select.genericlist', $options, $idA, 'class="realexListCC inputbox vm-chzn-select" style="width: 350px;"', 'value', 'text', $selected_cc); } } /** * stored format of the expired date is mmyy * @param $expdate * @return mixed */ function renderExpDate ($expdate) { return substr($expdate, 0, 2) . '/' . substr($expdate, -2); } function getOfferSaveCard ($checked, $paymentmethod_id) { $param = ''; if ($checked) { $param = "checked"; } $id = 'realex_offersavecard_' . $paymentmethod_id; $html = vmText::_('VMPAYMENT_REALEX_HPP_API_OFFERSAVECARD'); $html .= "<br />"; $html .= '<input type="checkbox" name="' . $id . '" id="' . $id . '" value="1" ' . $param . '/>'; $html .= ' <label for="' . $id . '">' . vmText::_('VMPAYMENT_REALEX_HPP_API_OFFERSAVECARD_YES') . '</label>'; return $html; } function doRealVault (&$selectedCCParams) { if (!JFactory::getUser()->guest AND $this->_method->realvault AND $this->_method->integration == 'remote') { if (!($this->_method->offer_save_card) OR ($this->_method->offer_save_card AND $this->customerData->getVar('save_card')) ) { return true; } return false; } return false; } /** * @return string */ function getRemoteURL () { return "https://epage.payandshop.com/epage-remote-plugins.cgi"; } /** * @return string */ function getPaymentButton () { if (empty($this->_method->card_payment_button)) { $card_payment_button = vmText::_('VMPAYMENT_REALEX_HPP_API_DCC_PAY_NOW'); } else { $card_payment_button = $this->_method->card_payment_button; } return $card_payment_button; } /** * Once the payer has been set up on the RealVault system, to raise a payment, use the receipt-in transaction. * @param $selectedCCParams * @param bool $ask_dcc * @param bool $set_dcc * @return bool|mixed */ public function requestReceiptIn ($selectedCCParams, $xml_response_dcc = NULL, $xml_3Dresponse = NULL) { $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_RECEIPT_IN); if (!empty($selectedCCParams->cc_cvv_realvault)) { $xml_request .= '<paymentdata> <cvn> <number>' . $selectedCCParams->cc_cvv_realvault . '</number> </cvn> </paymentdata> '; } if ($this->_method->dcc) { $xml_request .= '<autosettle flag="1" /> '; } else { $xml_request .= '<autosettle flag="' . $this->getSettlement() . '" /> '; } $xml_request .= $this->setMpi($xml_3Dresponse); $payerRef = $this->getSavedPayerRef(); $xml_request .= '<payerref>' . $this->getSavedPayerRef() . '</payerref> <paymentmethod>' . $selectedCCParams->realex_hpp_api_saved_pmt_ref . '</paymentmethod>'; if ($xml_response_dcc) { $xml_request .= $this->setDccInfo($xml_response_dcc); /* $xml_request .= ' <dccinfo> <ccp>' . $this->_method->dcc_service . '</ccp> <type>1</type> <rate>' . $xml_response_dcc->dccinfo->cardholderrate . '</rate> <ratetype>S</ratetype> <amount currency="' . $xml_response_dcc->dccinfo->cardholdercurrency . '">' . $xml_response_dcc->dccinfo->cardholderamount . '</amount> </dccinfo>'; */ } $xml_request .= '<md5hash /> '; $hash = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), $payerRef); $xml_request .= $this->setSha1($hash); $xml_request .= $this->setComments(); $xml_request .= $this->setTSSinfo(); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } function setMPI ($xml_3Dresponse) { $xml_request = ''; if ($xml_3Dresponse) { if (!empty($xml_3Dresponse->eci) AND isset($xml_3Dresponse->eci)) { $xml_request = '<mpi>' . '<eci>' . $xml_3Dresponse->eci . '</eci> </mpi> '; } /** * MPI: Merchant Plug In - it is the component that communicates with the other components during the actual transaction. */ if ($xml_3Dresponse AND !empty($xml_3Dresponse->threedsecure) AND isset($xml_3Dresponse->threedsecure)) { $xml_request = '<mpi> <eci>' . $xml_3Dresponse->threedsecure->eci . '</eci> <cavv>' . $xml_3Dresponse->threedsecure->cavv . '</cavv> <xid>' . $xml_3Dresponse->threedsecure->xid . '</xid> </mpi> '; } } return $xml_request; } function getSettlement () { return ($this->_method->settlement == 'auto') ? 1 : 0; } /** * Hash Value Syntax: Timestamp.merchantID.payerref.pmtref * @param $storedCC : the stored Credit card to delete * @return bool */ function deleteStoredCard ($storedCC) { $timestamp = $this->getTimestamp(); $payerRef = $this->getSavedPayerRef($storedCC['virtuemart_user_id']); $xml_request = ' <request timestamp="' . $timestamp . '" type="' . self::REQUEST_TYPE_CARD_CANCEL_CARD . '"> <merchantid>' . $this->_method->merchant_id . '</merchantid> <card> <ref>' . $storedCC['realex_hpp_api_saved_pmt_ref'] . '</ref> <payerref>' . $payerRef . '</payerref> </card>'; $sha1_request = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $payerRef, $storedCC['realex_hpp_api_saved_pmt_ref']); $xml_request .= $this->setSha1($sha1_request); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); $xml_response = simplexml_load_string($response); $result = (string)$xml_response->result; $merchantid = (string)$xml_response->merchantid; $sha1hash = (string)$xml_response->sha1hash; $sha1_temp_response = sha1($timestamp . '.' . $merchantid . '.' . $payerRef . '.' . $storedCC['realex_hpp_api_saved_pmt_ref']); $sha1_response = sha1($sha1_temp_response . '.' . $this->_method->shared_secret); // 501 : Card Ref and Payer combination does not exist: ignore those cases if (($result == '00' || $result == '501') && $sha1_response == $sha1_request) { return true; } else { $this->displayError((string)$xml_response->message); return false; } } /** * To update the Expiry Date or update the Cardholder Name on an existing card: * Hash Value Syntax: Timestamp.merchantID.payerref.pmtref * @param $storedCC : the stored Credit card to delete * @return bool */ function updateStoredCard ($storedCC) { $timestamp = $this->getTimestamp(); $payerRef = $this->getSavedPayerRef($storedCC['virtuemart_user_id']); $xml_request = ' <request timestamp="' . $timestamp . '" type="' . self::REQUEST_TYPE_CARD_UPDATE_CARD . '"> <merchantid>' . $this->_method->merchant_id . '</merchantid> <card> <ref>' . $storedCC['realex_hpp_api_saved_pmt_ref'] . '</ref> <payerref>' . $payerRef . '</payerref> <expdate>' . $storedCC['realex_hpp_api_saved_pmt_expdate'] . '</expdate> <chname>' . $storedCC['realex_hpp_api_saved_pmt_name'] . '</chname> <type>card</type> </card>'; $sha1_request = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $payerRef, $storedCC['realex_hpp_api_saved_pmt_ref'], $storedCC['realex_hpp_api_saved_pmt_expdate'], ""); $xml_request .= $this->setSha1($sha1_request); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); $xml_response = simplexml_load_string($response); $result = (string)$xml_response->result; $merchantid = (string)$xml_response->merchantid; $sha1hash = (string)$xml_response->sha1hash; $sha1_temp_response = sha1($timestamp . '.' . $merchantid . '.' . $payerRef . '.' . $storedCC['realex_hpp_api_saved_pmt_ref'] . '.' . $storedCC['realex_hpp_api_saved_pmt_expdate'] . '.'); $sha1_response = sha1($sha1_temp_response . '.' . $this->_method->shared_secret); // 501 : Card Ref and Payer combination does not exist: ignore those cases if (($result == '00' || $result == '501') && $sha1_response == $sha1_request) { return true; } else { $this->displayError((string)$xml_response->message); return false; } } /** * set comment in request * @return string */ function setComments () { $xml_request = '<comments> <comment id="2">virtuemart-rlx</comment> </comments> '; return $xml_request; } /** * set TSS info in request * @return string */ function setTSSinfo () { $BT = $this->order['details']['BT']; $ST = ((isset($this->order['details']['ST'])) ? $this->order['details']['ST'] : $this->order['details']['BT']); $xml_request = '<tssinfo> <address type="billing"> <code>' . $this->getCode($BT) . '</code> <country>' . ShopFunctions::getCountryByID($BT->virtuemart_country_id, 'country_2_code') . '</country> </address> <address type="shipping"> <code>' . $this->getCode($ST) . '</code> <country>' . ShopFunctions::getCountryByID($ST->virtuemart_country_id, 'country_2_code') . '</country> </address> <custnum></custnum> <varref></varref> <prodid></prodid> </tssinfo> '; return $xml_request; } /** * @return bool|mixed */ function setNewPayer ($newPayerRef) { $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_PAYER_NEW, false); $BT = $this->order['details']['BT']; $xml_request .= '<payer type="Business" ref="' . $newPayerRef . '"> <firstname>' . $this->sanitize($BT->first_name) . '</firstname> <surname>' . $this->sanitize($BT->last_name) . '</surname> '; if (!empty($BT->company)) { $xml_request .= '<company>' . $BT->company . '</company> '; } $xml_request .= '<address> <line1>' . $BT->address_1 . '</line1> <line2 >' . $BT->address_2 . '</line2> <line3 /> <city>' . $BT->city . '</city> <county>' . ShopFunctions::getCountryByID($BT->virtuemart_country_id, 'country_2_code') . '</county> <postcode>' . $this->stripnonnumeric($BT->zip, 5) . '</postcode> <country code="' . ShopFunctions::getCountryByID($BT->virtuemart_country_id, 'country_2_code') . '"> ' . ShopFunctions::getCountryByID($BT->virtuemart_country_id, 'country_name') . ' </country> </address> <phonenumbers> <home /> <work>' . $BT->phone_1 . '</work> <fax /> <mobile>' . $BT->phone_2 . '</mobile> </phonenumbers> <email>' . $BT->email . '</email> <comments> <comment id="1" /> <comment id="2" /> </comments> </payer> '; $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, '', '', $newPayerRef); $xml_request .= $this->setSha1($sha1); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } function sanitize ($string) { $string = $this->replaceNonAsciiCharacters($string); $string = vRequest::filterUword($string, ' '); return $string; } /** * @return bool|mixed */ function setNewPayment ($newPayerRef, &$newPaymentRef) { $timestamp = $this->getTimestamp(); $cc_number = str_replace(" ", "", $this->customerData->getVar('cc_number')); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_CARD_NEW, false); $newPaymentRef = $this->getUniqueId($this->order['details']['BT']->order_number); $cc_name = $this->sanitize($this->customerData->getVar('cc_name')); $xml_request .= '<card> <ref>' . $newPaymentRef . '</ref> <payerref>' . $newPayerRef . '</payerref> <number>' . $cc_number . '</number> <expdate>' . $this->getFormattedExpiryDateForRequest() . '</expdate> <chname>' . $cc_name . '</chname> <type>' . $this->getCCtype($this->customerData->getVar('cc_type')). '</type> <issueno /> </card> '; $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, '', '', $newPayerRef, $cc_name, $cc_number); $xml_request .= $this->setSha1($sha1); $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * @param $value * @return string */ function getUniqueId ($value) { $value = $this->sanitize($value); return $value . '-' . time(); } /** * cc_expire_year has format 4 digits * set CC expiry date in required format mmyy * @return string */ function getFormattedExpiryDateForRequest () { return $this->customerData->getVar('cc_expire_month') . substr($this->customerData->getVar('cc_expire_year'), -2); } /** * set header request * @param $timestamp * @param $type * @return string */ function setHeader ($timestamp, $type, $include_amount = true, $include_account=true) { $this->request_type = $type; $xml_request = '<request timestamp="' . $timestamp . '" type="' . $type . '"> <merchantid>' . $this->_method->merchant_id . '</merchantid>'; if ($include_account) { $xml_request .= '<account>' . $this->_method->subaccount . '</account>'; } $xml_request .= '<orderid>' . $this->order['details']['BT']->order_number . '</orderid> '; if ($include_amount) { $xml_request .= '<amount currency="' . $this->getPaymentCurrency() . '">' . $this->getTotalInPaymentCurrency() . '</amount> '; } return $xml_request; } /** * set sha1 in request * @param $sha1hash * @return string */ function setSha1 ($sha1hash) { $xml_request = '<sha1hash>' . $sha1hash . '</sha1hash> '; return $xml_request; } function rebateTransaction ($payments) { $payment = $this->getTransactionData($payments); if ($payment === NULL) { return NULL; } $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_REBATE, true, false); $xml_request .= '<pasref>' . $payment->realex_hpp_api_response_pasref . '</pasref> <authcode>' . $payment->realex_hpp_api_response_authcode . '</authcode> '; $refundhash = sha1($this->_method->rebate_password); $xml_request .= '<refundhash>' . $refundhash . '</refundhash> '; $xml_request .= $this->setComments(); // NOTE: There is no cardnumber included in the rebate so the cardnumber field can be left blank in the hash . $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), ""); $xml_request .= $this->setSha1($sha1); $xml_request .= '<md5hash></md5hash> '; $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } function settleTransaction ($payments) { $payment = $this->getTransactionData($payments); if ($payment === NULL) { return NULL; } $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_SETTLE); $xml_request .= ' <pasref>' . $payment->realex_hpp_api_response_pasref . '</pasref> <authcode>' . $payment->realex_hpp_api_response_authcode . '</authcode> '; $xml_request .= $this->setComments(); $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), ""); $xml_request .= $this->setSha1($sha1); $xml_request .= '<md5hash></md5hash> '; $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * Before settlement, it is possible to void an authorisation, manual, offline, or rebate request. * If the transaction has been settled or batched, then it cannot be voided, although it can be submitted using another authorisation or rebate. * * @param $payments * @return bool|mixed|null */ function voidTransaction ($payments) { $payment = $this->getTransactionData($payments); if ($payment === NULL) { return NULL; } $timestamp = $this->getTimestamp(); $xml_request = $this->setHeader($timestamp, self::REQUEST_TYPE_VOID); $xml_request .= ' <pasref>' . $payment->realex_hpp_api_response_pasref . '</pasref> <authcode>' . $payment->realex_hpp_api_response_authcode . '</authcode> '; $xml_request .= $this->setComments(); // timestamp.merchantid.orderid... $sha1 = $this->getSha1Hash($this->_method->shared_secret, $timestamp, $this->_method->merchant_id, $this->order['details']['BT']->order_number, $this->getTotalInPaymentCurrency(), $this->getPaymentCurrency(), ""); $xml_request .= $this->setSha1($sha1); $xml_request .= '<md5hash></md5hash> '; $xml_request .= '</request>'; $response = $this->getXmlResponse($xml_request); return $response; } /** * @param $payments * @param string $request_type * @return null */ function getTransactionData ($payments, $request_type = array( self::REQUEST_TYPE_AUTH, self::REQUEST_TYPE_RECEIPT_IN )) { foreach ($payments as $payment) { if (in_array($payment->realex_hpp_api_request_type_response, $request_type)) { return $payment; } } return NULL; } function getCCtype($cctype ) { if ($cctype=='MAESTRO') { return 'MC'; } else { return $cctype; } } function getLastTransactionData ($payments, $request_type = array( self::REQUEST_TYPE_AUTH, self::REQUEST_TYPE_RECEIPT_IN )) { $payment = end($payments); if (in_array($payment->realex_hpp_api_request_type_response, $request_type)) { return $payment; } return NULL; } function isResponseSuccess ($xml_response) { $result = (string)$xml_response->result; $success = ($result == self::RESPONSE_CODE_SUCCESS); return $success; } function isResponseDeclined ($xml_response) { $result = (string)$xml_response->result; $result = ($result == self::RESPONSE_CODE_DECLINED); return $result; } function isResponseWrongPhrase ($xml_response) { $threedsecure = $xml_response->threedsecure; $threedsecure_status = (string)$threedsecure->status; $result = (string)$xml_response->result; $result = ($result == self::RESPONSE_CODE_SUCCESS AND $threedsecure_status == self::THREEDSECURE_STATUS_NOT_AUTHENTICATED); return $result; } function isResponseAlreadyProcessed ($xml_response) { $result = (string)$xml_response->result; $result = ($result == self::RESPONSE_CODE_INVALID_ORDER_ID); return $result; } function isResponseNotValidated ($xml_response) { $result = (string)$xml_response->result; $success = ($result == self::RESPONSE_CODE_NOT_VALIDATED); return $success; } function isResponseInvalidPaymentDetails ($xml_response) { $result = (string)$xml_response->result; $success = ($result == self::RESPONSE_CODE_INVALID_PAYMENT_DETAILS); return $success; } /** * get HASH for Realex * @param $secret * @param $args * @return string */ public function getSha1Hash ($secret, $args = null) { if (empty($secret)) { vmError('function getSha1Hash:no secret value for getSha1Hash', 'no secret value for getSha1Hash'); } $args = func_get_args(); array_shift($args); $hash = sha1(implode('.', $args)); //$hash =$hash.$secret; $hash = sha1($hash . '.' . $secret); return $hash; } /** * Validate the response hash from Realex. * is always timestamp.merchantid.orderid.result.message.pasref.authcode * @param $xml_response simplexml_load_string */ protected function validateResponseHash ($response) { $xml_response = simplexml_load_string($response); if (! isset($xml_response->sha1hash)) { return true; } $hash = $this->getSha1Hash($this->_method->shared_secret, $xml_response->attributes()->timestamp, $this->_method->merchant_id, (string)$xml_response->orderid, (string)$xml_response->result, (string)$xml_response->message, (string)$xml_response->pasref, (string)$xml_response->authcode); if ($hash != $xml_response->sha1hash) { $this->displayError(vmText::sprintf('VMPAYMENT_REALEX_HPP_API_ERROR_WRONG_HASH', $hash, $xml_response->sha1hash)); return false; } return true; } /** * @return string */ function getTimestamp () { return strftime("%Y%m%d%H%M%S"); } /** * @param $xml */ function obscureSha1hash ($xml) { if (isset($xml->sha1hash)) { $xml->sha1hash = $this->obscureValue($xml->sha1hash); } return $xml; } /** * @param $value * @return string */ function obscureValue ($value) { $value_length = strlen($value); $value = str_repeat("*", $value_length); return $value; } /** * @param $xml_request * @return bool|mixed */ function getXmlResponse ($xml_request) { $this->xml_request = $xml_request; $requestToLog = $xml_request; $xml_requestToLog = simplexml_load_string($requestToLog); if ($xml_requestToLog) { if (isset($xml_requestToLog->card)) { $card_number = $xml_requestToLog->card->number; $cc_length = strlen($card_number); //$xml_requestToLog->card->number = str_repeat("*", $cc_length); $xml_requestToLog->card->number = $this->obscureValue($xml_requestToLog->card->number); if (isset($xml_requestToLog->card->cvn->number)) { $xml_requestToLog->card->cvn->number = $this->obscureValue($xml_requestToLog->card->cvn->number); } } if (isset($xml_requestToLog->paymentdata->cvn->number)) { $xml_requestToLog->paymentdata->cvn->number = $this->obscureValue($xml_requestToLog->paymentdata->cvn->number); } $xml_requestToLog = $this->obscureSha1hash($xml_requestToLog); //$this->debugLog(print_r($request, true), 'debug'); $this->debugLog('<textarea style="margin: 0px; width: 100%; height: 250px;">' . $xml_requestToLog->asXML() . '</textarea>', 'Request', 'message'); } else { // THIS IS AN ERROR: cannot log there was an error $this->debugLog('<textarea style="margin: 0px; width: 100%; height: 250px;">COULD NOT LOG INT THIS' . $requestToLog . '</textarea>', 'Request', 'error'); // we do not continue because anyway we will have <message>Bad XML formation</message> return NULL; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->getRemoteURL()); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_request); $response = curl_exec($ch); curl_close($ch); $responseToLog = $response; $xml_responseToLog = simplexml_load_string($responseToLog); if (isset($xml_responseToLog->sha1hash)) { $sha1hash = $xml_responseToLog->sha1hash; $sha1hash_length = strlen($sha1hash); $xml_responseToLog->sha1hash = str_repeat("*", $sha1hash_length); } $this->debugLog('<textarea style="margin: 0px; width: 100%; height: 250px;">' . $xml_responseToLog->asXML() . '</textarea>', 'response :', 'message'); if (empty($response)) { $this->displayError(vmText::_('VMPAYMENT_REALEX_HPP_API_EMPTY_RESPONSE')); return FALSE; } if (!$this->validateResponseHash($response)) { return FALSE; } return $response; } function useSSL () { if ($this->_method->shop_mode == 'sandbox') { return false; } return true; } /** * @param $message */ static $displayErrorDone = false; function displayError ($admin, $public = '') { if ($admin == NULL) { $admin = "an error occurred"; } if (empty($public) AND $this->_method->debug) { $public = $admin; } vmError((string)$admin, (string)$public); } /** * Realex requires that non asci characters are removed from the cc name * @param $string * @return string */ function replaceNonAsciiCharacters ($string) { $replacements = $this->getReplacements(); $string = strtr($string, $replacements); return $string; } /** * Return array of URL characters to be replaced. * * @return array */ public function getReplacements () { return array( 'Á' => 'A', 'Â' => 'A', 'Å' => 'A', 'Ă' => 'A', 'Ä' => 'A', 'À' => 'A', 'Æ' => 'A', 'Ć' => 'C', 'Ç' => 'C', 'Č' => 'C', 'Ď' => 'D', 'É' => 'E', 'È' => 'E', 'Ë' => 'E', 'Ě' => 'E', 'Ê' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ĺ' => 'L', 'ľ' => 'l', 'Ľ' => 'L', 'Ń' => 'N', 'Ň' => 'N', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ŕ' => 'R', 'Ř' => 'R', 'Š' => 'S', 'Ś' => 'S', 'Ť' => 'T', 'Ů' => 'U', 'Ú' => 'U', 'Ű' => 'U', 'Ü' => 'U', 'Û' => 'U', 'Ý' => 'Y', 'Ž' => 'Z', 'Ź' => 'Z', 'á' => 'a', 'â' => 'a', 'å' => 'a', 'ä' => 'a', 'à' => 'a', 'æ' => 'a', 'ć' => 'c', 'ç' => 'c', 'č' => 'c', 'ď' => 'd', 'đ' => 'd', 'é' => 'e', 'ę' => 'e', 'ë' => 'e', 'ě' => 'e', 'è' => 'e', 'ê' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ĺ' => 'l', 'ń' => 'n', 'ň' => 'n', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'ő' => 'o', 'ö' => 'o', 'ø' => 'o', 'š' => 's', 'ś' => 's', 'ř' => 'r', 'ŕ' => 'r', 'ť' => 't', 'ů' => 'u', 'ú' => 'u', 'ù' => 'u', 'ű' => 'u', 'ü' => 'u', 'û' => 'u', 'ý' => 'y', 'ž' => 'z', 'ź' => 'z', '˙' => '-', 'ß' => 'ss', 'Ą' => 'A', 'µ' => 'u', 'ą' => 'a', 'Ę' => 'E', 'ż' => 'z', 'Ż' => 'Z', 'ł' => 'l', 'Ł' => 'L', 'А' => 'A', 'а' => 'a', 'Б' => 'B', 'б' => 'b', 'В' => 'V', 'в' => 'v', 'Г' => 'G', 'г' => 'g', 'Д' => 'D', 'д' => 'd', 'Е' => 'E', 'е' => 'e', 'Ж' => 'Zh', 'ж' => 'zh', 'З' => 'Z', 'з' => 'z', 'И' => 'I', 'и' => 'i', 'Й' => 'I', 'й' => 'i', 'К' => 'K', 'к' => 'k', 'Л' => 'L', 'л' => 'l', 'М' => 'M', 'м' => 'm', 'Н' => 'N', 'н' => 'n', 'О' => 'O', 'о' => 'o', 'П' => 'P', 'п' => 'p', 'Р' => 'R', 'р' => 'r', 'С' => 'S', 'с' => 's', 'Т' => 'T', 'т' => 't', 'У' => 'U', 'у' => 'u', 'Ф' => 'F', 'ф' => 'f', 'Х' => 'Kh', 'х' => 'kh', 'Ц' => 'Tc', 'ц' => 'tc', 'Ч' => 'Ch', 'ч' => 'ch', 'Ш' => 'Sh', 'ш' => 'sh', 'Щ' => 'Shch', 'щ' => 'shch', 'Ы' => 'Y', 'ы' => 'y', 'Э' => 'E', 'э' => 'e', 'Ю' => 'Iu', 'ю' => 'iu', 'Я' => 'Ia', 'я' => 'ia', 'Ъ' => '', 'ъ' => '', 'Ь' => '', 'ь' => '', 'Ё' => 'E', 'ё' => 'e', 'ου' => 'ou', 'ού' => 'ou', 'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'i', 'θ' => 'th', 'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => 'ks', 'ο' => 'o', 'π' => 'p', 'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'i', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'o', 'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ή' => 'i', 'ό' => 'o', 'ύ' => 'i', 'ώ' => 'o', 'Ου' => 'ou', 'Ού' => 'ou', 'Α' => 'a', 'Β' => 'b', 'Γ' => 'g', 'Δ' => 'd', 'Ε' => 'e', 'Ζ' => 'z', 'Η' => 'i', 'Θ' => 'th', 'Ι' => 'i', 'Κ' => 'k', 'Λ' => 'l', 'Μ' => 'm', 'Ν' => 'n', 'Ξ' => 'ks', 'Ο' => 'o', 'Π' => 'p', 'Ρ' => 'r', 'Σ' => 's', 'Τ' => 't', 'Υ' => 'i', 'Φ' => 'f', 'Χ' => 'x', 'Ψ' => 'ps', 'Ω' => 'o', 'ς' => 's', 'Ά' => 'a', 'Έ' => 'e', 'Ή' => 'i', 'Ί' => 'i', 'Ό' => 'o', 'Ύ' => 'i', 'Ώ' => 'o', 'ϊ' => 'i', 'ΐ' => 'i', ); } } realex_hpp_api/helpers/redirect.php 0000604 00000027125 15075477240 0013516 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: redirect.php 8892 2015-06-29 08:06:12Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die('Restricted access'); class RealexHelperRealexRedirect extends RealexHelperRealex { function __construct ($method, $plugin) { parent::__construct($method, $plugin); } public function confirmedOrder (&$postRequest) { $selectedCCParams = array(); if (!$this->doRealvault($selectedCCParams)) { $response = $this->sendPostRequest(); $postRequest = true; } else { $response = $this->realvaultReceiptIn($selectedCCParams); } return $response; } function doRealVault (&$selectedCCParams) { //$saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); //$selectedCCParams = $this->getSelectedCCParams($saved_cc_selected, $this->cart->virtuemart_paymentmethod_id); $doRealVault = false; if (!JFactory::getUser()->guest AND $this->_method->realvault and $this->getStoredCCs(JFactory::getUser()->id)) { //if (!$selectedCCParams->addNew) { $doRealVault = true; //} } $this->debugLog((int)$doRealVault, 'Realex doRealVault:', 'debug'); return $doRealVault; } function sendPostRequest () { $post_variables = $this->getPostVariables(); $jump_url = $this->getJumpUrl(); $html = ''; if ($this->_method->debug) { $html .= '<form action="' . $jump_url . '" method="post" name="vm_realex_form" target="realex">'; } else { if (VmConfig::get('css')) { $msg = vmText::_('VMPAYMENT_REALEX_HPP_API_REDIRECT_MESSAGE', true); } else { $msg=''; } vmJsApi::addJScript('vm.paymentFormAutoSubmit', ' jQuery(document).ready(function($){ jQuery("body").addClass("vmLoading"); var msg="'.$msg.'"; jQuery("body").append("<div class=\"vmLoadingDiv\"><div class=\"vmLoadingDivMsg\">"+msg+"</div></div>"); jQuery("#vmPaymentForm").submit(); }) '); $html .= '<form action="' . $jump_url . '" method="post" name="vm_realex_form" id="vmPaymentForm" accept-charset="UTF-8">'; } $html .= '<input type="hidden" name="charset" value="utf-8">'; foreach ($post_variables as $name => $value) { $html .= '<input type="hidden" name="' . $name . '" value="' . $value . '" />'; } if ($this->_method->debug) { $html .= '<div style="background-color:red;color:white;padding:10px;"> <input type="submit" value="The method is in debug mode. Click here to be redirected to Realex" /> </div>'; $this->debugLog($post_variables, 'sendPostRequest:', 'debug'); } $html .= '</form>'; return $html; } function getPostVariables () { $BT = $this->order['details']['BT']; $ST = ((isset($this->order['details']['ST'])) ? $this->order['details']['ST'] : $this->order['details']['BT']); // prepare postdata $post_variables = array(); $post_variables['MERCHANT_ID'] = $this->_method->merchant_id; $post_variables['ACCOUNT'] = $this->_method->subaccount; $post_variables['ORDER_ID'] = $BT->order_number; $post_variables['AMOUNT'] = $this->getTotalInPaymentCurrency(); $post_variables['CURRENCY'] = $this->getPaymentCurrency(); $post_variables['LANG'] = $this->getPaymentLang(); $post_variables['TIMESTAMP'] = $this->getTimestamp(); $post_variables['DCC_ENABLE'] = $this->_method->dcc; $post_variables['COMMENT1'] = $this->setComment1(); $post_variables['COMMENT2'] = 'virtuemart-rlx'; $post_variables['MERCHANT_RESPONSE_URL'] = JURI::root() . 'index.php?option=com_virtuemart&format=raw&view=pluginresponse&task=pluginnotification¬ificationTask=handleRedirect&tmpl=component'; $post_variables['AUTO_SETTLE_FLAG'] = $this->getSettlement(); if ($BT->virtuemart_user_id != 0) { //$post_variables['VAR_REF'] = $BT->order_number; $post_variables['CARD_STORAGE_ENABLE'] = $this->_method->realvault; if ($this->_method->realvault) { $payerRef = $this->getSavedPayerRef(); if (!$payerRef) { $post_variables['PAYER_EXIST'] = 0; $post_variables['PMT_REF'] = ''; $post_variables['PAYER_REF'] = $this->getNewPayerRef(); } else { $post_variables['PAYER_REF'] = $payerRef; $post_variables['PAYER_EXIST'] = 1; $saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); // -1: use another card, empty no CC are stored if ($saved_cc_selected == -1 or empty($saved_cc_selected)) { $post_variables['PMT_REF'] = ''; } else { $post_variables['PMT_REF'] = $this->getPmtRef(); } } $post_variables['OFFER_SAVE_CARD'] = $this->_method->offer_save_card; } else { $post_variables['OFFER_SAVE_CARD'] = 0; } } else { $post_variables['OFFER_SAVE_CARD'] = 0; $post_variables['CARD_STORAGE_ENABLE'] = 0; } if ($this->_method->card_payment_button) { $post_variables['CARD_PAYMENT_BUTTON'] = $this->getCardPaymentButton($this->_method->card_payment_button); } if ($this->_method->realvault and $BT->virtuemart_user_id != 0) { $post_variables['SHA1HASH'] = $this->getSha1Hash($this->_method->shared_secret, $post_variables['TIMESTAMP'], $post_variables['MERCHANT_ID'], $post_variables['ORDER_ID'], $post_variables['AMOUNT'], $post_variables['CURRENCY'], $post_variables['PAYER_REF'], $post_variables['PMT_REF']); } else { $post_variables['SHA1HASH'] = $this->getSha1Hash($this->_method->shared_secret, $post_variables['TIMESTAMP'], $post_variables['MERCHANT_ID'], $post_variables['ORDER_ID'], $post_variables['AMOUNT'], $post_variables['CURRENCY']); } // use_tss? if uk if ($this->_method->tss) { $post_variables['RETURN_TSS'] = 1; // Transaction Suitability Score // <digits from postcode>|<digits from address> $post_variables['BILLING_CODE'] = $this->getCode($BT); $post_variables['BILLING_CO'] = ShopFunctions::getCountryByID($BT->virtuemart_country_id, 'country_2_code'); $post_variables['SHIPPING_CODE'] = $this->getCode($ST); $post_variables['SHIPPING_CO'] = ShopFunctions::getCountryByID($ST->virtuemart_country_id, 'country_2_code'); } $post_variables['gateway_url'] = $this->_getRealexUrl(); return $post_variables; } /** * @param $realex_data * @return bool */ function cardStorageResponse ($realex_data) { $userfield=false; if (isset($realex_data['REALWALLET_CHOSEN']) and $realex_data['REALWALLET_CHOSEN'] == 0) { return false; } if (isset($realex_data['PAYER_SETUP']) and $realex_data['PAYER_SETUP'] != self::PAYER_SETUP_SUCCESS) { $this->debugLog('cardStorageResponse PAYER_SETUP not successfull:' . $realex_data['PAYER_SETUP'] . ' ' . $realex_data['PAYER_SETUP_MSG'], 'debug'); return false; } if ((isset($realex_data['PAYER_SETUP']) and $realex_data['PAYER_SETUP'] == self::PAYER_SETUP_SUCCESS)) { $this->saveNewPayerRef($realex_data['SAVED_PAYER_REF']); } if ((isset($realex_data['PMT_SETUP']) and $realex_data['PMT_SETUP'] != self::PMT_SETUP_SUCCESS)) { $this->debugLog('cardStorageResponse PMT_SETUP not successfull:' . $realex_data['PMT_SETUP'] . ' ' . $realex_data['PMT_SETUP_MSG'], 'debug'); return false; } if ((isset($realex_data['PMT_SETUP']) and $realex_data['PMT_SETUP'] == self::PMT_SETUP_SUCCESS)) { $userfield = $this->getPaymentRef($realex_data); //$this->storeNewPayment($userfield); } return $userfield; } /** * @param $realex_data * @return mixed */ function getPaymentRef ($realex_data) { $fields = array( 'SAVED_PMT_TYPE', 'SAVED_PMT_REF', 'SAVED_PMT_DIGITS', 'SAVED_PMT_EXPDATE', 'SAVED_PMT_NAME', ); $userfield['virtuemart_user_id'] = $this->order['details']['BT']->virtuemart_user_id; $userfield['merchant_id'] = $this->_method->merchant_id; foreach ($fields as $field) { if (isset($realex_data[$field])) { if ($field == 'SAVED_PMT_DIGITS') { $realex_data[$field] = shopFunctionsF::mask_string($realex_data[$field], '*'); } $userfield['realex_hpp_api_' . strtolower($field)] = $realex_data[$field]; } } return $userfield; } /** * @param bool $enqueueMessage * @return bool */ function validateConfirmedOrder ($enqueueMessage = true) { return $this->validate(); } /** * @param bool $enqueueMessage * @return bool */ public function validate ($enqueueMessage = true) { if (!JFactory::getUser()->guest AND $this->_method->realvault) { if ($storedCCs = $this->getStoredCCs(JFactory::getUser()->id)) { $saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); if ($this->customerData->getVar('selected_method') AND empty($saved_cc_selected)) { vmInfo('VMPAYMENT_REALEX_HPP_API_PLEASE_SELECT_OPTION'); return false; } } } return true; } /** * @param bool $enqueueMessage * @return bool */ public function validateSelectCheckPayment ($enqueueMessage = true) { return $this->validate(); } /** * @return bool */ function validateCheckoutCheckDataPayment () { return $this->validate(); } function getExtraPluginInfo () { $extraPluginInfo = array(); $saved_cc_selected = $this->customerData->getVar('saved_cc_selected'); if ($saved_cc_selected != -1) { $selected_cc = $this->getSelectedCCParams($saved_cc_selected); if (!empty($selected_cc)) { $extraPluginInfo['cc_type'] = $selected_cc->realex_hpp_api_saved_pmt_type; $extraPluginInfo['cc_number'] = $selected_cc->realex_hpp_api_saved_pmt_digits; $extraPluginInfo['cc_name'] = $selected_cc->realex_hpp_api_saved_pmt_name; $extraPluginInfo['cc_expire_month'] = ""; $extraPluginInfo['cc_expire_year'] = ""; } } else { $extraPluginInfo['cc_number'] = vmText::_('VMPAYMENT_REALEX_HPP_API_USE_ANOTHER_CC'); } return $extraPluginInfo; } /** * Validate the response hash from Realex. * timestamp.merchantid.orderid.amount.curr.payerref.pmtref */ function validateResponseHash ($post) { if (is_array($post)) { $message = stripslashes($post['MESSAGE']); $message = str_replace(''', "'", $message); $hash = $this->getSha1Hash($this->_method->shared_secret, $post['TIMESTAMP'], $post['MERCHANT_ID'], $post['ORDER_ID'], $post['RESULT'], $message, isset($post['PASREF']) ? $post['PASREF'] : "", isset($post['AUTHCODE']) ? $post['AUTHCODE'] : ""); if ($hash != $post['SHA1HASH']) { $this->debugLog('validateResponseHash :' . var_export($post, true), 'debug'); //$this->displayError(vmText::sprintf('VMPAYMENT_REALEX_HPP_API_ERROR_WRONG_HASH', $hash, print_r($post, true))); //echo vmText::sprintf('VMPAYMENT_REALEX_HPP_API_ERROR_WRONG_HASH', $hash, $post['SHA1HASH']); //print_r($_POST); return FALSE; } } else { return parent::validateResponseHash($post); } return true; } function setComment1 () { $amountValue = vmPSPlugin::getAmountInCurrency($this->order['details']['BT']->order_total, $this->order['details']['BT']->order_currency); $currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $shop_name = $this->getVendorInfo('vendor_store_name'); return vmText::sprintf('VMPAYMENT_REALEX_HPP_API_COMMENT1', $amountValue['display'], $this->order['details']['BT']->order_number, $shop_name); } /** * JumpUrl is a prefined URL that must be configurated in Realex * @return string */ function getJumpUrl () { return $this->_method->referring_url; } } realex_hpp_api/tmpl/response.php 0000604 00000003712 15075477240 0013061 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: response.php 8414 2014-10-12 20:30:38Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die(); vmJsApi::css( 'realex','plugins/vmpayment/realex_hpp_api/realex_hpp_api/assets/css/'); ?> <div class="realex response"> <?php if ($viewData['success']) { ?> <div class="realex_auth_info"> <span class="realex_auth_value"><?php echo $viewData['auth_info']; ?></span> </div> <div class="realex_dcc_info"> <span class="realex_dcc_value"><?php echo $viewData['dcc_info']; ?></span> </div> <div class="realex_payer_info"> <span class="realex_payer_value"><?php echo $viewData['payer_info']; ?></span> </div> <div class="realex_pasref"> <span class="realex_pasref_label"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_RESPONSE_PASREF'); ?></span> <span class="realex_pasref_value"><?php echo $viewData['pasref']; ?></span> </div> <div class="realex_vieworder"> <a class="vm-button-correct" href="<?php echo JRoute::_('index.php?option=com_virtuemart&view=orders&layout=details&order_number=' . $viewData["order_number"] . '&order_pass=' . $viewData["order_pass"], false) ?>"><?php echo vmText::_('COM_VIRTUEMART_ORDER_VIEW_ORDER'); ?></a> </div> <?php } else { ?> <div class="realex_auth_info"> <span class="realex_auth_value"><?php echo $viewData['auth_info']; ?></span> </div> <?php } ?> </div> realex_hpp_api/tmpl/redirect_form.php 0000604 00000003613 15075477240 0014047 0 ustar 00 <?php defined('_JEXEC') or die(); /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: redirect_form.php 8200 2014-08-14 11:09:44Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ ?> <input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_<?php echo $viewData['virtuemart_paymentmethod_id']; ?>" value="<?php echo $viewData['virtuemart_paymentmethod_id']; ?>" <?php echo $viewData ['checked']; ?>> <label for="payment_id_<?php echo $viewData['virtuemart_paymentmethod_id']; ?>"> <span class="vmpayment"> <?php if (!empty($viewData['payment_logo'])) { ?> <span class="vmpayment_logo"><?php echo $viewData ['payment_logo']; ?> </span> <?php } ?> <span class="vmpayment_name"><?php echo $viewData['payment_name']; ?></span> <?php if (!empty($viewData['payment_cost'])) { ?> <span class="vmpayment_cost"><?php echo vmText::_('COM_VIRTUEMART_PLUGIN_COST_DISPLAY') . $viewData['payment_cost'] ?></span> <?php } ?> </span> <?php /* if (!empty($viewData['creditcardsDropDown'])) { ?> <div class="creditcardsDropDown"> <?php echo $viewData['creditcardsDropDown']; ?> </div> <?php } */ if (!empty($viewData['offerSaveCard'])) { ?> <div class="realex_offerSaveCard"> <?php echo $viewData['offerSaveCard']; ?> </div> <?php } ?> </label> realex_hpp_api/tmpl/render_pluginname.php 0000604 00000004747 15075477240 0014732 0 ustar 00 <?php defined('_JEXEC') or die(); /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: render_pluginname.php 8200 2014-08-14 11:09:44Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ vmJsApi::jQuery(); vmJsApi::chosenDropDowns(); ?> <span class="vmpayment"> <?php if (!empty($viewData['logo'])) { ?> <span class="vmCartPaymentLogo"> <?php echo $viewData['logo'] ?> </span> <?php } ?> <span class="vmpayment_name"><?php echo $viewData['payment_name'] ?> </span> <?php if ($viewData['shop_mode'] == 'sandbox') { ?> <span style="color:red;font-weight:bold">Sandbox (<?php echo $viewData['virtuemart_paymentmethod_id'] ?>)</span> <?php } ?> <?php if (!empty($viewData['payment_description'])) { ?> <span class="vmpayment_description"><?php echo $viewData['payment_description'] ?> </span> <?php } ?> <?php if (isset($viewData['extraInfo']) AND isset($viewData['extraInfo']['cc_number']) AND $viewData['extraInfo']['cc_number']) { ?> <div class="vmpayment_selected_cc"> <?php if ($viewData['extraInfo']['cc_type']) { echo "(" . vmText::_('VMPAYMENT_REALEX_HPP_API_CC_' . $viewData['extraInfo']['cc_type']) . ' '; if ($viewData['where'] != 'order') { echo $viewData['extraInfo']['cc_number']; } else { echo $viewData['extraInfo']['cc_number']; } if ($viewData['extraInfo']['cc_expire_month']) { echo " " . $viewData['extraInfo']['cc_expire_month'] . '/' . $viewData['extraInfo']['cc_expire_year']; } if ($viewData['extraInfo']['cc_name']) { echo ' (' . $viewData['extraInfo']['cc_name'] . ')'; } ?> ) <?php } ?> </div> <?php } ?> <?php if (isset($viewData['remote_save_card']) AND isset($viewData['extraInfo']['remote_save_card']) AND $viewData['extraInfo']['remote_save_card']) { ?> <div class="vmpayment_description"> <?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_SAVE_CARD_DETAILS_YES'); ?> </div> <?php } ?> </span> realex_hpp_api/tmpl/remote_cc_form.php 0000604 00000032403 15075477240 0014205 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: remote_cc_form.php 8479 2014-10-17 11:53:25Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die(); $ccData = $viewData['ccData']; JHTML::_('behavior.tooltip'); JHTML::script('vmcreditcard.js', 'components/com_virtuemart/assets/js/', false); VmConfig::loadJLang('com_virtuemart', true); vmJsApi::jCreditCard(); vmJsApi::jQuery(); vmJsApi::chosenDropDowns(); vmJsApi::addJScript( '/plugins/vmpayment/realex_hpp_api/realex_hpp_api/assets/js/site.js'); vmJsApi::css( 'realex','plugins/vmpayment/realex_hpp_api/realex_hpp_api/assets/css/'); vmJsApi::addJScript ('vmRealexSumit'," jQuery(document).ready(function($) { jQuery(this).vm2front('stopVmLoading'); jQuery('#checkoutRealexFormSubmitButton').bind('click dblclick', function(e){ jQuery(this).vm2front('startVmLoading'); e.preventDefault(); jQuery(this).attr('disabled', 'true'); jQuery(this).removeClass( 'vm-button-correct' ); jQuery(this).addClass( 'vm-button' ); jQuery('#checkoutRealexFormSubmit').submit(); }); }); "); $attribute = ''; if ($viewData['dccinfo']) { $attribute = ' readonly '; } ?> <div class="realex remote_cc_form" id="remote_cc_form"> <h3 class="order_amount"><?php echo $viewData['order_amount']; ?></h3> <div class="cc_form_payment_name"> <?php echo $viewData['payment_name']; ?> </div> <form method="post" action="<?php echo $viewData['submit_url'] ?>" id="checkoutRealexFormSubmit"> <?php if (!$viewData['dccinfo']) { ?> <?php if (!empty($viewData['creditcardsDropDown'])) { ?> <div class="vmpayment_cardinfo" id="vmpayment_cardinfo"> <div class="vmpayment_cardinfo_text"> <?php if (!$viewData['dccinfo']) { echo vmText::_('VMPAYMENT_REALEX_HPP_API_PLEASE_SELECT'); } else { echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_YOUR_CC'); } ?> </div> <div class="creditcardsDropDown"> <?php echo $viewData['creditcardsDropDown']; ?> </div> </div> <?php if ($viewData['cvn_checking']) { ?> <div class="vmpayment_cc_info vmpayment_cc_cvv_realvault"> <span class="vmpayment_label"><label for="cc_cvv_realvault"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_CVV2') ?></label></span> <input type="text" class="inputbox cc_cvv" id="cc_cvv" name="cc_cvv_realvault" maxlength="4" size="5" value="<?php echo $ccData['cc_cvv_realvault']; ?>" autocomplete="off"/> <span class="hasTip" title="<?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV') ?>::<?php echo vmText::sprintf("VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV_TOOLTIP", $this->_getCVVImages($viewData['cvv_images'])) ?> "> <?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV'); ?> </span> </div> <?php } } else { ?> <input type="hidden" name="saved_cc_selected" value="-1"/> <?php } } ?> <div class="vmpayment_cardinfo realexRemoteCCForm"> <?php if ($viewData['integration'] == 'remote') { ?> <div class="vmpayment_cardinfo_text"> <?php if (!$viewData['dccinfo']) { if (empty($viewData['creditcardsDropDown'])) { echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_COMPLETE_FORM'); } else { echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_ADD_NEW'); } } else { echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_YOUR_CC'); } ?> </div> <div class="vmpayment_cc_info vmpayment_creditcardtype"> <span class="vmpayment_label"><label for="creditcardtype"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_CCTYPE'); ?></label></span> <?php if (!$viewData['dccinfo']) { foreach ($viewData['creditcards'] as $creditCard) { $options[] = JHTML::_('select.option', $creditCard, vmText::_('VMPAYMENT_REALEX_HPP_API_CC_' . strtoupper($creditCard))); } $attribs = 'class="inputbox vm-chzn-select" style= "width: 250px;" rel="' . $viewData['virtuemart_paymentmethod_id'] . '"'; echo JHTML::_('select.genericlist', $options, 'cc_type', $attribs, 'value', 'text', $ccData['cc_type']); } else { ?> <span class="vmpayment_creditcardtype_<?php echo $ccData['cc_type'] ?>"> <?php echo $ccData['cc_type']; ?> </span> <input type="hidden" name="cc_type" value="<?php echo $ccData['cc_type'] ?>"/> <input type="hidden" name="saved_cc_selected" value="<?php echo $ccData['saved_cc_selected'] ?>"/> <?php }?> </div> <div class="vmpayment_cc_info vmpayment_cc_type"> <span class="vmpayment_label"><label for="cc_type"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_CCNUM'); ?></label></span> <?php if (!$viewData['dccinfo']) { ?> <input type="text" size="30" class="inputbox" id="cc_number" name="cc_number" value="<?php echo wordwrap($ccData['cc_number'], 4, " "); ?>" autocomplete="off" onchange="ccError=razCCerror(<?php echo $viewData['virtuemart_paymentmethod_id']; ?>); CheckCreditCardNumber(this . value, <?php echo $viewData['virtuemart_paymentmethod_id']; ?>); if (!ccError) { this.value='';}"/> <div id="cc_cardnumber_errormsg"></div> <?php } else { echo wordwrap($ccData['cc_number_masked'], 4, " "); ?> <input type="hidden" name="cc_number" value="<?php echo $ccData['cc_number'] ?>"/> <?php }?> </div> <?php //if ( ($viewData['cvn_checking']) and isset($ccData['cc_cvv'])) { ?> <?php if ( isset($ccData['cc_cvv'])) { ?> <div class="vmpayment_cc_info vmpayment_cc_cvv"> <span class="vmpayment_label"><label for="cc_cvv"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_CVV2') ?></label></span> <?php if (!$viewData['dccinfo']) { ?> <input type="text" class="inputbox cc_cvv" id="cc_cvv" name="cc_cvv" maxlength="4" size="5" value="<?php echo $ccData['cc_cvv']; ?>" autocomplete="off"/> <span class="hasTip" title="<?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV') ?>::<?php echo vmText::sprintf("VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV_TOOLTIP", $this->_getCVVImages($viewData['cvv_images'])) ?> "> <?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV'); ?> </span> <?php } else { echo $ccData['cc_cvv_masked']; ?> <input type="hidden" name="cc_cvv" value="<?php echo $ccData['cc_cvv'] ?>"/> <?php }?> </div> <?php } ?> <?php if (isset($ccData['cc_expire_month']) OR isset($ccData['cc_expire_year'])) { ?> <div class="vmpayment_cc_info vmpayment_cc_date"> <span class="vmpayment_label"><label for="creditcardtype"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_EXPDATE'); ?></label></span> <?php if (!$viewData['dccinfo']) { ?> <?php echo shopfunctions::listMonths('cc_expire_month', $ccData['cc_expire_month'], "class=\"inputbox vm-chzn-select\" style=\"width: 100px;\"", 'm'); echo shopfunctions::listYears('cc_expire_year', $ccData['cc_expire_year'], null, null, "class=\"inputbox vm-chzn-select\" style=\"width: 100px;\" onchange=\"var month = document.getElementById('cc_expire_month_'" . $viewData['virtuemart_paymentmethod_id'] . "); if(!CreditCardisExpiryDate(month.value,this.value, '" . $viewData['virtuemart_paymentmethod_id'] . "')){this.value='';month.value='';}\" ", "Y"); ?> <div id="cc_expiredate_errormsg"></div> <?php } else { echo $ccData['cc_expire_month'] . '/' . $ccData['cc_expire_year']; ?> <input type="hidden" name="cc_expire_month" value="<?php echo $ccData['cc_expire_month'] ?>"/> <input type="hidden" name="cc_expire_year" value="<?php echo $ccData['cc_expire_year'] ?>"/> <?php }?> </div> <?php } ?> <div class="vmpayment_cc_info vmpayment_cc_name"> <span class="vmpayment_label"><label for="cc_name"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_CCNAME'); ?></label></span> <?php if (!$viewData['dccinfo']) { ?> <input type="text" size="30" class="inputbox" id="cc_name" name="cc_name" value="<?php echo $ccData['cc_name']; ?>" autocomplete="off" onchange="ccError=razCCerror(<?php echo $viewData['virtuemart_paymentmethod_id']; ?>); CheckCreditCardNumber(this . value, <?php echo $viewData['virtuemart_paymentmethod_id']; ?>); if (!ccError) { this.value='';}"/> <div id="cc_cardname_errormsg"></div> <?php } else { echo $ccData['cc_name']; ?> <input type="hidden" name="cc_name" value="<?php echo $ccData['cc_name'] ?>"/> <?php }?> </div> <?php } ?> <?php if (isset($ccData['cc_cvv_realvault'])) { ?> <div class="vmpayment_cc_info vmpayment_cc_cvv"> <span class="vmpayment_label"><label for="cc_cvv"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_CVV2') ?></label></span> <?php if (!$viewData['dccinfo']) { ?> <input type="text" class="inputbox cc_cvv" id="cc_cvv" name="cc_cvv" maxlength="4" size="5" value="<?php echo $ccData['cc_cvv']; ?>" autocomplete="off"/> <span class="hasTip" title="<?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV') ?>::<?php echo vmText::sprintf("VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV_TOOLTIP", $this->_getCVVImages($viewData['cvv_images'])) ?> "> <?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_CC_WHATISCVV'); ?> </span> <?php } else { echo $ccData['cc_cvv_masked']; ?> <input type="hidden" name="cc_cvv_realvault" value="<?php echo $ccData['cc_cvv_realvault'] ?>"/> <?php }?> </div> <input type="hidden" name="cc_type" value="<?php echo $ccData['cc_type'] ?>"/> <?php } ?> <?php if ($viewData['dccinfo']) { ?> <div class="dccinfo"> <div class="dcc_offer_title"> <?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY'); ?> </div> <div class="dcc_offer" id="dcc_offer_section"> <div id="dcc_offer_text"> <?php echo vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_TIP', $this->getCardHolderAmount($viewData['dccinfo']->merchantamount), $viewData['dccinfo']->merchantcurrency, $this->getCardHolderAmount($viewData['dccinfo']->cardholderamount), $viewData['dccinfo']->cardholdercurrency); ?> </div> <div class="dcc_offer_exchange_rate"> <?php echo vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_EXCHANGE_RATE', 1, $viewData['dccinfo']->merchantcurrency, $viewData['dccinfo']->cardholderrate, $viewData['dccinfo']->cardholdercurrency); ?> </div> </div> <div class="dcc_choices"> <div class="dcc_choice"> <input class="dcc_offer_btn vm-button" name="dcc_choice" id="dcc_choice_1" type="radio" value="1"> <label for="dcc_choice_1"> <?php echo vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_YES', $this->getCardHolderAmount($viewData['dccinfo']->cardholderamount), $viewData['dccinfo']->cardholdercurrency); ?> </label> </div> <div class="dcc_choice"> <input class="dcc_offer_btn vm-button" name="dcc_choice" id="dcc_choice_0" type="radio" value="0" checked="checked"> <label for="dcc_choice_0"> <?php echo vmText::sprintf('VMPAYMENT_REALEX_HPP_API_DCC_PAY_OWN_CURRENCY_NO', $this->getCardHolderAmount($viewData['dccinfo']->merchantamount), $viewData['dccinfo']->merchantcurrency); ?> </label> </div> </div> </div> <?php } ?> <?php if ($viewData['integration'] == 'remote') { ?> <?php if (!$viewData['dccinfo']) { ?> <?php if ($viewData['offer_save_card']) { if ($ccData['save_card']) { $checked = 'checked="checked"'; } else { $checked = ''; } ?> <div class="offer_save_card"> <div id="save_card_tip"><?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_SAVE_CARD_DETAILS_TIP') ?></div> <label for="save_card"> <input id="save_card" name="save_card" type="checkbox" value="1" <?php echo $checked ?>><span class="save_card"> <?php echo vmText::_('VMPAYMENT_REALEX_HPP_API_SAVE_CARD_DETAILS') ?></span> </label> </div> <?php } } else { ?> <input type="hidden" name="save_card" value="<?php echo $ccData['save_card'] ?>"/> <?php } } ?> </div> <div class="dcc_card_payment_button details-button"> <span class="addtocart-button"> <input type="submit" class="dcc_offer_btn addtocart-button" value="<?php echo $viewData['card_payment_button'] ?>" id="checkoutRealexFormSubmitButton"/> <input type="hidden" name="option" value="com_virtuemart"/> <input type="hidden" name="view" value="pluginresponse"/> <input type="hidden" name="task" value="pluginnotification"/> <input type="hidden" name="token" value="<?php echo $viewData['token'] ?>"/> <input type="hidden" name="notificationTask" value="<?php echo $viewData['notificationTask']; ?>"/> <input type="hidden" name="order_number" value="<?php echo $viewData['order_number']; ?>"/> <input type="hidden" name="pm" value="<?php echo $viewData['virtuemart_paymentmethod_id']; ?>"/> <input type="hidden" name="virtuemart_paymentmethod_id" value="<?php echo $viewData['virtuemart_paymentmethod_id']; ?>"/> </span> </div> </form> </div> realex_hpp_api/fields/referringurl.php 0000604 00000002670 15075477240 0014225 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: referringurl.php 8414 2014-10-12 20:30:38Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ // Check to ensure this file is within the rest of the framework defined('JPATH_BASE') or die(); /** * Renders a label element */ jimport('joomla.form.formfield'); class JFormFieldReferringurl extends JFormField { /** * Element name * * @access protected * @var string */ public $type = 'referringurl'; protected function getInput() { $this->value = JURI::root() . 'plugins/vmpayment/realex_hpp_api/jump.php'; $class = !empty($this->class) ? 'class="' . $this->class . '"' : 'class="text_area"'; $size = ($this->size) ? 'size="' . $this->size . '"' : ''; return '<input type="text" name="' . $this->name . '" id="' . $this->name . '" value="' . $this->value . '" ' . $class . ' ' . $size . ' />'; } } realex_hpp_api/fields/creditcards.php 0000604 00000004063 15075477240 0014004 0 ustar 00 <?php defined('_JEXEC') or die('Restricted access'); /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: creditcards.php 8464 2014-10-16 13:05:55Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php'); if (!class_exists('ShopFunctions')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'shopfunctions.php'); } if (!class_exists('vmPSPlugin')) { require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'); } if (!class_exists('RealexHelperRealex')) { require(VMPATH_ROOT . DS.'plugins'. DS .'vmpayment'. DS .'realex_hpp_api'. DS .'realex_hpp_api'. DS .'helpers'. DS .'helper.php'); } /** * @copyright Copyright (C) 2009 Open Source Matters. All rights reserved. * @license GNU/GPL */ // Check to ensure this file is within the rest of the framework defined('JPATH_BASE') or die(); /** * Renders a multiple item select element * */ JFormHelper::loadFieldClass('list'); jimport('joomla.form.formfield'); class JFormFieldCreditCards extends JFormFieldList { /** * Element name * * @access protected * @var string */ public $type = 'creditcards'; protected function getOptions() { $creditcards = RealexHelperRealex::getRealexCreditCards(); $prefix = 'VMPAYMENT_REALEX_HPP_API_CC_'; foreach ($creditcards as $creditcard) { $options[] = JHtml::_('select.option', $creditcard, vmText::_($prefix . strtoupper($creditcard))); } return $options; } } realex_hpp_api/fields/getrealex.php 0000604 00000003402 15075477240 0013471 0 ustar 00 <?php /** * * Realex payment plugin * * @author Valerie Isaksen * @version $Id: getrealex.php 8414 2014-10-12 20:30:38Z alatak $ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2016 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('JPATH_BASE') or die(); jimport('joomla.form.formfield'); class JFormFieldGetRealex extends JFormField { /** * Element name * * @access protected * @var string */ public $type = 'getrealex'; protected function getInput() { vmJsApi::addJScript( '/plugins/vmpayment/realex_hpp_api/realex_hpp_api/assets/js/admin.js'); vmJsApi::css( 'admin','plugins/vmpayment/realex_hpp_api/realex_hpp_api/assets/css/'); $url = "http://www.realexpayments.com/partner-referral?id=virtuemart"; $logo = '<img src="http://www.realexpayments.com/images/logo_realex_large.png" width="150"/>'; $html = '<p><a target="_blank" href="' . $url . '" >' . $logo . '</a></p>'; $html .= '<p><a target="_blank" href="' . $url . '" class="signin-button-link">' . vmText::_('VMPAYMENT_REALEX_HPP_API_REGISTER') . '</a>'; $html .= ' <a target="_blank" href="http://docs.virtuemart.net/manual/shop-menu/payment-methods/realex-hpp-and-api.html" class="signin-button-link">' . vmText::_('VMPAYMENT_REALEX_HPP_API_DOCUMENTATION') . '</a></p>'; return $html; } }
Close