You are on page 1of 29

m o bi l e

c o m m e r c e

Sprint Mobile Wallet


Android Application
Integration Guide
Version 1.0.0

Acknowledgements
2010 by CardinalCommerce Corporation. All rights reserved.
Trademark Information
CardinalCommerce, Cardinal Centinel Authentication Software for Merchants, Cardinal MAX,
and Centinel are trademarks of CardinalCommerce Corporation.
All other trademarks are the properties of their respective owners.
This manual may not, in whole or in part, be copied, photocopied, reproduced, translated, or
converted to any electronic or machine readable form without prior written consent of
CardinalCommerce Corporation.
Contact Information
CardinalCommerce Corporation
6119 Heisley Rd.
Mentor, OH 44060
USA
www.cardinalcommerce.com

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

TABLE OF CONTENTS
1 Overview..................................................................................................................4
2 Transaction Sequence........................................................................................... 5
3 Transaction API...................................................................................................... 6
3.1 Message Versions.................................................................................................................. 6

4 SMW Android Transaction Client Integration Steps........................................... 6


5 Mobile Payments Server Integration.................................................................... 8
5.1 Lookup Message Integration.................................................................................................. 8
5.1.1 cmpi_lookup................................................................................................................... 8
5.2 Authorization Message Integration....................................................................................... 12
5.2.1 cmpi_authorize............................................................................................................. 12
5.3 Capture Message Integration............................................................................................... 14
5.3.1 cmpi_capture................................................................................................................14
5.4 Refund Message Integration................................................................................................ 17
5.4.1 cmpi_refund..................................................................................................................17
5.5 Sale Message Integration.....................................................................................................19
5.5.1 cmpi_sale..................................................................................................................... 20
5.6 Add Merchant Order Number Message Integration............................................................. 23
5.6.1 cmpi_add_order_number............................................................................................. 23
5.7 Status Message Integration..................................................................................................24
5.7.1 cmpi_payment_status.................................................................................................. 25

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

1 Overview
The Sprint Mobile Wallet provides mobile application developers a way to integrate the Cardinal MAX Mobile Payments Server [MPS]. Sprint Mobile Wallet allows for purchases to be
carried out within the application and provide a friendlier user experience as compared to directing the end user to the WAP or Web purchase page of that particular retailer.
Sprint Mobile Wallet aggregates payment methods and makes them available as one-click
payment options on a user's mobile phone.
This document provides the sequence flow, integration specifications, sample messages and
test server credentials required by mobile application developers to integrate with the platform.

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

2 Transaction Sequence

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

3 Transaction API
Supported transaction messages for Mobile Payments Server.
Message Name

Description

cmpi_lookup

This message is used to initiate a payment.

cmpi_authorize

Authorize an order that can be fulfilled at a later time.

cmpi_capture

Settle an order or previously authorized transaction and obtain payment for either the full or partial amount of the previous transaction.

cmpi_refund

This message performs a transaction refund. The message supports


Full and Partial refund transactions.

cmpi_sale

The Sale transaction performs an Authorization and Capture in a


single step. This type of transaction is typically used when the merchant delivers the product at the time of the sale.

cmpi_add_order_number

This message updates the merchants front end order number with
their backend order number in the Centinel system.

cmpi_payment_status

This message provides post payment status updates to the Merchant.

Note: Note that all API elements are case sensitive.

3.1 Message Versions


The following table details the currently support message versions:

Message Version

Payment Initiative

1.7

Sprint Mobile Wallet - Mobile Payments Server

4 SMW Android Transaction Client Integration


Steps
1. Download SMWCheckout.jar Android Library version latest .099 from the SMW
OTA Site
2. Add the SMWCheckout.jar to you android app development environment.
3. Add the following entries to the Androidmanifest.xml

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

<activity android:name =
"com.cardinalcommerce.android.thinclient.cardinalMPSCheckout" android:theme =
"@android:style/Theme.Dialog" android:label = "Sprint Mobile Wallet" />
<uses-permission android:name = "android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name = "android.permission.INTERNET"></uses-permission>

In the client App add the following snippet to the event that invokes SMW.

import com.cardinalcommerce.android.thinclient.*;
transactionCache currentTxn = new transactionCache();
currentTxn.setProcessorId("your processor Id");
currentTxn.setMerchantId("your merchant Id");
currentTxn.setTransactionPwd("your txn password");
currentTxn.setTransactionUrl("https://sandbox.cardinalcommerce.com/maps/smps.asp");
currentTxn.setProcessingFlag(cardinalConfiguration.TRANSACTION_PROCESSING_FULL);
currentTxn.setOrderNumber(cardinalConfiguration.generateRandomOrderNumber
(500,50000));
currentTxn.setOrderDesc("Test Order from android client");
currentTxn.setTxnAmount(109);
currentTxn.setCurrencyCode("840");
currentTxn.setPurchaseType(cardinalConfiguration.PURCHASE_TYPE_HARDGOODS);
currentTxn.addProduct("ProductSKU",
"Product Description",899,1);
Intent iSMW = new Intent(SMWTester.this,cardinalMPSCheckout.class);
iSMW.putExtra("currentTransaction", currentTxn);
startActivityForResult(iSMW,0);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
currentTxn = (transactionCache) data.getExtras().get("currentTransaction");
if (currentTxn.getStatus().equalsIgnoreCase(cardinalConfiguration.
ORDER_STATUS_SUCCESS) == true){
Toast.makeText(getBaseContext(), "Purchase Successful",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getBaseContext(), "Purchase Failed: (" + currentTxn.getErrorNo()
+ ") " + currentTxn.getErrorDesc(), Toast.LENGTH_LONG).show();
}
}

Note: Processing Flag Possible Values and Meanings


TRANSACTION_PROCESSING_FULL - Android Client will call lookup, subscriber authentication,
payment selection, cmpi_sale
TRANSACTION_PROCESSING_SUBSCRIBER - Android Client will call subscriber authentication,
payment selection. Requires requestToken to be set in the transactionCache. responseToken will
be returned in the activity.

Compile and Test the Application

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

Minimum Requirements
1. Android SDK Tools r6
2. Eclipse or other IDT or Android development environment
3. Android app build target 2.2

5 Mobile Payments Server Integration


URL:
Sandbox - http://sandbox.cardinalcommerce.com/MAPS/smps.asp
Test
- Provided by Merchant Support
Production - Provided by Merchant Support

5.1 Lookup Message Integration


The Lookup message (cmpi_lookup) is responsible for initiating the Mobile Payments Server
payment. The integration point for the Lookup Message is from the checkout page.
The Lookup Message is constructed and sent to the Centinel MAPS for processing. The
Lookup Message requires transaction specific data elements to be formatted on the request
message. Please refer to the Message API section for the complete list of required message
elements.
The Lookup response message is returned from the Centinel MAPS, and the merchant invokes the Thin Client API to reference the response values. In the event that the Enrolled
value is Y the ACSUrl element will contain a fully qualified URL that the consumer should be
redirected to initiate the Mobile Payments Server payment.

5.1.1 cmpi_lookup
Note: An additional request header must be added to this request.
Header Name: "MDN"
Header Value: 10 Digit Phone Number

Request Message

Field Name

Description

Required

MsgType

cmpi_lookup

AN(50)

Version

Application message version identifier.


Current Version - 1.7

AN(3)

ProcessorId

Merchant processor identification code. This value is assigned to the Merchant.

AN(20)

MerchantId

Merchant identification code. This value is assigned to the


Merchant.

AN(50)

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

Field
Definition

TransactionPwd

A password to secure and verify the transaction originated


from merchant represented by the transaction details. The
password value is configured through the merchant profile.
Limit 50 characters

AN(50)

TransactionType

Identifies the Transaction Type used for processing.

AN(4)

N(20)

N(3)

N(20)

N(20)

MPS Mobile Payments Server


Amount

Unformatted total transaction amount without any decimalization.


For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99

CurrencyCode

3 digit numeric, ISO 4217 currency code for the transaction


amount.
Supported Currency Codes
840 - U.S. Dollar

ShippingAmount

Unformatted shipping amount of order without any decimalization.


For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99

TaxAmount

Unformatted tax amount of order without any decimalization.


For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99

OrderNumber

Order Number or transaction identifier from the Merchant


commerce website. Limit 50 characters.

AN(50)

OrderDescription

Brief description of items purchased. Limit 125 characters.

AN(125)

MerchantData

Merchant specified data that will be returned on the response. Limit 255 characters.

AN(255)

OrderChannel

Specifies the order channel where the transaction was initiated

AN(16)

AN(3)

A(1)

ANDROID
IPHONE
WAP

ProductCode

Specifies the product code for the transaction.


PHY - Physical Delivery
CNC - Cash and Carry
DIG - Digital Good
SVC - Service
TBD - Other

TransactionMode

Transaction mode identifier. Identifies the channel the transaction originates from, either Mail Order/Telephone Order,

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

Retail, or E-Commerce.
M - MOTO
R - Retail
S - E-Commerce
P - Mobile Device

Item_Name_X

Name of item purchased.

AN(128)

Item_Desc_X

Brief description of item.

AN(256)

Item_Price_X

Unformatted price of item X transaction amount without any


decimalization.

N(20)

N(20)

For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99


Item_Quantity_X

Number of items purchased.

Item_SKU_X

Item SKU number.

AN(20)

IPAddress

The IP Address of the Consumer. Format


NNN.NNN.NNN.NNN

AN(15)

UserAgent

The exact content of the HTTP user-agent header.

AN(256)

BrowserHeader

The exact content of the HTTP accept header.

AN(256)

Sample Message
<CardinalMPI>
<MsgType>cmpi_lookup</MsgType>
<Version>1.7</Version>
<ProcessorId>100</ProcessorId>
<MerchantId>123456</MerchantId>
<TransactionPwd>passw0rd</TransactionPwd>
<TransactionType>MPS</TransactionType>
<OrderNumber>182397541265</OrderNumber>
<Amount>2000</Amount>
<CurrencyCode>840</CurrencyCode>
<OrderDescription>Order #182397541265</OrderDescription>
<IPAddress>207.48.141.20</IPAddress>
<Item_Name_1>2GB MP3 Player</Item_Name_1>
<Item_Desc_1>The simple MP3 player</Item_Desc_1>
<Item_Price_1>1000</Item_Price_1>
<Item_Quantity_1>1</Item_Quantity_1>
<Item_SKU_1>112233</Item_SKU_1>
<Item_Name_2>100GB Hard Drive</Item_Name_2>
<Item_Desc_2>The New 100GB Hard Drive</Item_Desc_2>
<Item_Quantity_2>1</Item_Quantity_2>
<Item_Price_2>500</Item_Price_2>
<Item_SKU_2>444555666</Item_SKU_2>
</CardinalMPI>

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

10

Response Message
This message is generated as a response to the cmpi_lookup message.
Field Name

Description

Field
Definition

Required

ErrorNo

Application error number(s). A non-zero value represents the


error encountered while attempting to process the message
request.

AN(500)

ErrorDesc

Application error description for the associated error number(s).

AN(500)

TransactionId

Centinel transaction identifier. This value identifies the transaction within the Centinel system.

AN(20)

OrderId

Centinel generated order identifier.

N(16)

MerchantData

Contains the value passed in on the request.

AN(255)

OrderNumber

Contains the value passed in on the request.

AN(50)

Enrolled

Status of availability.

AN(1)

Y - Service is available
U - Service is unavailable.

ACSUrl

The fully qualified URL to redirect the Consumer to complete


the transaction. Available if Enrolled = Y.

AN(2083)

Payload

The encoded payment request generated by the Centinel


platform. Available if Enrolled = Y.

AN(7000)

ReasonCode

Reason Code(s) obtained from the processing network. In


the event of a transaction failure or error, the field will
provide the exact reason codes from the processing network.

AN(50)

ReasonDesc

Reason descriptions obtained from the processing network.


In the event of a transaction failure or error, this field may
contain additional information as to the cause of the error.

AN(256)

Sample Message
<CardinalMPI>
<ErrorNo>0</ErrorNo>
<ErrorDesc></ErrorDesc>
<TransactionId>dGxGw2fAviJEN7fbtQKh</TransactionId>
<OrderId>8086852480936891</OrderId>
<Payload>eNpVUk1TwjAQ/SsM402nSUuKwSC/3gSoH5PL</Payload>
<Enrolled>Y</Enrolled>
<ACSUrl>https://www.somewebsite.com/acs</ACSUrl>
<ReasonCode></ReasonCode>
<ReasonDesc></ReasonDesc>
</CardinalMPI>

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

11

5.2 Authorization Message Integration


The Authorization message (cmpi_authorize) is responsible for authorizing the Express
Checkout transaction. Once authorized, the transaction amount can be captured at a later
point in time.
Note: Merchant can run cmpi_authorization / cmpi_capture pair or run a cmpi_sale

5.2.1 cmpi_authorize
Authorize a transaction for fulfillment at a later time.
Request Message

Field Name

Description

Field
Definition

Required

MsgType

cmpi_authorize

AN(50)

Version

Application message version identifier.


Current Version - 1.7

AN(3)

ProcessorId

Merchant processor identification code. This value is assigned to the Merchant.

AN(20)

MerchantId

Merchant identification code. This value is assigned to the


Merchant.

AN(50)

TransactionPwd

A password to secure and verify the transaction originated


from merchant represented by the transaction details. The
password value is configured through the merchant profile.
Limit 50 characters

AN(50)

TransactionType

Identifies the Transaction Type used for processing.

AN(4)

MPS Mobile Payment Server


OrderId

Centinel generated order identifier. This value should correspond to the OrderId value returned on cmpi_lookup response transaction.

N(16)

Amount

Unformatted total transaction amount without any decimalization.

N(20)

AN(20)

N(20)

For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99


AuthorizationCode

Response Token returned when Consumer is returned back


to merchants TermUrl

TaxAmount

Unformatted tax amount without any decimalization.

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

12

For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99


ShippingAmount

Unformatted shipping amount without any decimalization.

N(20)

N(3)

For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99


CurrencyCode

3 digit numeric, ISO 4217 currency code for the transaction


amount.
Supported Currency Codes
840 - U.S. Dollar

OrderNumber

Order Number from the merchant commerce website.

AN(50)

OrderDescription

Brief description of items purchased, limited to 125 characters.

AN(125)

MerchantData

Merchant specified data that will be returned on the response. Limit 255 characters.

AN(255)

Field
Definition

Required

Sample Message
<CardinalMPI>
<MsgType>cmpi_authorize</MsgType>
<Version>1.7</Version>
<ProcessorId>100</ProcessorId>
<MerchantId>123456</MerchantId>
<TransactionPwd>Passw0rd</TransactionPwd>
<TransactionType>MPS</TransactionType>
<OrderId>8086852480936891</OrderId>
<Amount>500</Amount>
<AuthorizationCode>9oaYfobtuxXOa61Ggi9S</AuthorizationCode>
<CurrencyCode>840</CurrencyCode>
<OrderNumber>182397541265</OrderNumber>
<OrderDescription>Order #182397541265</OrderDescription>
</CardinalMPI>
Response Message
This message is generated in response to the cmpi_authorize message.
Field Name

Description

ErrorNo

Application error number. A non-zero value represents the


error encountered while attempting the process the message
request.

AN(500)

ErrorDesc

Application error description for the associated error number.

AN(500)

StatusCode

Status Result of the transaction.

AN(1)

Y Approved
P Pending
E Error
U Unavailable

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

13

TransactionId

Centinel generated transaction identifier.

AN(20)

OrderId

Centinel generated order identifier.

N(16)

AuthorizationCode

Response Token returned when Consumer is returned back


to merchants TermUrl

AN(6)

ReasonCode

Reason Code(s) obtained from the processing network. In


the event of a transaction failure or error, the field will
provide the exact reason codes from the processing network.

AN(50)

Example : 10002, 10004


ReasonDesc

Reason descriptions obtained from the processing network.


In the event of a transaction failure or error, this field may
contain additional information as to the cause of the error.

AN(256)

OrderNumber

Contains the value passed in on the request.

AN(50)

Sample Message
<CardinalMPI>
<ErrorNo>0</ErrorNo>
<ErrorDesc></ErrorDesc>
<StatusCode>Y</StatusCode>
<TransactionId>LpVA1U7PHIHP7dasV1Qq</TransactionId>
<OrderId>8902810382204711</OrderId>
<AuthorizationCode>AE12FJ</AuthorizationCode>
<ReasonCode>10002,10004</ReasonCode>
<ReasonDesc></ReasonDesc>
<OrderNumber></OrderNumber>
</CardinalMPI>

5.3 Capture Message Integration


The Capture message (cmpi_capture) is responsible for settling funds from a previous authorization.
Note: Merchant can run cmpi_authorization / cmpi_capture pair or run a cmpi_sale

5.3.1 cmpi_capture
Settles an order or previously authorized transaction and obtains payment for either the full
or partial amount of the previous transaction.

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

14

Request Message

Field Name

Description

Field
Definition

Required

MsgType

cmpi_capture

AN(50)

Version

Application message version identifier.

AN(3)

Current Version - 1.7


ProcessorId

Merchant processor identification code. This value is assigned to the Merchant.

AN(20)

MerchantId

Merchant identification code. This value is assigned to the


Merchant.

AN(50)

TransactionPwd

A password to secure and verify the transaction originated


from merchant represented by the transaction details. The
password value is configured through the merchant profile.

AN(50)

TransactionType

Identifies the Transaction Type used for processing.

AN(4)

MPS Mobile Payments Server


OrderId

Centinel generated order identifier. This value should correspond to the OrderId value returned on cmpi_lookup response transaction.

N(16)

AuthorizationCode

Response Token returned when Consumer is returned back


to merchants TermUrl

AN(20)

Amount

Unformatted total transaction amount without any decimalization.

N(20)

N(3)

For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99


CurrencyCode

3 digit numeric, ISO 4217 currency code for the transaction


amount.
Supported Currency Codes
840 - U.S. Dollar

OrderNumber

Order Number from the merchant commerce website.

AN(50)

MerchantData

Merchant specified data that will be returned on the response. Limit 255 characters.

AN(255)

Description

Brief description of items purchased, limited to 125 characters.

AN(125)

Sample Message
<CardinalMPI>

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

15

<MsgType>cmpi_capture</MsgType>
<Version>1.7</Version>
<ProcessorId>100</ProcessorId>
<MerchantId>123456</MerchantId>
<TransactionPwd>Passw0rd</TransactionPwd>
<TransactionType>MPS</TransactionType>
<OrderId>8086852480936891</OrderId>
<Amount>34920</Amount>
<AuthorizationCode>9oaYfobtuxXOa61Ggi9S</AuthorizationCode>
<CurrencyCode>840</CurrencyCode>
<AuthorizationCode>AE12FJ</AuthorizationCode>
<Description>Goods Shipped to Consumer</Description>
</CardinalMPI>
Response Message
This message is generated in response to the cmpi_capture message.
Field Name

Description

Field
Definition

Required

ErrorNo

Application error number. A non-zero value represents the


error encountered while attempting the process the message
request.

AN(500)

ErrorDesc

Application error description for the associated error number.

AN(500)

StatusCode

Status Result of the transaction.

AN(1)

AN(20)

N(16)

AN(50)

Y Approved
P Pending
E Error
U Unavailable

TransactionId

Centinel generated transaction identifier.

OrderId

Centinel generated order identifier.

ReasonCode

Reason Code(s) obtained from the processing network. In


the event of a transaction failure or error, the field will
provide the exact reason codes from the processing network.

Example : 10002, 10004


ReasonDesc

Reason descriptions obtained from the processing network.


In the event of a transaction failure or error, this field may
contain additional information as to the cause of the error.

AN(256)

ProcessorOrderNumber

Processor Order Identifier associated with the order

AN(100)

ProcessorTransactionId

Processor Transaction Identifier associated with the transaction

AN(100)

MerchantData

Contains the value passed in on the request.

AN(255)

OrderNumber

Contains the value passed in on the request.

AN(50)

Sample Message

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

16

<CardinalMPI>
<ErrorNo>0</ErrorNo>
<ErrorDesc></ErrorDesc>
<StatusCode>Y</StatusCode>
<TransactionId>7fDSaySnCmDGCjPglzqX</TransactionId>
<OrderId>8086852480936891</OrderId>
<ReasonCode>10002,10004</ReasonCode>
<ReasonDesc></ReasonDesc>
</CardinalMPI>

5.4 Refund Message Integration


The Refund message (cmpi_refund) is responsible for crediting the consumer some portion
of the original settlement amount. Multiple refunds can be processed against the original capture or sale transaction.

5.4.1 cmpi_refund
Refund specified amount to Consumer. The refund request must reference a transaction
already processed by the system.
Request Message

Field Name

Description

Field
Definition

Required

MsgType

cmpi_refund

AN(50)

Version

Application message version identifier.

AN(3)

Current Version - 1.7


ProcessorId

Merchant processor identification code. This value is assigned to the Merchant.

AN(20)

MerchantId

Merchant identification code. This value is assigned to the


Merchant.

AN(50)

TransactionPwd

A password to secure and verify the transaction originated


from merchant represented by the transaction details. The
password value is configured through the merchant profile.

AN(50)

TransactionType

Identifies the Transaction Type used for processing.

AN(4)

MPS Mobile Payments Server


OrderId

Centinel generated order identifier. This value should correspond to the OrderId value returned on cmpi_lookup response transaction.

N(16)

Amount

Unformatted total transaction amount without any decimalization.

N(20)

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

17

For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99

CurrencyCode

3 digit numeric, ISO 4217 currency code for the transaction


amount.

N(3)

Supported Currency Codes


840 - U.S. Dollar

OrderNumber

Order Number from the merchant commerce website.

AN(50)

MerchantData

Merchant specified data that will be returned on the response. Limit 255 characters.

AN(255)

Reason

Brief reason of refund, limited to 125 characters.

AN(125)

AN(125)

Other - Default
NoInventory
CustomerReturn
GeneralAdjustment
CouldNotShip
DifferentItem
Abandoned
CustomerCancel
PriceError
ProductOutofStock
CustomerAddressIncorrect
Exchange
RiskAssessmentInformationNotValid
CarrierCoverageFailure
TransactionRecord

Description

Brief description of the transaction, limited to 125 characters.

Sample Message
<CardinalMPI>
<MsgType>cmpi_refund</MsgType>
<Version>1.7</Version>
<ProcessorId>100</ProcessorId>
<MerchantId>123456</MerchantId>
<TransactionPwd>Passw0rd</TransactionPwd>
<TransactionType>MPS</TransactionType>
<OrderId>8086852480936891</OrderId>
<Amount>34920</Amount>
<CurrencyCode>840</CurrencyCode>
<Description>Some Goods Returned</Description>
</CardinalMPI>
Response Message

This message is generated in response to the cmpi_refund message.

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

18

Field Name

Description

Field
Definition

Required

ErrorNo

Application error number(s). A non-zero value represents the


error encountered while attempting the process the message
request.

AN(500)

ErrorDesc

Application error description for the associated error number(s).

AN(500)

StatusCode

Status Result of the transaction.

AN(1)

AN(20)

N(16)

Y Approved
P Pending
E Error
U Unavailable

TransactionId

Centinel generated transaction identifier.

OrderId

Centinel generated order identifier.

ReasonCode

Reason Code(s) obtained from the processing network. In


the event of a transaction failure or error, the field will
provide the exact reason codes from the processing network.
Example : 10002, 10004

AN(50)

ReasonDesc

Reason descriptions obtained from the processing network.


In the event of a transaction failure or error, this field may
contain additional information as to the cause of the error.

AN(256)

ProcessorOrderNumber

Processor Order Identifier associated with the order

AN(100)

ProcessorTransactionId

Processor Transaction Identifier associated with the transaction

AN(100)

MerchantData

Contains the value passed in on the request.

AN(255)

OrderNumber

Contains the value passed in on the request.

AN(50)

Sample Message
<CardinalMPI>
<ErrorDesc></ErrorDesc>
<ErrorNo>0</ErrorNo>
<StatusCode>Y</StatusCode>
<TransactionId>7fDSaySnCmDGCjPglzqX</TransactionId>
<OrderId>8902810382204711</OrderId>
<ReasonCode></ReasonCode>
<ReasonDesc></ReasonDesc>
</CardinalMPI>

5.5 Sale Message Integration


The Sale message (cmpi_sale) is responsible for authorizing and settling funds within the

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

19

same transaction.
Note: Merchant can run cmpi_authorization / cmpi_capture pair or run a cmpi_sale

5.5.1 cmpi_sale
The Sale transaction performs an authorization and capture in a single step. This type of
transaction is typically used when the merchant delivers the product at the time of the sale.
Request Message

Field Name

Description

Field
Definition

Required

MsgType

cmpi_sale

AN(50)

Version

Application message version identifier.

AN(3)

Current Version - 1.7


ProcessorId

Merchant processor identification code. This value is assigned to the Merchant.

AN(20)

MerchantId

Merchant identification code. This value is assigned to the


Merchant.

AN(50)

TransactionPwd

A password to secure and verify the transaction originated


from merchant represented by the transaction details. The
password value is configured through the merchant profile.

AN(50)

TransactionType

Identifies the Transaction Type used for processing.

AN(4)

MPS Mobile Payments Server


OrderId

Centinel generated order identifier. This value should correspond to the OrderId value returned on cmpi_lookup response transaction.

N(16)

Amount

Value represents the transaction amount without any decimalization or punctuation.

N(20)

AN(20)

N(20)

N(20)

Examples $123.67 - 12367, $1,500.00 - 150000


AuthorizationCode

Response Token returned when Consumer is returned back


to merchants TermUrl

TaxAmount

Unformatted tax amount without any decimalization.


For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99

ShippingAmount

Unformatted shipping amount without any decimalization.


For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

20

CurrencyCode

3 digit numeric, ISO 4217 currency code for the transaction


amount.

N(3)

Supported Currency Codes


840 - U.S. Dollar

OrderNumber

Order Number from the merchant commerce website.

AN(50)

OrderDescription

Brief description of items purchased, limited to 125 characters.

AN(125)

MerchantData

Merchant specified data that will be returned on the response. Limit 255 characters.

AN(255)

Field
Definition

Required

Sample Message
<CardinalMPI>
<MsgType>cmpi_sale</MsgType>
<Version>1.7</Version>
<ProcessorId>100</ProcessorId>
<MerchantId>123456</MerchantId>
<TransactionPwd>Passw0rd</TransactionPwd>
<TransactionType>MPS</TransactionType>
<OrderId>8086852480936891</OrderId>
<OrderNumber>182397541265</OrderNumber>
<OrderDescription>Order #182397541265</OrderDescription>
<Amount>56999</Amount>
<AuthorizationCode>9oaYfobtuxXOa61Ggi9S</AuthorizationCode>
<CurrencyCode>840</CurrencyCode>
</CardinalMPI>
Response Message

This message is generated in response to the cmpi_sale message.


Field Name

Description

ErrorNo

Application error number(s). A non-zero value represents the


error encountered while attempting the process the message
request.

AN(500)

ErrorDesc

Application error description for the associated error number(s).

AN(500)

StatusCode

Status Result of the transaction.

AN(1)

AN(20)

Y Approved
P Pending
E Error
U Unavailable

TransactionId

Centinel generated transaction identifier.

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

21

OrderId

Centinel generated order identifier.

N(16)

AuthorizationCode

Authorization identifier returned from the processing network.

AN(6)

ReasonCode

Reason Code(s) obtained from the processing network. In


the event of a transaction failure or error, the field will
provide the exact reason codes from the processing network.
Example : 10002, 10004

AN(50)

ReasonDesc

Reason descriptions obtained from the processing network.


In the event of a transaction failure or error, this field may
contain additional information as to the cause of the error.

AN(256)

ProcessorOrderNumber

Processor Order Identifier associated with the order

AN(100)

ProcessorTransactionId

Processor Transaction Identifier associated with the transaction

AN(100)

MerchantData

Contains the value passed in on the request.

AN(255)

OrderNumber

Contains the value passed in on the request.

AN(50)

AVSResult

AVS result code returned from processing network.

AN(2)

AN(2)

A Matched - Address Only (No Postal Code)


E Error
N None Matched
P Not Applicable
R Retry, system unavailable or timed out
S Service Not Supported
U Unavailable
W Matched - Nine-Digit Postal Code (No Address)
X Matched - Nine-Digit Postal Code and Address
Y Matched - Five-Digit Postal Code and Address
Z Matched - Five-Digit Postal Code (No Address)

CardCodeResult

Indicates the results of Card Code (CVV2,CVC2,CID) verification.


E Error
N No Match
P Not Applicable
R Retry, system unavailable or timed out
S Service Not Supported
U Unavailable
Y Match

Sample Message
<CardinalMPI>
<ErrorNo>0</ErrorNo>
<ErrorDesc></ErrorDesc>
<StatusCode>Y</StatusCode>
<AVSResult>IN</AVSResult>
<CardCodeResult>Y</CardCodeResult>
<TransactionId>7fDSaySnCmDGCjPglzqX</TransactionId>
<OrderId>8902810382204711</OrderId>
<AuthorizationCode>AE12FJ</AuthorizationCode>

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

22

<ReasonCode>10002,10004</ReasonCode>
<ReasonDesc></ReasonDesc>
</CardinalMPI>

5.6 Add Merchant Order Number Message Integration


The Add Merchant Order Number message (cmpi_add_order_number) updates the merchants front end order number with their backend order number in the Centinel system. This
command does not impact the order's fulfillment state.

5.6.1 cmpi_add_order_number
This message updates the merchants front end order number with their backend order number in the Centinel system. The merchants original order number is peristed and searchable.
Request Message

Field Name

Description

Field
Definition

Required

MsgType

cmpi_add_order_number

AN(50)

Version

Application message version identifier. "1.7".

AN(3)

TransactionType

Identifies the Transaction Type used for processing.

AN(4)

MPS Mobile Payments Server

ProcessorId

Merchant processor identification code. This value is assigned to the Merchant.

AN(20)

MerchantId

Merchant identification code. This value is assigned to the


Merchant.

AN(50)

TransactionPwd

A password to secure and verify the transaction originated


from merchant represented by the transaction details. The
password value is configured through the merchant profile.

AN(50)

OrderId

Centinel generated order identifier. Represents the value returned on the Lookup Response message.

AN(16)

OrderNumber

Contains the order number that you have assigned to an order.

AN(255)

MerchantData

Merchant specified data that will be returned on the response. Limit 255 characters.

AN(255)

Sample Message
<CardinalMPI>
<MsgType>cmpi_add_order_number</MsgType>

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

23

<Version>1.7</Version>
<TransactionType>MPS</TransactionType>
<ProcessorId>100</ProcessorId>
<MerchantId>123456</MerchantId>
<TransactionPwd>Passw0rd</TransactionPwd>
<OrderId>8604929789808576</OrderId>
<OrderNumber>P6502-53-7861SBJD</OrderNumber>
</CardinalMPI>
Response Message

This message is generated in response to the cmpi_add_order_number message.


Field Name

Description

Field
Definition

Required

ErrorNo

Application error number(s). A non-zero value represents the


error encountered while attempting the process the message
request.

AN(500)

ErrorDesc

Application error description for the associated error number(s).

AN(500)

StatusCode

Status Result of the transaction.

AN(2)

Y Approved
N Declined
E Error
U Unavailable
TransactionId

Centinel generated transaction identifier.

AN(20)

OrderId

Centinel generated order identifier.

AN(16)

OrderNumber

Contains the value passed in on the request.

AN(50)

MerchantData

Contains the value passed in on the request.

AN(255)

Sample Message
<CardinalMPI>
<ErrorNo>0</ErrorNo>
<ErrorDesc></ErrorDesc>
<StatusCode>Y</StatusCode>
<TransactionId>7fDSaySnCmDGCjPglzqX</TransactionId>
<OrderId>8604929789808576</OrderId>
</CardinalMPI>

5.7 Status Message Integration


Centinel monitors each Merchant's activity to ensure that the Merchant system is in sync with
the order and payment activity within the payment processor. In the event that one of the following events is encountered, the Centinel platform will send a Notification to the Merchant.

ChargeNotification

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

24

The Notification POST is dependent on the Merchant Profile configuration to enable or disable Notification processing. If Notification processing is enabled and one of the scenarios is
encountered, a POST similar to the following will be sent to the Notification URL configured
within the Merchant's profile.
NotificationId=CCCDEIGDDDILGCGKO05M8KU9GH0KJA
MerchantId=123456
ProcessorId=100
TransactionType=MPS

Once the Merchant website receives the Notification Post, the cmpi_payment_status message should be invoked using the NotificationId to retrieve the transaction details from the
Centinel platform. Additional information regarding the processing of the Notification POST is
available within the Thin Client integration samples. The samples include all the code necessary to process the Notification POST and the cmpi_payment_status messages.
Using the samples the Notification handling can be quickly integrated to an existing ecommerce platform. Once the Notification is received, the Merchant will be able to make the determination to ship the goods to the consumer.

5.7.1 cmpi_payment_status
This message is used to request the status of the transaction referenced by the NotificationId
value. Centinel will notify the Merchant by Posting a request to the Notification Location configured within the Merchant's Centinel account. The request includes the NotificationId value
for use on the cmpi_payment_status message.
Request Message
Field Name

Description

Field
Definition

Required

MsgType

cmpi_payment_status

AN(50)

Version

Application message version identifier.

AN(3)

Current Version - 1.7


ProcessorId

Merchant processor identification code. This value is assigned to the Merchant.

AN(20)

MerchantId

Merchant identification code. This value is assigned to the


Merchant.

AN(50)

TransactionPwd

A password to secure and verify the transaction originated


from Merchant represented by the transaction details. The
password value is configured through the Merchant profile.

AN(50)

TransactionType

Identifies the Transaction Type used for processing.

AN(4)

AN(100)

MPS Mobile Payments Server


NotificationId

Notification Id. This value is required to be passed on the

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

25

cmpi_payment_status message to identify the corresponding


Moneybookers transaction. This value is provided through
the HTTP POST Notification sent to the Merchant.

Sample Message
<CardinalMPI>
<MsgType>cmpi_payment_status</MsgType>
<Version>1.7</Version>
<ProcessorId>100</ProcessorId>
<MerchantId>123456</MerchantId>
<TransactionPwd>Passw0rd</TransactionPwd>
<TransactionType>MPS</TransactionType>
<NotificationId>CCCDDCEHFHDJDGHCTBY3T54G4D72MT</NotificationId>
</CardinalMPI>
Response Message

This message is generated in response to the cmpi_payment_status message:


Field Name

Description

Required

ErrorNo

Application error number(s). A non-zero value represents the error encountered while attempting the process the message request.

ErrorDesc

Application error description for the associated error number(s).

ReasonDesc

Reason Description obtained from Processor. In the event of a transaction


failure or error, the field will provide the exact reason codes from the Processor.

ReasonCode

Reason Code(s) obtained from the processing network. In the event of a


transaction failure or error, the field will provide the exact reason codes from
the processing network.

Example : 10002, 10004


StatusCode

Status Result of the transaction.

Y Transaction Approved
N Transaction Declined
E Transaction resulted in Error
U Payment brand is unavailable
TransactionId

MAX generated transaction identifier.

OrderId

MAX generated order identifier.

OrderDescription

Brief description of items purchased. Limit 125 characters.

NotificationType

Notification type identifier.

ChargeNotification

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

26

OrderNumber

Order Number from the merchant ecommerce website.

ShippingAmount

Value represents the shipping amount with decimalization.

Examples $123.67 - 123.67, $1,500.00 - 1500.00


TaxAmount

Value represents the tax amount with any decimalization.

Example $12.67 - 12.67


CurrencyCode

3 digit numeric, ISO 4217 currency code for the transaction amount. Complete list of ISO 4217 values is included in the Appendix.

840 - U.S. Dollar


MobilePhone

Mobile Phone Number

EMail

Email address

BillingFirstName

Consumer's first name.

BillingLastName

Consumer's last name.

BillingCompanyName

Consumer's company name.

BillingPhone

Consumer's billing phone number.

BillingAddress1

Address Information.

BillingAddress2

Address Information.

BillingCity

Consumer's city of the billing address.

BillingState

Consumer's state or province of the billing address.

BillingPostalCode

Address postal code. Limit 10 characters.

BillingCountryCode

Consumer's country code of the billing address. Alpha ISO 3166, for example US - United States, ZA - South Africa. Complete list of ISO 3166 values is included in the Appendix.

ShippingFirstName

Consumer's first name.

ShippingLastName

Consumer's last name.

ShippingCompanyName

Consumer's company name.

ShippingPhone

Consumer's shipping phone number.

ShippingAddress1

Address Information.

ShippingAddress2

Address Information.

ShippingCity

Consumer's city in the shipping address.

ShippingState

Consumer's state or province of the shipping address.

ShippingPostalCode

Address postal code.

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

27

ShippingCountryCode

Consumer's country code of the shipping address. Alpha ISO 3166, for example US - United States, ZA - South Africa. Complete list of ISO 3166 values is included in the Appendix.

Item_Name_X

Name of item purchased.

Item_Sku_X

Item SKU number.

Item_Desc_X

Brief description of item.

Item_Price_X

Unformatted price of item X transaction amount without any decimalization.

For example, $100.00 = 10000, $123.67 = 12367, $.99 = 99


Item_Quantity_X

Number of ptems purchased.

MerchantData

Merchant specified data that will be returned on the response. Limit 255
characters.

Sample Message
<CardinalMPI>
<ErrorDesc></ErrorDesc>
<ErrorNo>0</ErrorNo>
<TransactionId>7fDSaySnCmDGCjPglzqX</TransactionId>
<OrderId>8604929789808576</OrderId>
<ProcessorOrderNumber>12345678901234567890</ProcessorOrderNumber>
<NotificationType>OrderStateChangeNotification</NotificationType>
<ReasonCode></ReasonCode>
<ReasonDesc></ReasonDesc>
<StatusCode>Y</StatusCode>
<StatusDescription>Completed</StatusDescription>
<PaymentType>MPS</PaymentType>
<TransactionType>245</TransactionType>
<CurrencyCode>840</CurrencyCode>
<OrderNumber>182397541265</OrderNumber>
<OrderDescription>182397541265</OrderDescription>
<Amount>34920</Amount>
<EMail>mary.smith@email.com</EMail>
<BillingFirstName>Marylt;/BillingFirstName>
<BillingLastName>Smithlt;/BillingLastName>
<BillingAddress1>6362 Main Street</BillingAddress1>
<BillingAddress2></BillingAddress2>
<BillingCity>Cleveland</BillingCity>
<BillingState>OH</BillingState>
<BillingPostalCode>44124</BillingPostalCode>
<BillingCountryCode>US</BillingCountryCode>
<ShippingFirstame>Mary</ShippingFirstName>
<ShippingLastName>Smithlt;/ShippingLastName>
<ShippingAddress1>6362 Main Street</ShippingAddress1>
<ShippingAddress2></ShippingAddress2>
<ShippingCity>Cleveland</ShippingCity>
<ShippingState>OH</ShippingState>
<ShippingPostalCode>44124</ShippingPostalCode>
<ShippingCountryCode>US</ShippingCountryCode>
<Item_Name_1>2GB MP3 Player</Item_Name_1>
<Item_Desc_1>The simple MP3 player</Item_Desc_1>
<Item_Price_1>1000</Item_Price_1>
<Item_Quantity_1>1</Item_Quantity_1>

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

28

<Item_SKU_1>112233</Item_SKU_1>
<Item_Name_2>100GB Hard Drive</Item_Name_2>
<Item_Desc_2>The New 100GB Hard Drive</Item_Desc_2>
<Item_Quantity_2>1</Item_Quantity_2>
<Item_Price_2>500</Item_Price_2>
<Item_SKU_2>444555666</Item_SKU_2>
</CardinalMPI>

Android Application Integration Guide for Sprint Mobile Wallet (November 9, 2010)

29

You might also like