PT3 Maths Form 3 Chapter 3 Consumer Mathematics: Savings & Investment, Credit & Debt.Part 3: Creditvisit us at at https://w. This is NOT A place to discuss strategies to pay-down credit card debt, take advantage of balance transfer or 0% interest offers, or anything else related to credit card debt. It is HIGHLY recommended to avoid the 'churning' game if you currently have or are susceptible to credit card debt. Contactless Credit Cards - Frequently Asked Questions What are Contactless credit cards? Contactless credit cards are just like a chip credit card but better. Contactless cards enable you to “tap and go”. Just tap the payment terminal when completing a purchase at a contactless enabled merchant and be on your way. Fast, Easy, Secure.
Whatever credit card you need, we've got a great pack to pick from
Check eligibilityFind me a card that lets me
From January 2021, online servicing is no longer available.
Our range of credit cards
Not everyone wants the same thing from their credit card. So whether you're looking to get a better deal on your balance, free up some cash in your current account, rack up Virgin Points, or enjoy a smart deal on your everyday spending, we’ve got a great pack of cards to pick from.
- Pick the perfect card to suit your needs – from balance transfers and purchases to Virgin Points and more
- No nasty surprises. Use Card Checker to see your chances of being accepted
- Access a great range of Virgin offers
On occasion, the card designs presented may differ from those on sale.
Buy fabulous, fly fabulous
With the Virgin Atlantic Credit Card. Representative 22.9% APR (variable)
Find out moreOur app makes money easy
Manage your card, master your spending
- Track your balance and transactions
- View your latest transactions and keep tabs on your balance
- Pay with ease
- Set up and manage your Direct Debit, and make a debit card payment
- Manage balance and money transfers
- Easily transfer a balance or move money into your account
- View PIN
- Simply and securely view your PIN
Our checker is a quick way to see your chances of being accepted for a card, and it won't affect your credit rating.
Check eligibilityLive a life more Virgin
Exclusive perks our customers love
24/7 supportVirgin Group discounts
When you join the Virgin Money family, you get extra special deals across the wider Virgin Group. So you can save on everyday essentials, as well as bigger things - like days out, dream holidays and amazing adventures. Terms apply.
Credit Karma
Discover our discountsVirgin Group discounts24/7 support
We're here to answer your questions.
View questions and answersOnly CAD transaction supported.
There are two modes for credit card integration:
Simple Purchase
Recurring Purchase
# Sign generate and check
# Request and response format
All request and response are in JSON format.The response body is also in JSON format. It should not be treated as fixed or as a schema, new fields may be added as the API evolves, and the order of fields might change. Your applications must therefore be resilient to the reordering of fields within a JSON object.
# Sending request demo code
Credit Card 37
# Simple purchase
User input card info and purchase once, users will be prompted to input card info each time when they purchase.
# Sequence
1, Call cc_purchase and redirect to redirectUrl to let user input credit card info;
2, After purchase, will redirect to returnUrl;
3, If the transaction is successful, IOTPay will notify to notifyUrl;
# Request URL for simple purchase
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_purchase
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
mchOrderNo | y | String(30) | 1234567890abc | assigned by merchant |
mchUserId | y | String(30) | 007 | assigned by merchant |
amount | y | Int | 1500 | in cents |
currency | y | String(3) | CAD | for now only CAD supported |
loginName | y | String(12) | jack123 | merchant's login name |
subject | n | String(64) | ||
body | n | String(250) | ||
channel | y | String | PF_CC | fixed value: PF_CC |
notifyUrl | y | String(200) | get notify when success | |
returnUrl | y | String(200) | redirect to this url after payment | |
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData.redirectUrl | y | String | if retCode=SUCCESS, merchant redirect to this url | |
retData.secureId | y | String | For SDK integration only |
# NotifyUrl message(post request in json format)
name | required | type | sample | description |
---|---|---|---|---|
payOrderId | y | String | SUCCESS or FAIL | |
mchId | y | String | ||
mchOrderNo | y | String | ||
originalOrderId | y | String | original pay order id if payType=refund | |
amount | y | Int | 100 | in cents |
currency | y | String | CAD | |
payType | y | String | pay or refund | |
refundable | y | Int | 100 | in cents |
status | y | Int | 2 | 2 or 3 means success |
invoiceNum | y | String | ||
paySuccTime | y | String | 2021-04-07 19:44:51 | |
cardNum | y | String | 432567******2266 | |
cardType | y | String | V or M | |
expiryDate | y | String | ||
authNum | y | String | ||
transNum | y | String | ||
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
# ReturnUrl parameters
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | n | String | ||
status | y | Int | 2 | 2 or 3 both mean the transaction is successful |
# Recurring purchase
User input card info once, can purchase with the tokenized card multiple times.
# Sequence
1, Call cc_addcard and then redirect to retData.redirectUrl to let user input credit card info;
2, After addcard, will redirect to returnUrl with the following parameters:
If success: retCode=SUCCESS
If fail: retCode=FAIL&retMsg=xxxx
3, (optional) Call cc_querycard to get card info;
4, If cc_addcard is successful, call cc_purchasewithtoken to do a real purchase
# Request URL for cc_addcard
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_addcard
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
cardId | y | String(30) | 604567999 | assigned by merchant,must be unique |
loginName | y | String(12) | jack123 | merchant's login name |
channel | y | String | PF_CC | fixed value: PF_CC |
returnUrl | y | String(200) | redirect to this url after payment | |
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
each cardId
can bind only one credit card, if one user need to bind more cards, use different cardId
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData.redirectUrl | y | String | if retCode=SUCCESS, merchant redirect to this url | |
retData.secureId | y | String | used for sdk integration |
# ReturnUrl parameters
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | n | String |
# Request URL for cc_directaddcard
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_directaddcard
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
As an IOTPAY client or partner using this method of integration, your solution must demonstrate compliance to the Payment Card Industry Data Security Standard (PCI DSS) .
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
cardId | y | String(30) | 604567999 | assigned by merchant |
cardNum | y | String | 4223456789564532 | card number |
expiryDate | n | String | 0725 | |
holder | y | String | card holder's name | |
cvv | y | String | 786 | |
loginName | y | String(12) | jack123 | merchant's login name |
channel | y | String | PF_CC | fixed value: PF_CC |
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData | y | JSON | if retCode=SUCCESS, card info returned |
# retData contains card infomation:
name | required | type | sample | description |
---|---|---|---|---|
cardId | y | String | ||
cardNum | y | String | ||
expiryDate | n | String | ||
holder | y | String | ||
cvv | y | String |
# Request URL for cc_querycard
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_querycard
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
cardId | y | String(30) | 604567999 | assigned by merchant |
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData | y | JSON | if retCode=SUCCESS, card info returned |
# retData contains card infomation:
name | required | type | sample | description |
---|---|---|---|---|
cardId | y | String | ||
cardNum | y | String | ||
expiryDate | y | String | ||
holder | y | String | ||
cvv | y | String |
# Request URL for purchasewithtoken
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_purchasewithtoken
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
mchOrderNo | y | String(30) | 1234567890abc | assigned by merchant |
mchUserId | y | String(30) | 007 | assigned by merchant |
cardId | y | String(30) | 604567999 | assigned by merchant |
amount | y | Int | 1500 | in cents |
currency | y | String(3) | CAD | for now only CAD supported |
loginName | y | String(12) | jack123 | merchant's login name |
subject | n | String(64) | ||
body | n | String(250) | ||
clientIp | n | String(50) | 192.77.33.56 | consumer's ip address, for better transaction trace |
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData | y | JSON | if retCode=SUCCESS, order detailed info returned |
# retData contains order infomation:
name | required | type | sample | description |
---|---|---|---|---|
payOrderId | y | String | SUCCESS or FAIL | |
mchId | y | String | ||
mchOrderNo | n | String | ||
originalOrderId | y | String | original pay order id if payType=refund | |
amount | y | Int | 100 | in cents |
currency | y | String | CAD | |
payType | y | String | pay or refund | |
refundable | y | Int | 100 | in cents |
status | y | Int | 2 | 2 or 3 means success |
invoiceNum | y | String | ||
paySuccTime | y | String | 2021-04-07 19:44:51 | |
cardNum | y | String | 432567******2266 | |
cardType | y | String | V or M | |
expiryDate | y | String | ||
authNum | y | String | ||
transNum | y | String | ||
channel | y | String | PF_CC | fixed value:PF_CC |
# Purchase with wallet
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_purchasewithwallet
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
# This API is for Apple Pay and Google Pay, contact us before integrating this API.
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
mchOrderNo | y | String(30) | 1234567890abc | assigned by merchant |
amount | y | Int | 1500 | in cents |
currency | y | String(3) | CAD | for now only CAD supported |
walletType | n | String(250) | “ApplePay” for ApplePay, “GooglePay” for Google Pay | |
walletData | n | String(250) | The OEM Wallet data is generated by the mobile device authorized wallet | |
loginName | y | String(12) | jack123 | merchant's login name |
subject | n | String(64) | ||
body | n | String(250) | ||
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
walletData must be base64encoded. For ApplePay, you must send the Apple payment token as received by the passkit.For Google Pay, you must send the payment token (paymentData.paymentMethodData.tokenizationData.token) as received by Google Pay API.
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData | y | JSON | if retCode=SUCCESS, order detailed info returned |
# retData contains order infomation:
name | required | type | sample | description |
---|---|---|---|---|
payOrderId | y | String | SUCCESS or FAIL | |
mchId | y | String | ||
mchOrderNo | n | String | ||
originalOrderId | y | String | original pay order id if payType=refund | |
amount | y | Int | 100 | in cents |
currency | y | String | CAD | |
payType | y | String | pay or refund | |
refundable | y | Int | 100 | in cents |
status | y | Int | 2 | 2 or 3 means success |
invoiceNum | y | String | ||
paySuccTime | y | String | 2021-04-07 19:44:51 | |
cardNum | y | String | 432567******2266 | |
cardType | y | String | V or M | |
expiryDate | y | String | ||
authNum | y | String | ||
transNum | y | String | ||
channel | y | String | PF_CC | fixed value:PF_CC |
# Refund a transaction
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_refund
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
mchRefundNo | y | String(30) | R1234567890abc | assigned by merchant |
loginName | y | String(12) | jack_chen | assigned by merchant,equals to jobNo |
refundAmount | y | Int | 100 | in cents |
payOrderId | y | String(30) | ||
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData | y | JSON | if retCode=SUCCESS, order detailed info returned |
# Void a transaction
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_void
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
Credit Card V3 Download
# Parameters
Credit Card Validator
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
mchRefundNo | y | String(30) | R1234567890abc | assigned by merchant |
loginName | y | String(12) | jack_chen | assigned by merchant,equals to jobNo |
payOrderId | y | String(30) | ||
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
# Response
Credit Card Vendor
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData | y | JSON | if retCode=SUCCESS, order detailed info returned |
# Query order
Endpoint: https://ccapi.iotpaycloud.com/v3/cc_query
Reqeust method:
- POST
- Content-Type: application/json;charset=UTF-8
# Parameters
name | required | type | sample | description |
---|---|---|---|---|
mchId | y | String(30) | 10000701 | assigned by IOTPay |
mchOrderNo | y | String(30) | 1234567890abc | assigned by merchant |
payOrderId | y | String(30) | ||
sign | y | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | Sign algorithm |
use either payOrderId
or mchOrderNo
, use one of them
# Response
name | required | type | sample | description |
---|---|---|---|---|
retCode | y | String | SUCCESS or FAIL | |
retMsg | y | String | ||
retData | y | JSON | if retCode=SUCCESS, order detailed info returned |
# SDKs and document
For iOS integration: iOS sdk
For Android integration: Android sdk
PHP and JS integration: Php sdk
# Demo and source code
Simple purchase: demoRecurring purchase: demosource code download