Once the merchant account has been confirmed by SHP as ready to use, is to contact our Sales/Support team to notify us when you wish to go live. We will not automatically switch your account to a live processing state without a request from you in writing.
Appendices
Appendix A: Support Acquirers
The SHP platform can currently process payments through the below acquirers:
Acquirer Type
Barclays Merchant Services Acquiring Bank
Lloyds TSB Cardnet Acquiring Bank
First Data Merchant Solutions Acquiring Bank
HSBC Acquiring Bank
Elavon Acquiring Bank
Streamline (RBS WorldPay) Acquiring Bank
American Express Acquiring Bank
Diners Club Acquiring Bank
Voice Commerce/CashFlows Acquiring Bank
Valitor Acquiring Bank
PayPal E-Wallet
ClickandBuy E-Wallet
Appendix B: Transaction Scripts
Below is a list of different scripts within the SHP platform which support card transactions, details of what they are for and which features they support. All scripts are located within the directory https://www.secure-server-hosting.com/secutran/:
Script Name Purpose 3-D Secure
(VbV/SecureCode)
Product Data
transactionac1.php Actinic eCom Yes No
transactionad1.php Additional eCom Yes Yes
transactioncb1.php ClickandBuy No Yes
transactionjs1.php eCommerce Yes No
transactionmo1.php MOTO No Yes
transactionpp1.php PayPal No Yes
transactionsb1.php Recurring (CA) Yes Yes
transactionsi1.php eCommerce Yes Yes
Appendix C: Test Card Numbers
Below is a list of test card numbers to be used against our testing domain:
Card ID
Card Type
Card Number CV2 Address Postcode
VC1 Visa Credit 4929 4212 3460 0821 356 6347 178
VC2 Visa Credit 4543 0599 9999 9982 110 76 637
VC3 Visa Credit 4543 0599 9999 9990 689 234578 548
VD1 Vida Debit 4539 7910 0173 0106 289 5120 67
VD2 Vida Debit 4462 0000 0000 0003 672 57 65890
MC1 MasterCard 5301 2500 7000 0191 419 25 102
MC2 MasterCard 5413 3390 0000 1000 304 117
MC3 MasterCard 5434 8499 9999 9951 470 34 218
MC3 MasterCard 5434 8499 9999 9993 557 47 324
MD1 MasterCard
Debit 5573 4712 3456 7898 159 102
MA1 Maestro 6759 0150 5012 3445 002 309 5258 105
MA2 Maestro 6759 0168 0000 0120 097 701 79
JC1 JCB 3540 5999 9999 1047 209 2 28
EL1 Visa Electron 4917 4800 0000 0008 009 56 678
AM1 American
Express 3742 4545 5400 001 4887 181
DC1 Diners Club 3643 2685 2602 94 N/A
All cards must be submitted with an expiry date in the future, the address details and postcode must simply contain the numeric values in order to pass the AVS check.
In addition to the card details, the transaction amount will also impact on the transaction result:
Amount Range From Amount Range To Expected Response 0.01 (e.g. £0.01) 49.99 (e.g. $49.99) Transaction confirmed 50.00 (e.g. $50.00) 99.99 (e.g. €99.99) Card Referrer
100.00 (e.g. £100.00) No limit Card Declined
Appendix D: Example Redirect Form
Bellow is an example HTML form which will redirect the customer to a payment page:
<form action="https://www.secure-server-hosting.com/secutran/secuitems.php" method="post">
<input type="hidden" name="filename" value="SH200000/payment.html" />
<input type="hidden" name="transactionamount" value="10.00" />
<input type="hidden" name="transactioncurrency" value="GBP" />
<input type="hidden" name="shreference" value="SH200000" />
<input type="hidden" name="checkcode" value="123456" />
<input type="hidden" name="secuitems" value="[pd1|sku1|Product 1 (size:
large)|50.00|2|10.00]" />
<input type="submit" value="Proceed to Payment" />
</form>
Appendix E: Example Payment Form
Bellow is an example HTML form to submit the card details from your payment form:
<form action="https://www.secure-server-hosting.com/secutran/transactionsi1.php" method="post"
name="basketform" id="basketform" onsubmit="return validateForm(this)">
<input type="hidden" name='shreference' value='$shreference' />
<input type="hidden" name='checkcode' value='$checkcode' />
<input type="hidden" name='secuitems' value='$secuitems' />
<input type="hidden" name='transactioncurrency' value='$transactioncurrency' />
<input type="hidden" name='shippingcharge' value='$shippingcharge' />
<input type="hidden" name='transactiontax' value='$transactiontax' />
<input type="hidden" name='transactionamount' value='$transactionamount' />
<input type="hidden" name="filename" value="$backfile" />
Name: <input type="text" name="cardholdersname" /><br />
Email address: <input type="text" name="cardholdersemail" /><br />
Phone number: <input type="text" name="cardholdertelephonenumber" /><br />
Street: <input type="text" name="cardholderaddr1" /><br />
City/Town: <input type="text" name="cardholdercity" /><br />
County: <input type="text" name="cardholderstate" /><br />
Postcode: <input type="text" name="cardholderpostcode" /><br />
Card number: <input type="text" name="cardnumber" /><br />
Expiry date: <select name="cardexpiremonth">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select> / <select name="cardexpireyear">
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select><br />
CV2 number: <input type="text" name="cv2" />
</form>
Appendix F: Example Confirmation Page
Below is an example confirmation page:
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 Transitional//EN"
"http://www.w3.org/tr/html4/loose.dtd">
<td colspan="5"><p>Your transaction has been authorised and your card will be billed for
$transactionamount.</p><p> Please note your transaction reference number: $trannum and print or save this page for your records.</p></td>
</tr>
<tr>
<td>Code</td>
<td>Name</td>
<td>Quantity</td>
<td>Price</td>
<td>Total</td>
</tr>
<loopstart:shoplst:>
<tr>
<td>$itemcode</td>
<td>$itemdesc</td>
<td>$itemquan</td>
<td>$transactioncurrency$itempric</td>
<td>$transactioncurrency$itemtota</td>
</tr>
<loopend>
<tr>
<td colspan="3">Total:</td>
<td colspan="2>$transactioncurrency $transactionamount</td>
</tr>
</table>
</body>
</html>
Appendix G: Example Transaction Error Page
Below is an example transaction error page:
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 Transitional//EN"
"http://www.w3.org/tr/html4/loose.dtd">
<p><strong>Your purchases :</strong></p>
<table>
<tr>
<td colspan="5">TRANSACTION ERROR</td>
<tr>
<td>Code</td>
<td>Name</td>
<td>Quantity</td>
<td>Price</td>
<td>Total</td>
</tr>
<loopstart:shoplst:>
<tr>
<td>$itemcode</td>
<td>$itemdesc</td>
<td>$itemquan</td>
<td>$transactioncurrency$itempric</td>
<td>$transactioncurrency$itemtota</td>
</tr>
<loopend>
<tr>
<td colspan="3">Total:</td>
<td colspan="2"><strong>$transactioncurrency$transactionamount</strong></td>
</tr>
<tr>
<td colspan="5" class="message_fail" style="text-align: center; size: 14px; font-weight: bold; letter-spacing: 1px;"><p>The transaction failed.</p>
<form action="https://www.secure-server-hosting.com/secutran/secuitems.php"
method="POST">$posted_fields
<p> Please return to the <input type="submit" name="submit" value="previous page"> to amend the problems below.</p>
</form>
</td>
</tr>
<tr>
<td> </td>
<td colspan="3">$tranerrdesc</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td coldpan="3">$tranerrdetail</td>
<td> </td>
</tr>
</table>
</body>
</html>
Appendix H: Generating Advanced Secuitems Unique Hash
Below is a PHP example to generate the unique hash:
$post_data = "shreference=".$shreference;
$post_data .= "&secuitems=".$secuitems;
$post_data .= "&secuphrase=".$secuphrase;
$post_data .= "&transactionamount=".$transactionamount;
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "https://www.secure-server-hosting.com/secutran/create_secustring.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, "http://www.yourdomain.com/basket.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$secuString = trim(curl_exec($ch));
curl_close($ch);