-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathreadme_paypalr.html
More file actions
412 lines (408 loc) · 30 KB
/
readme_paypalr.html
File metadata and controls
412 lines (408 loc) · 30 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PayPal Restful Payment Module for Zen Cart 1.5.8a through 2.1.0</title>
<style>
a, a:active,
a:visited {
color: #006666;
}
a:hover {
color:#00CC99;
}
body,
p,
h1,
h2,
h3,
h4,
li,
td {
font-family: Verdana, AvantGarde, Tahoma, Arial, sans-serif;
font-size: 10pt;
color: black;
padding: 0px;
margin: 20px;
}
pre {
margin: 20px;
}
h1,
h2,
h3,
h4 {
font-weight: bold
}
h1 {
font-size: 20px;
}
h2 {
font-size: 16px;
border-top: 1px solid black;
padding-top: 5px;
}
ol li,
ul li {
margin: 5px 0;
}
.corefile,
.impt {
color: red;
}
.added {
color: blue;
}
img {
margin-left: 20px;
max-width: 95%;
}
.removed {
text-decoration: line-through;
}
.smaller {
font-size: smaller;
}
table {
margin-left: 20px;
}
table, table th, table td {
padding: 0.5rem;
border-collapse: collapse;
border: 1px solid black;
}
th, td {
text-align: left;
}
table table {
margin-top: 0.5rem;
}
.event-group {
text-transform: uppercase;
border-top: 1px solid black;
padding-top: 0.5rem;
}
.text-center {
text-align: center;
}
</style>
</head>
<body>
<h1>PayPal RESTful Payment Module (<var>paypalr</var>) for Zen Cart 1.5.8a through 2.1.0</h1>
<h3>Version 1.3.2</h3>
<p>Current Support Thread at Zen Cart Forums: <a href="https://www.zen-cart.com/showthread.php/229886-PayPal-RESTful-API-Payment-Module" target="_blank">https://www.zen-cart.com/showthread.php/229886-PayPal-RESTful-API-Payment-Module</a></p>
<p>Zen Cart Download Link: <a href="https://www.zen-cart.com/downloads.php?do=file&id=2382" target="_blank">https://www.zen-cart.com/downloads.php?do=file&id=2382</a></p>
<p>GitHub repository: <a href="https://github.com/lat9/paypalr" target="_blank">https://github.com/lat9/paypalr</a></p>
<h2>Purpose</h2>
<p>This Zen Cart payment module combines the processing for the <b>PayPal Payments Pro</b> (<var>paypaldp</var>) and <b>PayPal Express Checkout</b> (<var>paypalwpp</var>) payment modules that are currently built into the Zen Cart distribution. Instead of using the older NVP (<b>N</b>ame <b>V</b>alue <b>P</b>air) methods to communicate with PayPal, this payment module uses PayPal's now-current <a href="https://developer.paypal.com/api/rest/" target="_blank">REST APIs</a> and combines the two legacy methods into one.</p>
<p class="impt"><b>Note:</b> This payment module supports Zen Cart versions 1.5.8a through 2.1.0 <b>only</b>! If your site uses Zen Cart 2.2.0 or later, the payment module is provided as an encapsulated plugin as part of the Zen Cart distribution.</p>
<p>The module's operation has been validated …</p>
<ol>
<li>With PHP versions 7.0 through 8.5; <b>PHP versions less than 7.0 will result in fatal PHP errors!</b></li>
<li>In Zen Cart's 3-page checkout environment (v1.5.8a, v2.0.x and v2.1.0)</li>
<li>With <a href="https://www.zen-cart.com/downloads.php?do=file&id=2095" target="_blank">One-Page Checkout</a> (OPC), v2.4.6-2.5.5<ol type="a">
<li>Using <em>OPC</em>'s guest-checkout feature.</li>
<li>Both requiring confirmation and not!</li>
</ol></li>
<li>With both the built-in <var>responsive_classic</var> and <a href="https://www.zen-cart.com/downloads.php?do=file&id=2191" target="_blank"><var>ZCA Bootstrap</var></a> (v3.6.2-v3.7.8) templates.</li>
</ol>
<p>For additional information, refer to the payment-module's <a href="https://github.com/lat9/paypalr/wiki" target="_blank">wiki articles</a>.</p>
<p><b>Credits:</b> CSS-based spinner compliments of <a href="https://loading.io/css/" target="_blank">loading.io css spinner</a>.</p>
<h2>Installation and Upgrade</h2>
<h3 class="impt">Before you start …</h3>
<ol>
<li>Follow the instructions in the payment module's Wiki to <a href="https://github.com/lat9/paypalr/wiki/Creating-PayPal-Credentials" target="_blank">create the PayPal credentials</a> required to communicate with PayPal.</li>
<li><b>If your site is using a Zen Cart version <em>prior to</em> 2.0.0</b>, add the payment module's <b>required</b> notifications to the <var>order_total</var> class, as described in <a href="https://github.com/lat9/paypalr/wiki/Required-changes-to-%60-includes-classes-order_total.php%60" target="_blank">this</a> Wiki article. Without this update, the payment module will <a href="https://github.com/lat9/paypalr/wiki/Configuring-the-Payment-Module#missing-required-notifications" target="_blank">automatically disable</a> itself.</li>
<li>If you want to make use of the "PayPal PayLater" messaging feature introduced in v1.3.0 of this payment module, you need to verify that your site's active template includes a couple of notifications that enable this feature to operate. See <a href="https://github.com/lat9/paypalr/wiki/Using-PayPal-PayLater" target="_blank">this</a> Wiki article for details.</li>
<li>If your Zen Cart installation runs on the NGINX operating system, you might need to modify the <code>server</code> section of the site's nginx conf file to allow the payment module to copy its <b class="impt">required</b> root-directory files (<code>ppr_listener.php</code> and <code>ppr_webhook.php</code>). Without these updated privileges, the payment module will be inoperable and will auto-disable itself for v1.3.1 and later of the payment module.
<pre>
#############################################################################################
# Zen Cart Root Folder
#############################################################################################
## Allow all requests to specific PHP files directly under the Zen Cart ROOT folder
location ~ %%store_folder%%/(ajax|index|page_not_found|ipn_main_handler|ppr_listener|ppr_webhook)\.php$ {
error_page 418 = @zencart_php_handler;
return 418;
}
</pre>
</li>
</ol>
<h3>Initial Installation</h3>
<h4>Once you've completed those start-up steps …</h4>
<ol>
<li>Unzip this distribution's zip-file; you'll see the following files and directories:<ol>
<li>/admin/includes/classes/observers/auto.PayPalRestAdmin.php <span class="smaller">(Added in v1.2.0)</span></li>
<li><span class="removed">/ppr_webhook_main.php</span> <span class="smaller">(Removed in v1.2.0)</span></li>
<li>/includes/auto_loaders/webhook.core.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/classes/observers/auto.paypalrestful.php</li>
<li><span class="removed">/includes/languages/english/extra_definitions/lang.paypalr_webhook_definitions.php</span> <span class="smaller">(Renamed in v1.2.0)</span></li>
<li>/includes/languages/english/extra_definitions/lang.paypalr_redirect_listener_definitions.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/languages/english/modules/payment/lang.paypalr.php</li>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/pprAutoload.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/jquery.paypalr.checkout.js</li>
<li>/includes/modules/payment/paypal/PayPalRestful/jquery.paypalr.disable.js</li>
<li>/includes/modules/payment/paypal/PayPalRestful/jquery.paypalr.jssdk_messages.js <span class="smaller">(Added in v1.3.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/paypalr.admin.css</li>
<li>/includes/modules/payment/paypal/PayPalRestful/paypalr_bootstrap.css</li>
<li>/includes/modules/payment/paypal/PayPalRestful/paypalr.css</li>
<li>/includes/modules/payment/paypal/PayPalRestful/ppr_listener.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/ppr_webhook.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/AdminMain.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/DoAuthorization.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/DoCapture.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/DoRefund.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/DoVoid.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/GetPayPalOrderTransactions.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/MainDisplay.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/Messages.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/PayPalRestfulApi.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/Data/CountryCodes.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/ErrorInfo.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/Helpers.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/Logger.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/PayPalShippingContainers.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/images/american_express.png</li>
<li>/includes/modules/payment/paypal/PayPalRestful/images/discover.png</li>
<li>/includes/modules/payment/paypal/PayPalRestful/images/jcb.png</li>
<li>/includes/modules/payment/paypal/PayPalRestful/images/maestro.png</li>
<li>/includes/modules/payment/paypal/PayPalRestful/images/mastercard.png</li>
<li>/includes/modules/payment/paypal/PayPalRestful/images/solo.png</li>
<li>/includes/modules/payment/paypal/PayPalRestful/images/visa.png</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Token/TokenCache.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/CheckoutPaymentApprovalReversed.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentAuthorizationVoided.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureCompleted.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureDeclined.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCapturePending.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureRefunded.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureReversed.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookController.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookHandlerContract.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookObject.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookResponder.php <span class="smaller">(Added in v1.2.0)</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/Address.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/Amount.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/ConfirmPayPalPaymentChoiceRequest.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/Name.php</li>
</ol></li>
<li>Copy the plugin's files to your site's file-system.</li>
<li>Log into your Zen Cart admin and navigate to <b><i>Modules :: Payment</i></b>.</li>
<li>You'll see a <em>PayPal Checkout (RESTful)</em> entry in the list of available payment modules. Select that module, install it and follow the <a href="https://github.com/lat9/paypalr/wiki/Configuring-the-Payment-Module" target="_blank">configuration instructions</a> in the payment module's Wiki.</li>
</ol>
<h3>Upgrading</h3>
<p>Simply copy the updated files to your site's file-system and navigate to your admin's <b><i>Modules :: Payment</i></b>. The payment-module will automatically update.</p>
<h2>Version History</h2>
<p>This section identifies version-specific changes to the payment module.</p>
<ul>
<li>v1.3.2-beta1, 2026-03-20 (lat9,)<ul>
<li>BUGFIX: Restore zcDate instantiation during webhook processing to correct fatal PHP errors.</li>
<li>INTROP: Align with updates from the encapsulated version included in Zen Cart 2.2.0 and later.</li>
<li>The following files were changed:<ol>
<li>/includes/auto_loaders/webhook.core.php</li>
<li>/includes/classes/observers/auto.paypalrestful.php</li>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/pprAutoload.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/ppr_listener.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/ppr_webhook.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookResponder.php</li>
<li>/YOUR_ADMIN/includes/classes/observers/auto.PaypalRestAdmin.php</li>
</ol></li>
</ul></li>
<li>v1.3.1, 2026-03-11 (lat9, brittainmark, andy-1977)<ul>
<li>BUGFIX: Auto-disable if root-directory files aren't copied; implies a root-directory file-system permissions issue.</li>
<li>BUGFIX: Correct <em>Pay Later</em> amounts and messaging.</li>
<li>INTROP: Adding the <code>locale=</code> parameter to the JS-SDK load, in an attempt to get PayPal language translations.</li>
<li>BUGFIX: Pay Later messaging not included for older templates (missing <code>NOTIFY_HTML_HEAD_JS_BEGIN</code> notification).</li>
<li>BUGFIX: Add notification, enabling PayLater message location overrides.</li>
<li>BUGFIX: Correct missing PayPal fields when the order's paid via credit- or debit-card.</li>
<li>The following files were changed:<ol>
<li>/includes/classes/observers/auto.paypalrestful.php</li>
<li>/includes/languages/english/modules/payment/lang.paypalr.php</li>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/jquery.paypalr.jssdk_messages.js</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
</ol></li>
</ul></li>
<li>v1.3.0, 2025-10-15 (lat9, drbyte)<ul>
<li>CHANGE: Integrate PayPal's PayLater Messaging via PayPal JS SDK.</li>
<li>BUGFIX: Correct webhook auto-loader for Zen Cart versions prior to 2.1.0.</li>
<li>BUGFIX: Correct webhook accesses <em>always</em> log.</li>
<li>CHANGE: Various updates and additions to enable support for older Zen Cart (and PHP) versions.</li>
<li>INTROP: Conditionally use <code>curl_close</code>; its deprecated for PHP 8.5.</li>
<li>BUGFIX: Correct PHP warnings caused by conflict with messageStack during webhook processing.</li>
<li>BUGFIX: Account for sites where <code>allow_url_fopen</code> is set to false.</li>
<li>The following files were changed or <span class="added">added</span>:<ol>
<li>/admin/includes/classes/observers/auto.PayPalRestAdmin.php</li>
<li>/includes/auto_loaders/webhook.core.php</li>
<li>/includes/classes/observers/auto.paypalrestful.php</li>
<li><span class="added">/includes/extra_configures/php_polyfills.php</span></li>
<li><span class="added">/includes/languages/english/modules/payment/paypalr.php</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/AdminMain.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/MainDisplay.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/Messages.php</li>
<li><span class="added">/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/NullMessages.php</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/GetPayPalOrderTransactions.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/Data/CountryCodes.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/PayPalRestfulApi.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/ErrorInfo.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/Logger.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/PayPalShippingCarriers.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Token/TokenCache.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/CheckoutPaymentApprovalReversed.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentAuthorizationVoided.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureCompleted.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureDeclined.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCapturePending.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureRefunded.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/Events/PaymentCaptureReversed.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookController.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookHandlerContract.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookObject.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Webhooks/WebhookResponder.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/Amount.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/ConfirmPayPalPaymentChoiceRequest.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
<li><span class="added">/includes/modules/payment/paypal/PayPalRestful/jquery.paypalr.jssdk_messages.js</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/ppr_listener.php</li>
<li>/includes/modules/payment/paypal/pprAutoload.php</li>
<li>/includes/modules/payment/paypalr.php</li>
</ol></li>
</ul></li>
<li>v1.2.1, 2025-09-05 (lat9, drbyte)<ul>
<li>BUGFIX: Can't remove module if it's disabled or credentials aren't set.</li>
<li>BUGFIX: Root-directory files not copied on an upgrade from a previous version.</li>
<li>The following files were changed:<ol>
<li>/includes/modules/payment/paypalr.php</li>
</ol></li>
</ul></li>
<li>v1.2.0, 2025-09-04 (lat9, drbyte) <b class="impt">Do not use, use v1.2.1 instead.</b><ul>
<li>BUGFIX: Correct date-dependent displayed name of months with fewer than 31 days.</li>
<li>BUGFIX: Remove duplicated constant (<var>MODULE_PAYMENT_PAYPALR_PAYER_EMAIL</var>) from the language file.</li>
<li>CHANGE: Maintain <code>/ppr_webhook_main.php</code> based on plugin install.</li>
<li>BUGFIX: Configuration settings changed or added for v1.1.0 weren't being applied on an initial installation.</li>
<li>CHANGE: Callback/redirect handler renamed from <code>ppr_webhook_main.php</code> to <code>ppr_listener.php</code>.</li>
<li>CHANGE: Add Webhook listening feature.</li>
<li>BUGFIX: Don't include customer's IP address in hash, since it can change.</li>
<li>BUGFIX: Prevent double-click of admin refund/capture buttons.</li>
<li>BUGFIX: Update alert-subject language to remove "Error".</li>
<li>CHANGE: Add package-tracking via v2 orders API.</li>
<li>The following files were changed, <span class="added">added</span> or <span class="removed">removed</span>:<ol>
<li><span class="added">/admin/includes/classes/observers/auto.PayPalRestAdmin.php</span></li>
<li><span class="removed">/ppr_webhook_main.php</span></li>
<li><span class="added">/includes/auto_loaders/webhook.core.php</span></li>
<li>/includes/classes/observers/auto.paypalrestful.php</li>
<li>/includes/languages/english/modules/payment/lang.paypalr.php</li>
<li><span class="added">/includes/languages/english/extra_definitions/lang.paypalr_redirect_listener_definitions.php</span></li>
<li><span class="removed">/includes/languages/english/extra_definitions/lang.paypalr_webhook_definitions.php</span></li>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/pprAutoload.php</li>
<li><span class="added">/includes/modules/payment/paypal/PayPalRestful/ppr_listener.php</span></li>
<li><span class="added">/includes/modules/payment/paypal/PayPalRestful/ppr_webhook.php</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/MainDisplay.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/Messages.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/GetPayPalOrderTransactions.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/PayPalRestfulApi.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/Data/CountryCodes.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/Logger.php</li>
<li><span class="added">/includes/modules/payment/paypal/PayPalRestful/Common/PayPalShippingContainers.php</span></li>
<li><span class="added">/includes/modules/payment/paypal/PayPalRestful/Webhooks/*.php</span></li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/ConfirmPayPalPaymentChoiceRequest.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
</ol></li>
</ul></li>
<li>v1.1.0, 2025-03-08 (lat9, drbyte)<ul>
<li>CHANGE: Display card payments' AVS/CVV status in the admin.</li>
<li>BUGFIX: Correct function signature.</li>
<li>CHANGE: Add <code>Auth Only (Card Only)</code> transaction type.</li>
<li>CHANGE: Add setting to enable <var>SCA_ALWAYS</var> on card payments and capture 3DS status from PayPal.</li>
<li>The following files were changed or <span class="added">added</span>:<ol>
<li>/ppr_webhook_main.php</li>
<li><span class="added">/includes/languages/english/extra_definitions/lang.paypalr_webhook_definitions.php</span></li>
<li>/includes/languages/english/modules/payment/lang.paypalr.php</li>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/Formatters/MainDisplay.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/API/PayPalRestfulApi.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
</ol></li>
</ul></li>
<li>v1.0.5, 2025-01-02 (lat9, brittainmark)<ul>
<li>BUGFIX: Transmit billing address on PayPal Wallet requests.</li>
<li>BUGFIX: Don't auto-disable in the absence of a billing-address.</li>
<li>BUGFIX: Don't send payment request to PayPal if there are existing payment-related messages to be displayed.</li>
<li>BUGFIX: Use language-constants for additional status-history record's information.</li>
<li>BUGFIX: Remove intervening spaces from addresses' postal_codes.</li>
<li>BUGFIX: Correct MySQL error when checking out with a checkbox-type attributed product.</li>
<li>The following files were changed:<ol>
<li>/includes/languages/english/modules/payment/lang.paypalr.php</li>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/Address.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/ConfirmPayPalPaymentChoiceRequest.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
</ol></li>
</ul></li>
<li>v1.0.4, 2024-08-19 (lat9, dbltoe)<ul>
<li>BUGFIX: Use 'fit-content' for credit-card selection's icon-list.</li>
<li>BUGFIX: Correcting admin logs when no record exists in the <samp>paypal</samp> for the selected order.</li>
<li>BUGFIX: Use <samp>$template</samp> class to locate <code>.css</code> overrides instead of direct-directory checks.</li>
<li>BUGFIX: Payment-module constructor was running storefront-only code in admin, resulting in unwanted logs.</li>
<li>BUGFIX: Restore use of <samp>Logger::logJSON</samp> sanitization.</li>
<li>The following files were changed:<ol>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/paypalr.css</li>
<li>/includes/modules/payment/paypal/PayPalRestful/paypalr_bootstrap.css</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/AdminMain.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/GetPayPalOrderTransactions.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/Logger.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
</ol></li>
</ul></li>
<li>v1.0.3, 2024-08-14 (lat9)<ul>
<li>BUGFIX: Correct undefined method <samp>sendAlertMessage</samp>; should be <samp>sendAlertEmail</samp>.</li>
<li>BUGFIX: Correct auto-disable during PayPal IPN processing.</li>
<li>BUGFIX: Add <samp>$_SESSION['securityToken']</samp> as well as session's order-count to make GUID more unique.</li>
<li>BUGFIX: Correct 'MISSING_REQUIRED_PARAMETER' returned when customer's first/last contains multi-byte characters.</li>
<li>The following files were changed:<ol>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/Helpers.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Common/Logger.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
</ol></li>
</ul></li>
<li>v1.0.2, 2024-04-28 (lat9)<ul>
<li>BUGFIX: Full cost breakdown not submitted to PayPal if an order has discounts.</li>
<li>BUGFIX: Remove intervening spaces in level-3 data's <code>ships_from_postal_code</code>.</li>
<li>BUGFIX: Correct PHP Warnings when performing a transaction void.</li>
<li>BUGFIX: Add CSS spinner during webhook operation to let customers know that something's happening.</li>
<li>BUGFIX: Indicate that card-data is collected on-site when the customer is paying via a credit-card.</li>
<li>BUGFIX: Check PayPal response on 3DS card-payment return; orders were invalidly created when a card was declined.</li>
<li>BUGFIX: Set error message for PayPal known error responses.</li>
<li>BUGFIX: Additional country-codes supported by PayPal.</li>
<li>BUGFIX: Correct method-/constant-names when a card's declined reason-code isn't understood.</li>
<li>BUGFIX: Additional 'known' processor-response codes when a card is declined.</li>
<li>The following files were changed:<ol>
<li>/ppr_webhook_main.php</li>
<li>/includes/classes/observers/auto.paypalrestful.php</li>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/jquery.paypalr.checkout.js</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/DoVoid.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/PayPalRestfulApi.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Api/Data/CountryCodes.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Zc2Pp/CreatePayPalOrderRequest.php</li>
</ol></li>
</ul></li>
<li>v1.0.1, 2024-02-13 (lat9)<ul>
<li>BUGFIX: Whitescreen in admin when performing transaction void.</li>
<li>The following files were changed:<ol>
<li>/includes/modules/payment/paypalr.php</li>
<li>/includes/modules/payment/paypal/PayPalRestful/Admin/DoVoid.php</li>
</ol></li>
</ul></li>
<li>v1.0.0, 2024-01-06 (lat9)<ul>
<li>Initial release.</li>
</ul></li>
</ul>
</body>
</html>