centinel.integrationguide.smw android app

29
mobile commerce ® Sprint Mobile Wallet Android Application Integration Guide Version 1.0.0

Upload: rfian123

Post on 13-Jul-2016

37 views

Category:

Documents


3 download

DESCRIPTION

Sprint Centinel integration Guide Android

TRANSCRIPT

Page 1: Centinel.integrationGuide.smw Android App

m o b i l e c o m m e r c e

®

Sprint Mobile WalletAndroid Application

Integration GuideVersion 1.0.0

Page 2: Centinel.integrationGuide.smw Android App

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, orconverted to any electronic or machine readable form without prior written consent ofCardinalCommerce Corporation.

Contact Information

CardinalCommerce Corporation6119 Heisley Rd.Mentor, OH 44060USAwww.cardinalcommerce.com

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

Page 3: Centinel.integrationGuide.smw Android App

TABLE OF CONTENTS1 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)3

Page 4: Centinel.integrationGuide.smw Android App

1 OverviewThe Sprint Mobile Wallet provides mobile application developers a way to integrate the Car-dinal MAX Mobile Payments Server [MPS]. Sprint Mobile Wallet allows for purchases to becarried out within the application and provide a friendlier user experience as compared to dir-ecting 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-clickpayment options on a user's mobile phone.

This document provides the sequence flow, integration specifications, sample messages andtest server credentials required by mobile application developers to integrate with the plat-form.

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

Page 5: Centinel.integrationGuide.smw Android App

2 Transaction Sequence

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

Page 6: Centinel.integrationGuide.smw Android App

3 Transaction APISupported 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 pay-ment for either the full or partial amount of the previous transaction.

cmpi_refund This message performs a transaction refund. The message supportsFull and Partial refund transactions.

cmpi_sale The Sale transaction performs an Authorization and Capture in asingle step. This type of transaction is typically used when the mer-chant delivers the product at the time of the sale.

cmpi_add_order_number This message updates the merchants front end order number withtheir backend order number in the Centinel system.

cmpi_payment_status This message provides post payment status updates to the Mer-chant.

Note: Note that all API elements are case sensitive.

3.1 Message VersionsThe 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 IntegrationSteps

1. Download SMWCheckout.jar Android Library version latest .099 from the SMWOTA 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)6

Page 7: Centinel.integrationGuide.smw Android App

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

4 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 MeaningsTRANSACTION_PROCESSING_FULL - Android Client will call lookup, subscriber authentication,payment selection, cmpi_saleTRANSACTION_PROCESSING_SUBSCRIBER - Android Client will call subscriber authentication,payment selection. Requires requestToken to be set in the transactionCache. responseToken willbe returned in the activity.

5 Compile and Test the Application

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

Page 8: Centinel.integrationGuide.smw Android App

Minimum Requirements1. Android SDK Tools r6

2. Eclipse or other IDT or Android development environment

3. Android app build target 2.2

5 Mobile Payments Server IntegrationURL:Sandbox - http://sandbox.cardinalcommerce.com/MAPS/smps.aspTest - Provided by Merchant SupportProduction - Provided by Merchant Support

5.1 Lookup Message IntegrationThe Lookup message (cmpi_lookup) is responsible for initiating the Mobile Payments Serverpayment. 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. TheLookup Message requires transaction specific data elements to be formatted on the requestmessage. Please refer to the Message API section for the complete list of required messageelements.

The Lookup response message is returned from the Centinel MAPS, and the merchant in-vokes the Thin Client API to reference the response values. In the event that the Enrolledvalue is Y the ACSUrl element will contain a fully qualified URL that the consumer should beredirected 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 FieldDefinition

Required

MsgType cmpi_lookup AN(50) Y

Version Application message version identifier.Current Version - 1.7

AN(3) Y

ProcessorId Merchant processor identification code. This value is as-signed to the Merchant.

AN(20) Y

MerchantId Merchant identification code. This value is assigned to theMerchant.

AN(50) Y

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

Page 9: Centinel.integrationGuide.smw Android App

TransactionPwd A password to secure and verify the transaction originatedfrom merchant represented by the transaction details. Thepassword value is configured through the merchant profile.Limit 50 characters

AN(50) Y

TransactionType Identifies the Transaction Type used for processing.

MPS Mobile Payments Server

AN(4) Y

Amount Unformatted total transaction amount without any decimaliz-ation.

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

N(20) Y

CurrencyCode 3 digit numeric, ISO 4217 currency code for the transactionamount.

Supported Currency Codes

840 - U.S. Dollar

N(3) Y

ShippingAmount Unformatted shipping amount of order without any decimaliz-ation.

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

N(20) N

TaxAmount Unformatted tax amount of order without any decimalization.

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

N(20) N

OrderNumber Order Number or transaction identifier from the Merchantcommerce website. Limit 50 characters.

AN(50) Y

OrderDescription Brief description of items purchased. Limit 125 characters. AN(125) N

MerchantData Merchant specified data that will be returned on the re-sponse. Limit 255 characters.

AN(255) N

OrderChannel Specifies the order channel where the transaction was initi-ated

ANDROIDIPHONEWAP

AN(16) N

ProductCode Specifies the product code for the transaction.

PHY - Physical DeliveryCNC - Cash and CarryDIG - Digital GoodSVC - ServiceTBD - Other

AN(3) N

TransactionMode Transaction mode identifier. Identifies the channel the trans-action originates from, either Mail Order/Telephone Order,

A(1) N

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

Page 10: Centinel.integrationGuide.smw Android App

Retail, or E-Commerce.

M - MOTOR - RetailS - E-CommerceP - Mobile Device

Item_Name_X Name of item purchased. AN(128) Y

Item_Desc_X Brief description of item. AN(256) Y

Item_Price_X Unformatted price of item X transaction amount without anydecimalization.

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

N(20) Y

Item_Quantity_X Number of items purchased. N(20) Y

Item_SKU_X Item SKU number. AN(20) Y

IPAddress The IP Address of the Consumer. FormatNNN.NNN.NNN.NNN

AN(15) N

UserAgent The exact content of the HTTP user-agent header. AN(256) N

BrowserHeader The exact content of the HTTP accept header. AN(256) N

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

Page 11: Centinel.integrationGuide.smw Android App

Response Message

This message is generated as a response to the cmpi_lookup message.

Field Name Description FieldDefinition

Required

ErrorNo Application error number(s). A non-zero value represents theerror encountered while attempting to process the messagerequest.

AN(500) Y

ErrorDesc Application error description for the associated error num-ber(s).

AN(500) Y

TransactionId Centinel transaction identifier. This value identifies the trans-action within the Centinel system.

AN(20) Y

OrderId Centinel generated order identifier. N(16) N

MerchantData Contains the value passed in on the request. AN(255) N

OrderNumber Contains the value passed in on the request. AN(50) N

Enrolled Status of availability.

Y - Service is availableU - Service is unavailable.

AN(1) Y

ACSUrl The fully qualified URL to redirect the Consumer to completethe transaction. Available if Enrolled = Y.

AN(2083) N

Payload The encoded payment request generated by the Centinelplatform. Available if Enrolled = Y.

AN(7000) N

ReasonCode Reason Code(s) obtained from the processing network. Inthe event of a transaction failure or error, the field willprovide the exact reason codes from the processing network.

AN(50) N

ReasonDesc Reason descriptions obtained from the processing network.In the event of a transaction failure or error, this field maycontain additional information as to the cause of the error.

AN(256) N

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

Page 12: Centinel.integrationGuide.smw Android App

5.2 Authorization Message IntegrationThe Authorization message (cmpi_authorize) is responsible for authorizing the ExpressCheckout transaction. Once authorized, the transaction amount can be captured at a laterpoint 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 FieldDefinition

Required

MsgType cmpi_authorize AN(50) Y

Version Application message version identifier.Current Version - 1.7

AN(3) Y

ProcessorId Merchant processor identification code. This value is as-signed to the Merchant.

AN(20) Y

MerchantId Merchant identification code. This value is assigned to theMerchant.

AN(50) Y

TransactionPwd A password to secure and verify the transaction originatedfrom merchant represented by the transaction details. Thepassword value is configured through the merchant profile.Limit 50 characters

AN(50) Y

TransactionType Identifies the Transaction Type used for processing.

MPS Mobile Payment Server

AN(4) Y

OrderId Centinel generated order identifier. This value should corres-pond to the OrderId value returned on cmpi_lookup re-sponse transaction.

N(16) Y

Amount Unformatted total transaction amount without any decimaliz-ation.

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

N(20) Y

AuthorizationCode Response Token returned when Consumer is returned backto merchants TermUrl

AN(20) N

TaxAmount Unformatted tax amount without any decimalization. N(20) N

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

Page 13: Centinel.integrationGuide.smw Android App

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

N(20) N

CurrencyCode 3 digit numeric, ISO 4217 currency code for the transactionamount.

Supported Currency Codes

840 - U.S. Dollar

N(3) Y

OrderNumber Order Number from the merchant commerce website. AN(50) Y

OrderDescription Brief description of items purchased, limited to 125 charac-ters.

AN(125) N

MerchantData Merchant specified data that will be returned on the re-sponse. Limit 255 characters.

AN(255) N

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 FieldDefinition

Required

ErrorNo Application error number. A non-zero value represents theerror encountered while attempting the process the messagerequest.

AN(500) Y

ErrorDesc Application error description for the associated error number. AN(500) Y

StatusCode Status Result of the transaction.

Y ApprovedP PendingE ErrorU Unavailable

AN(1) Y

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

Page 14: Centinel.integrationGuide.smw Android App

TransactionId Centinel generated transaction identifier. AN(20) Y

OrderId Centinel generated order identifier. N(16) N

AuthorizationCode Response Token returned when Consumer is returned backto merchants TermUrl

AN(6) N

ReasonCode Reason Code(s) obtained from the processing network. Inthe event of a transaction failure or error, the field willprovide the exact reason codes from the processing network.Example : 10002, 10004

AN(50) N

ReasonDesc Reason descriptions obtained from the processing network.In the event of a transaction failure or error, this field maycontain additional information as to the cause of the error.

AN(256) N

OrderNumber Contains the value passed in on the request. AN(50) N

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 IntegrationThe Capture message (cmpi_capture) is responsible for settling funds from a previous au-thorization.

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 fullor partial amount of the previous transaction.

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

Page 15: Centinel.integrationGuide.smw Android App

Request Message

Field Name Description FieldDefinition

Required

MsgType cmpi_capture AN(50) Y

Version Application message version identifier.

Current Version - 1.7

AN(3) Y

ProcessorId Merchant processor identification code. This value is as-signed to the Merchant.

AN(20) Y

MerchantId Merchant identification code. This value is assigned to theMerchant.

AN(50) Y

TransactionPwd A password to secure and verify the transaction originatedfrom merchant represented by the transaction details. Thepassword value is configured through the merchant profile.

AN(50) Y

TransactionType Identifies the Transaction Type used for processing.

MPS Mobile Payments Server

AN(4) Y

OrderId Centinel generated order identifier. This value should corres-pond to the OrderId value returned on cmpi_lookup re-sponse transaction.

N(16) Y

AuthorizationCode Response Token returned when Consumer is returned backto merchants TermUrl

AN(20) N

Amount Unformatted total transaction amount without any decimaliz-ation.

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

N(20) Y

CurrencyCode 3 digit numeric, ISO 4217 currency code for the transactionamount.

Supported Currency Codes

840 - U.S. Dollar

N(3) Y

OrderNumber Order Number from the merchant commerce website. AN(50) N

MerchantData Merchant specified data that will be returned on the re-sponse. Limit 255 characters.

AN(255) N

Description Brief description of items purchased, limited to 125 charac-ters.

AN(125) N

Sample Message

<CardinalMPI>

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

Page 16: Centinel.integrationGuide.smw Android App

<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 FieldDefinition

Required

ErrorNo Application error number. A non-zero value represents theerror encountered while attempting the process the messagerequest.

AN(500) Y

ErrorDesc Application error description for the associated error number. AN(500) Y

StatusCode Status Result of the transaction.

Y ApprovedP PendingE ErrorU Unavailable

AN(1) Y

TransactionId Centinel generated transaction identifier. AN(20) Y

OrderId Centinel generated order identifier. N(16) N

ReasonCode Reason Code(s) obtained from the processing network. Inthe event of a transaction failure or error, the field willprovide the exact reason codes from the processing network.Example : 10002, 10004

AN(50) N

ReasonDesc Reason descriptions obtained from the processing network.In the event of a transaction failure or error, this field maycontain additional information as to the cause of the error.

AN(256) N

ProcessorOrderNumber Processor Order Identifier associated with the order AN(100) N

ProcessorTransactionId Processor Transaction Identifier associated with the transac-tion

AN(100) N

MerchantData Contains the value passed in on the request. AN(255) N

OrderNumber Contains the value passed in on the request. AN(50) N

Sample Message

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

Page 17: Centinel.integrationGuide.smw Android App

<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 IntegrationThe Refund message (cmpi_refund) is responsible for crediting the consumer some portionof the original settlement amount. Multiple refunds can be processed against the original cap-ture or sale transaction.

5.4.1 cmpi_refund

Refund specified amount to Consumer. The refund request must reference a transactionalready processed by the system.

Request Message

Field Name Description FieldDefinition

Required

MsgType cmpi_refund AN(50) Y

Version Application message version identifier.

Current Version - 1.7

AN(3) Y

ProcessorId Merchant processor identification code. This value is as-signed to the Merchant.

AN(20) Y

MerchantId Merchant identification code. This value is assigned to theMerchant.

AN(50) Y

TransactionPwd A password to secure and verify the transaction originatedfrom merchant represented by the transaction details. Thepassword value is configured through the merchant profile.

AN(50) Y

TransactionType Identifies the Transaction Type used for processing.

MPS Mobile Payments Server

AN(4) Y

OrderId Centinel generated order identifier. This value should corres-pond to the OrderId value returned on cmpi_lookup re-sponse transaction.

N(16) Y

Amount Unformatted total transaction amount without any decimaliz-ation.

N(20) Y

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

Page 18: Centinel.integrationGuide.smw Android App

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

CurrencyCode 3 digit numeric, ISO 4217 currency code for the transactionamount.

Supported Currency Codes

840 - U.S. Dollar

N(3) Y

OrderNumber Order Number from the merchant commerce website. AN(50) N

MerchantData Merchant specified data that will be returned on the re-sponse. Limit 255 characters.

AN(255) N

Reason Brief reason of refund, limited to 125 characters.

Other - DefaultNoInventoryCustomerReturnGeneralAdjustmentCouldNotShipDifferentItemAbandonedCustomerCancelPriceErrorProductOutofStockCustomerAddressIncorrectExchangeRiskAssessmentInformationNotValidCarrierCoverageFailureTransactionRecord

AN(125) N

Description Brief description of the transaction, limited to 125 characters. AN(125) N

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

Page 19: Centinel.integrationGuide.smw Android App

Field Name Description FieldDefinition

Required

ErrorNo Application error number(s). A non-zero value represents theerror encountered while attempting the process the messagerequest.

AN(500) Y

ErrorDesc Application error description for the associated error num-ber(s).

AN(500) Y

StatusCode Status Result of the transaction.

Y ApprovedP PendingE ErrorU Unavailable

AN(1) Y

TransactionId Centinel generated transaction identifier. AN(20) Y

OrderId Centinel generated order identifier. N(16) N

ReasonCode Reason Code(s) obtained from the processing network. Inthe event of a transaction failure or error, the field willprovide the exact reason codes from the processing network.Example : 10002, 10004

AN(50) N

ReasonDesc Reason descriptions obtained from the processing network.In the event of a transaction failure or error, this field maycontain additional information as to the cause of the error.

AN(256) N

ProcessorOrderNumber Processor Order Identifier associated with the order AN(100) N

ProcessorTransactionId Processor Transaction Identifier associated with the transac-tion

AN(100) N

MerchantData Contains the value passed in on the request. AN(255) N

OrderNumber Contains the value passed in on the request. AN(50) N

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 IntegrationThe 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

Page 20: Centinel.integrationGuide.smw Android App

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 oftransaction is typically used when the merchant delivers the product at the time of the sale.

Request Message

Field Name Description FieldDefinition

Required

MsgType cmpi_sale AN(50) Y

Version Application message version identifier.

Current Version - 1.7

AN(3) Y

ProcessorId Merchant processor identification code. This value is as-signed to the Merchant.

AN(20) Y

MerchantId Merchant identification code. This value is assigned to theMerchant.

AN(50) Y

TransactionPwd A password to secure and verify the transaction originatedfrom merchant represented by the transaction details. Thepassword value is configured through the merchant profile.

AN(50) Y

TransactionType Identifies the Transaction Type used for processing.

MPS Mobile Payments Server

AN(4) Y

OrderId Centinel generated order identifier. This value should corres-pond to the OrderId value returned on cmpi_lookup re-sponse transaction.

N(16) Y

Amount Value represents the transaction amount without any decim-alization or punctuation.

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

N(20) Y

AuthorizationCode Response Token returned when Consumer is returned backto merchants TermUrl

AN(20) N

TaxAmount Unformatted tax amount without any decimalization.

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

N(20) N

ShippingAmount Unformatted shipping amount without any decimalization.

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

N(20) N

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

Page 21: Centinel.integrationGuide.smw Android App

CurrencyCode 3 digit numeric, ISO 4217 currency code for the transactionamount.

Supported Currency Codes

840 - U.S. Dollar

N(3) Y

OrderNumber Order Number from the merchant commerce website. AN(50) Y

OrderDescription Brief description of items purchased, limited to 125 charac-ters.

AN(125) N

MerchantData Merchant specified data that will be returned on the re-sponse. Limit 255 characters.

AN(255) N

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 FieldDefinition

Required

ErrorNo Application error number(s). A non-zero value represents theerror encountered while attempting the process the messagerequest.

AN(500) Y

ErrorDesc Application error description for the associated error num-ber(s).

AN(500) Y

StatusCode Status Result of the transaction.

Y ApprovedP PendingE ErrorU Unavailable

AN(1) Y

TransactionId Centinel generated transaction identifier. AN(20) Y

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

Page 22: Centinel.integrationGuide.smw Android App

OrderId Centinel generated order identifier. N(16) N

AuthorizationCode Authorization identifier returned from the processing network. AN(6) N

ReasonCode Reason Code(s) obtained from the processing network. Inthe event of a transaction failure or error, the field willprovide the exact reason codes from the processing network.Example : 10002, 10004

AN(50) N

ReasonDesc Reason descriptions obtained from the processing network.In the event of a transaction failure or error, this field maycontain additional information as to the cause of the error.

AN(256) N

ProcessorOrderNumber Processor Order Identifier associated with the order AN(100) N

ProcessorTransactionId Processor Transaction Identifier associated with the transac-tion

AN(100) N

MerchantData Contains the value passed in on the request. AN(255) N

OrderNumber Contains the value passed in on the request. AN(50) N

AVSResult AVS result code returned from processing network.

A Matched - Address Only (No Postal Code)E ErrorN None MatchedP Not ApplicableR Retry, system unavailable or timed outS Service Not SupportedU UnavailableW Matched - Nine-Digit Postal Code (No Address)X Matched - Nine-Digit Postal Code and AddressY Matched - Five-Digit Postal Code and AddressZ Matched - Five-Digit Postal Code (No Address)

AN(2) N

CardCodeResult Indicates the results of Card Code (CVV2,CVC2,CID) verific-ation.

E ErrorN No MatchP Not ApplicableR Retry, system unavailable or timed outS Service Not SupportedU UnavailableY Match

AN(2) Y

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

Page 23: Centinel.integrationGuide.smw Android App

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

</CardinalMPI>

5.6 Add Merchant Order Number Message IntegrationThe Add Merchant Order Number message (cmpi_add_order_number) updates the mer-chants front end order number with their backend order number in the Centinel system. Thiscommand 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 num-ber in the Centinel system. The merchants original order number is peristed and searchable.

Request Message

Field Name Description FieldDefinition

Required

MsgType cmpi_add_order_number AN(50) Y

Version Application message version identifier. "1.7". AN(3) Y

TransactionType Identifies the Transaction Type used for processing.

MPS Mobile Payments Server

AN(4) Y

ProcessorId Merchant processor identification code. This value is as-signed to the Merchant.

AN(20) Y

MerchantId Merchant identification code. This value is assigned to theMerchant.

AN(50) Y

TransactionPwd A password to secure and verify the transaction originatedfrom merchant represented by the transaction details. Thepassword value is configured through the merchant profile.

AN(50) Y

OrderId Centinel generated order identifier. Represents the value re-turned on the Lookup Response message.

AN(16) N

OrderNumber Contains the order number that you have assigned to an or-der.

AN(255) N

MerchantData Merchant specified data that will be returned on the re-sponse. Limit 255 characters.

AN(255) N

Sample Message

<CardinalMPI><MsgType>cmpi_add_order_number</MsgType>

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

Page 24: Centinel.integrationGuide.smw Android App

<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 FieldDefinition

Required

ErrorNo Application error number(s). A non-zero value represents theerror encountered while attempting the process the messagerequest.

AN(500) Y

ErrorDesc Application error description for the associated error num-ber(s).

AN(500) Y

StatusCode Status Result of the transaction.

Y ApprovedN DeclinedE ErrorU Unavailable

AN(2) Y

TransactionId Centinel generated transaction identifier. AN(20) Y

OrderId Centinel generated order identifier. AN(16) N

OrderNumber Contains the value passed in on the request. AN(50) N

MerchantData Contains the value passed in on the request. AN(255) N

Sample Message

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

</CardinalMPI>

5.7 Status Message IntegrationCentinel monitors each Merchant's activity to ensure that the Merchant system is in sync withthe order and payment activity within the payment processor. In the event that one of the fol-lowing 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

Page 25: Centinel.integrationGuide.smw Android App

The Notification POST is dependent on the Merchant Profile configuration to enable or dis-able Notification processing. If Notification processing is enabled and one of the scenarios isencountered, a POST similar to the following will be sent to the Notification URL configuredwithin the Merchant's profile.

NotificationId=CCCDEIGDDDILGCGKO05M8KU9GH0KJAMerchantId=123456ProcessorId=100TransactionType=MPS

Once the Merchant website receives the Notification Post, the cmpi_payment_status mes-sage should be invoked using the NotificationId to retrieve the transaction details from theCentinel platform. Additional information regarding the processing of the Notification POST isavailable within the Thin Client integration samples. The samples include all the code neces-sary to process the Notification POST and the cmpi_payment_status messages.

Using the samples the Notification handling can be quickly integrated to an existing ecom-merce platform. Once the Notification is received, the Merchant will be able to make the de-termination 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 NotificationIdvalue. Centinel will notify the Merchant by Posting a request to the Notification Location con-figured within the Merchant's Centinel account. The request includes the NotificationId valuefor use on the cmpi_payment_status message.

Request Message

Field Name Description FieldDefinition

Required

MsgType cmpi_payment_status AN(50) Y

Version Application message version identifier.

Current Version - 1.7

AN(3) Y

ProcessorId Merchant processor identification code. This value is as-signed to the Merchant.

AN(20) Y

MerchantId Merchant identification code. This value is assigned to theMerchant.

AN(50) Y

TransactionPwd A password to secure and verify the transaction originatedfrom Merchant represented by the transaction details. Thepassword value is configured through the Merchant profile.

AN(50) Y

TransactionType Identifies the Transaction Type used for processing.

MPS Mobile Payments Server

AN(4) Y

NotificationId Notification Id. This value is required to be passed on the AN(100) Y

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

Page 26: Centinel.integrationGuide.smw Android App

cmpi_payment_status message to identify the correspondingMoneybookers transaction. This value is provided throughthe 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 en-countered while attempting the process the message request.

Y

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

ReasonDesc Reason Description obtained from Processor. In the event of a transactionfailure or error, the field will provide the exact reason codes from the Pro-cessor.

N

ReasonCode Reason Code(s) obtained from the processing network. In the event of atransaction failure or error, the field will provide the exact reason codes fromthe processing network.

Example : 10002, 10004

N

StatusCode Status Result of the transaction.

Y Transaction ApprovedN Transaction DeclinedE Transaction resulted in ErrorU Payment brand is unavailable

Y

TransactionId MAX generated transaction identifier. Y

OrderId MAX generated order identifier. Y

OrderDescription Brief description of items purchased. Limit 125 characters. N

NotificationType Notification type identifier.

• ChargeNotification

Y

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

Page 27: Centinel.integrationGuide.smw Android App

OrderNumber Order Number from the merchant ecommerce website. Y

ShippingAmount Value represents the shipping amount with decimalization.

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

Y

TaxAmount Value represents the tax amount with any decimalization.

Example $12.67 - 12.67

Y

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

840 - U.S. Dollar

Y

MobilePhone Mobile Phone Number N

EMail Email address N

BillingFirstName Consumer's first name. N

BillingLastName Consumer's last name. N

BillingCompanyName Consumer's company name. N

BillingPhone Consumer's billing phone number. N

BillingAddress1 Address Information. N

BillingAddress2 Address Information. N

BillingCity Consumer's city of the billing address. N

BillingState Consumer's state or province of the billing address. N

BillingPostalCode Address postal code. Limit 10 characters. N

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

N

ShippingFirstName Consumer's first name. N

ShippingLastName Consumer's last name. N

ShippingCompanyName Consumer's company name. N

ShippingPhone Consumer's shipping phone number. N

ShippingAddress1 Address Information. N

ShippingAddress2 Address Information. N

ShippingCity Consumer's city in the shipping address. N

ShippingState Consumer's state or province of the shipping address. N

ShippingPostalCode Address postal code. N

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

Page 28: Centinel.integrationGuide.smw Android App

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

N

Item_Name_X Name of item purchased. N

Item_Sku_X Item SKU number. N

Item_Desc_X Brief description of item. N

Item_Price_X Unformatted price of item X transaction amount without any decimalization.

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

N

Item_Quantity_X Number of ptems purchased. N

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

N

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>[email protected]</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

Page 29: Centinel.integrationGuide.smw Android App

<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