2424 * @return array
2525 */
2626function paystack_config ()
27- {
27+ {
2828 $ isSSL = ((!empty ($ _SERVER ['HTTPS ' ]) && $ _SERVER ['HTTPS ' ] !== 'off ' ) || $ _SERVER ['SERVER_PORT ' ] == 443 );
2929 $ callbackUrl = 'http ' . ($ isSSL ? 's ' : '' ) . ':// ' . $ _SERVER ['HTTP_HOST ' ] .
30- //substr($_SERVER['SERVER_NAME'], 0, strrpos($_SERVER['SERVER_NAME'], '/')) . '/'
30+ //substr($_SERVER['SERVER_NAME'], 0, strrpos($_SERVER['SERVER_NAME'], '/')) . '/'
3131 substr (str_replace ('/admin/ ' , '/ ' , $ _SERVER ['REQUEST_URI ' ]), 0 , strrpos ($ _SERVER ['REQUEST_URI ' ], '/ ' )) .
3232 '/modules/gateways/callback/paystack.php ' ;
33-
33+
3434 return array (
3535 'FriendlyName ' => array (
3636 'Type ' => 'System ' ,
@@ -39,8 +39,8 @@ function paystack_config()
3939 'webhook ' => array (
4040 'FriendlyName ' => 'Webhook URL ' ,
4141 'Type ' => 'yesno ' ,
42- 'Description ' => 'Copy and paste this URL on your Webhook URL settings <code> ' . $ callbackUrl. '</code> ' ,
43- 'Default ' => "' " . $ callbackUrl. "' " ,
42+ 'Description ' => 'Copy and paste this URL on your Webhook URL settings <code> ' . $ callbackUrl . '</code> ' ,
43+ 'Default ' => "' " . $ callbackUrl . "' " ,
4444 ),
4545 'gatewayLogs ' => array (
4646 'FriendlyName ' => 'Gateway logs ' ,
@@ -93,9 +93,9 @@ function paystack_link($params)
9393 // Client
9494 $ email = $ params ['clientdetails ' ]['email ' ];
9595 $ phone = $ params ['clientdetails ' ]['phonenumber ' ];
96- $ params ['langpaynow ' ]
97- = array_key_exists ('langpaynow ' , $ params ) ?
98- $ params ['langpaynow ' ] : 'Pay with ATM ' ;
96+ $ params ['langpaynow ' ]
97+ = array_key_exists ('langpaynow ' , $ params ) ?
98+ $ params ['langpaynow ' ] : 'Pay with ATM ' ;
9999
100100 // Config Options
101101 if ($ params ['testMode ' ] == 'on ' ) {
@@ -105,42 +105,42 @@ function paystack_link($params)
105105 $ publicKey = $ params ['livePublicKey ' ];
106106 $ secretKey = $ params ['liveSecretKey ' ];
107107 }
108-
108+
109109 // check if there is an id in the GET meaning the invoice was loaded directly
110- $ paynowload = ( !array_key_exists ('id ' , $ _GET ) );
111-
110+ $ paynowload = (!array_key_exists ('id ' , $ _GET ));
111+
112112 // Invoice
113113 $ invoiceId = $ params ['invoiceid ' ];
114- $ amountinkobo = round (floatval ($ params ['amount ' ])* 100 );
114+ $ amountinkobo = round (floatval ($ params ['amount ' ]) * 100 );
115115 $ currency = $ params ['currency ' ];
116116 ///Transaction_reference
117- $ txnref = $ invoiceId . '_ ' .time ();
117+ $ txnref = $ invoiceId . '_ ' . time ();
118118
119119
120- if (!in_array (strtoupper ($ currency ), [ 'NGN ' , 'USD ' , 'GHS ' , 'ZAR ' , 'EGP ' , 'XOF ' , 'KES ' , 'RWF ' ])) {
120+ if (!in_array (strtoupper ($ currency ), ['NGN ' , 'USD ' , 'GHS ' , 'ZAR ' , 'EGP ' , 'XOF ' , 'KES ' , 'RWF ' ])) {
121121 return ("<b style='color:red;margin:2px;padding:2px;border:1px dotted;display: block;border-radius: 10px;font-size: 13px;'>Sorry, this version of the Paystack WHMCS plugin only accepts NGN, USD, GHS, ZAR, EGP, XOF, KES, and RWF payments. <i> $ currency</i> not yet supported.</b> " );
122122 }
123-
123+
124124 $ isSSL = ((!empty ($ _SERVER ['HTTPS ' ]) && $ _SERVER ['HTTPS ' ] !== 'off ' ) || $ _SERVER ['SERVER_PORT ' ] == 443 );
125125 $ fallbackUrl = 'http ' . ($ isSSL ? 's ' : '' ) . ':// ' . $ _SERVER ['HTTP_HOST ' ] .
126126 substr ($ _SERVER ['REQUEST_URI ' ], 0 , strrpos ($ _SERVER ['REQUEST_URI ' ], '/ ' )) .
127- '/modules/gateways/callback/paystack.php? ' .
127+ '/modules/gateways/callback/paystack.php? ' .
128128 http_build_query (
129129 array (
130- 'invoiceid ' =>$ invoiceId ,
131- 'email ' => $ email ,
132- 'phone ' => $ phone ,
133- 'reference ' => $ txnref ,
134- 'amountinkobo ' => $ amountinkobo ,
135- 'go ' => 'standard '
130+ 'invoiceid ' => $ invoiceId ,
131+ 'email ' => $ email ,
132+ 'phone ' => $ phone ,
133+ 'reference ' => $ txnref ,
134+ 'amountinkobo ' => $ amountinkobo ,
135+ 'go ' => 'standard '
136136 )
137137 );
138138 $ callbackUrl = 'http ' . ($ isSSL ? 's ' : '' ) . ':// ' . $ _SERVER ['HTTP_HOST ' ] .
139139 substr ($ _SERVER ['REQUEST_URI ' ], 0 , strrpos ($ _SERVER ['REQUEST_URI ' ], '/ ' )) .
140- '/modules/gateways/callback/paystack.php? ' .
140+ '/modules/gateways/callback/paystack.php? ' .
141141 http_build_query (
142142 array (
143- 'invoiceid ' => $ invoiceId
143+ 'invoiceid ' => $ invoiceId
144144 )
145145 );
146146
@@ -150,20 +150,20 @@ function paystack_link($params)
150150 <div class="payment-btn-container2"></div>
151151 <script>
152152 // load jQuery 1.12.3 if not loaded
153- (typeof $ === \'undefined \') && document.write("<scr" + "ipt type=\"text\/javascript\" ' .
154- 'src=\"https:\/\/code.jquery.com\/jquery-1.12.3.min.js\"><\/scr" + "ipt>");
153+ (typeof $ === \'undefined \') && document.write("<scr" + "ipt type=\"text\/javascript\" ' .
154+ 'src=\"https:\/\/code.jquery.com\/jquery-1.12.3.min.js\"><\/scr" + "ipt>");
155155 </script>
156156 <script>
157157 $(function() {
158158 var paymentMethod = $( \'select[name="gateway"] \').val();
159159 if (paymentMethod === \'paystack \') {
160160 $( \'.payment-btn-container2 \').hide();
161- var toAppend = \'<button type="button" '.
162- ' onclick="payWithPaystack()" ' .
163- ' style="padding: 10px 25px; margin: 10px;border-radius: 5px;background: #021C32; color:#fff"> ' .
164- addslashes ($ params ['langpaynow ' ]). '</button> ' .
165- '<img style="width: 150px; display: block; margin: 0 auto;" ' .
166- ' src="https://cdn-assets-cloud.frontify.com/s3/frontify-cloud-files-us/eyJwYXRoIjoiZnJvbnRpZnlcL2FjY291bnRzXC8yYVwvMTQxNzczXC9wcm9qZWN0c1wvMTc4NjE0XC9hc3NldHNcLzdmXC8yNzQ2ODcxXC83NDY5OGViODMzMzhlMWJiNjVhMDk4MTYwNjkzY2FlOC0xNTQwMDM5NjA0LnBuZyJ9:cloud:YYqwtVK3Tb8KMGeFiXCl_w9flKcsEY9D022GMOK9oFc"/> \';
161+ var toAppend = \'<button type="button" ' .
162+ ' onclick="payWithPaystack()" ' .
163+ ' style="padding: 10px 25px; margin: 10px;border-radius: 5px;background: #021C32; color:#fff"> ' .
164+ addslashes ($ params ['langpaynow ' ]) . '</button> ' .
165+ '<img style="width: 150px; display: block; margin: 0 auto;" ' .
166+ ' src="https://cdn-assets-cloud.frontify.com/s3/frontify-cloud-files-us/eyJwYXRoIjoiZnJvbnRpZnlcL2FjY291bnRzXC8yYVwvMTQxNzczXC9wcm9qZWN0c1wvMTc4NjE0XC9hc3NldHNcLzdmXC8yNzQ2ODcxXC83NDY5OGViODMzMzhlMWJiNjVhMDk4MTYwNjkzY2FlOC0xNTQwMDM5NjA0LnBuZyJ9:cloud:YYqwtVK3Tb8KMGeFiXCl_w9flKcsEY9D022GMOK9oFc"/> \';
167167
168168 $( \'.payment-btn-container \').append(toAppend);
169169 if($( \'.payment-btn-container \').length===0){
@@ -180,12 +180,12 @@ function paystack_link($params)
180180
181181 function payWithPaystack(){
182182 paystackPop.checkout({
183- key: \''. addslashes (trim ($ publicKey )). '\',
184- email: \''. addslashes (trim ($ email )). '\',
185- phone: \''. addslashes (trim ($ phone )). '\',
186- amount: '. $ amountinkobo. ',
187- currency: \''. addslashes (trim ($ currency )). '\',
188- ref: \''. $ txnref. '\',
183+ key: \'' . addslashes (trim ($ publicKey )) . '\',
184+ email: \'' . addslashes (trim ($ email )) . '\',
185+ phone: \'' . addslashes (trim ($ phone )) . '\',
186+ amount: ' . $ amountinkobo . ',
187+ currency: \'' . addslashes (trim ($ currency )) . '\',
188+ ref: \'' . $ txnref . '\',
189189 metadata:{
190190 "custom_fields":[
191191 {
@@ -199,25 +199,28 @@ function payWithPaystack(){
199199 $( \'div.alert.alert-info.text-center \').hide();
200200 $( \'.payment-btn-container2 \').hide();
201201
202- window.location.href = \''. addslashes ($ callbackUrl ). '&trxref= \' + response.trxref;
202+ window.location.href = \'' . addslashes ($ callbackUrl ) . '&trxref= \' + response.trxref;
203203 },
204204 onCancel: function(){
205205 }
206206 });
207+ $( \'img[alt="Loading"] \').hide();
208+ $( \'div.alert.alert-info.text-center \').html( \'Click the button below to retry payment... \');
209+ create_button();
207210 }
208211
209212 function create_button(){
210213 if(!button_created){
211214 button_created = true;
212- $( \'.payment-btn-container2 \').append( \'<button type="button" '.
213- ' onClick="window.location.reload()" ' .
214- ' style="padding: 10px 25px; margin: 10px;border-radius: 5px;background: #021C32; color:#fff"> ' .
215- addslashes ($ params ['langpaynow ' ]). '</button> ' .
216- '<img style="width: 150px; display: block; margin: 0 auto;" ' .
217- ' src="https://cdn-assets-cloud.frontify.com/s3/frontify-cloud-files-us/eyJwYXRoIjoiZnJvbnRpZnlcL2FjY291bnRzXC8yYVwvMTQxNzczXC9wcm9qZWN0c1wvMTc4NjE0XC9hc3NldHNcLzdmXC8yNzQ2ODcxXC83NDY5OGViODMzMzhlMWJiNjVhMDk4MTYwNjkzY2FlOC0xNTQwMDM5NjA0LnBuZyJ9:cloud:YYqwtVK3Tb8KMGeFiXCl_w9flKcsEY9D022GMOK9oFc"/> \');
215+ $( \'.payment-btn-container2 \').append( \'<button type="button" ' .
216+ ' onClick="window.location.reload()" ' .
217+ ' style="padding: 10px 25px; margin: 10px;border-radius: 5px;background: #021C32; color:#fff"> ' .
218+ addslashes ($ params ['langpaynow ' ]) . '</button> ' .
219+ '<img style="width: 150px; display: block; margin: 0 auto;" ' .
220+ ' src="https://cdn-assets-cloud.frontify.com/s3/frontify-cloud-files-us/eyJwYXRoIjoiZnJvbnRpZnlcL2FjY291bnRzXC8yYVwvMTQxNzczXC9wcm9qZWN0c1wvMTc4NjE0XC9hc3NldHNcLzdmXC8yNzQ2ODcxXC83NDY5OGViODMzMzhlMWJiNjVhMDk4MTYwNjkzY2FlOC0xNTQwMDM5NjA0LnBuZyJ9:cloud:YYqwtVK3Tb8KMGeFiXCl_w9flKcsEY9D022GMOK9oFc"/> \');
218221 }
219222 }
220- ' . ( $ paynowload ? 'setTimeout("payWithPaystack()", 5100); ' : '' ) . '
223+ ' . ($ paynowload ? 'setTimeout("payWithPaystack()", 5100); ' : '' ) . '
221224 </script> ' ;
222225
223226 return $ code ;
0 commit comments