References

Barcodes

[Presentation type & formats]

The barcode display type defines how the serial number, barcode, and/or QR code is shown.

Barcode display types

[Presentation Types (serialType)]

Code name Description
SERIALNUMBER Serial Number.
BARCODE Barcode.
QRCODE QR code.
POINTAMOUNT Point amount.
URL URL.
IMAGE Image
NONE None (do not display anything for serial data).

[Presentation Formats (ptFormat)]

Code name Description
BARCODE Barcode only.
BARCODESERIAL Barcode with serial number.
DUALSERIAL Dual serial number.
SERIAL Serial only.
DUALBARCODESERIAL Dual barcode with serial number.
DUALBARCODE Dual barcode only.
BARCODEPIN Barcode with PIN.
BARCODESERIALPIN Barcode with serial PIN
IMAGE Image.
IMAGESERIAL Image with serial.
QRCODESERIAL QR code with serial number.
QRCODE QR code only-

[Barcode Formats (ptSubFormat)]

Below are commonly used barcode formats, supported by the ZXing barcode scanning library.

See also: ZXing-BarcodeFormat

Code name Description
APIAZTEC Aztec 2D barcode format.
CODABAR CODABAR 1D format.
CODE_39 Code 39 1D format.
CODE_93 Code 93 1D format.
CODE_128 Code 128 1D format.
DATA_MATRIX Data Matrix 2D barcode format.
EAN_8 EAN-8 1D format.
EAN_13 EAN-13 1D format.
ITF ITF (Interleaved Two of Five) 1D format.
MAXICODE MaxiCode 2D barcode format.
PDF_417 PDF417 format.
QR_CODE QR Code 2D barcode format.
RSS_14 RSS 14.
RSS_EXPANDED RSS EXPANDED.
UPC_A UPC-A 1D format.
UPC_E UPC-E 1D format.
UPC_EAN_EXTENSION UPC/EAN extension format. Not a stand-alone format.

Locations

Locations refer to place information that denotes where a card can be used.
Using this information, Samsung Wallet can show the map, a place name, and address. Additionally, location information can be used to provide Location-Based Services (LBS).

Location information can be represented by a JSON array and up to 10 locations can be specified.

* Notice: Map service are only available in certain countries.

Details

[JSON Format]

Key Type Requirement Description
[].lat Double Optional Latitude.
[].lng Double Optional Longitude.
[].address String Required String containing the full address.
[].name String Required Branch name.

[Example]
* Location information for the entrance to Oracle Park.

[
    {
        "lat": 37.779337,
        "lng": -122.388755,
        "address": "24 Willie Mays Plaza, San Francisco, CA 94107",
        "name": "Willie Mays Plaza"
    },
    {
        "lat": 37.77814,
        "lng": -122.390836,
        "address": "King St, San Francisco, CA 94107",
        "name": "King St"
    }
]

Additional information

Additional information to be delivered to customers can be defined in the following format.

Be careful of the content string length. If an attribute does not allow long content, it will not be displayed on the device.

Details

[JSON Format]

Key Type Requirement Description
count Integer Required Size of information.
info[] Array of Objects Required Container of information
info[].title String Required Title.
info[].content[] Array of Strings Required Content text

[Example]
* Extra information for a boarding pass.

{
    "count": 3,
    "info": [
        {
            "title": "Baggage Allowance",
            "content": [
                "15 KG"
            ]
        },
        {
            "title": "Boarding Priority",
            "content": [
                "YES"
            ]
        },
        {
            "title": "Seat Class",
            "content": [
                "Economy Plus"
            ]
        }
    ]
}

* An example case of long content being allowed: Movie ticket policy.

{
    "count": 2,
    "info": [
        {
            "title": "REFUNDS AND EXCHANGES",
            "content": [
                "Refunds and exchanges of movie ticket(s) are available in certain limited circumstances.",
                "Movie tickets purchased through the Services include a non-refundable Convenience Fee. Before purchasing your movie ticket(s) we urge you to confirm the title, time, location and quantity of tickets for the movie you wish to see."
            ]
        },
        {
            "title": "CHANGES TO TICKET POLICY",
            "content": [
                "From time to time, we may revise this Ticket Policy. You can determine when this Ticket Policy was last revised by referring to the top of this page. Any changes to this Ticket Policy will become effective upon posting of the revised Ticket Policy on the Internet, accessible through the Services."
            ]
        }
    ]
}

Classification

Classification defines different kinds of people who can use the cards.

Details

[JSON Format]

Key Type Requirement Description
person[] Array of Object Required Container of person list
person[].category String Required Category name
person[].count String Required Number of person

[Example]

* 3 persons with a ticket.

{
 "person": [
  {
   "category": "Adult",
   "count": 2
  },
  {
   "category": "Child",
   "count": 1
  }
 ]
}

* 1 persons with a ticket.

{
    "person": [
        {
            "category": "Adult",
            "count": 1
        }
    ]
}

Check service available devices

Check SamsungPay/Wallet service availability for device and country

[Request]

Type Value
Method GET
URL https://api-us3.mpay.samsung.com/wallet/cmn/v2.0/device/available
Header partnerCode String Required Partner Code
- Partner Code or ID from Samsung Pay Partner System

Query Parameters modelName String Required Device model name
Ex) SM-G925K, SM-R730T

serviceType String Required Service type
- WALLET

Example

[Response]

Type Value Description
body resultCode String Required Result Code
resultMessage String Required Result Message
available boolean Required Service availability
supportKR boolean Required KR service support device

Example (Success)

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: xx
{
  "resultCode" : "0",
  "resultMessage" : "SUCCESS",
  "available": "true",
  "supportKR": "true"
}

Example (Error)

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: xx
{
  "resultCode" : " CMN5N9001",
  "resultMessage" : " Internal Server Error"
}

[Response]

Http Code Status Code DESCRIPTION
200 0 Success
400 CMN1N1001 Missing requisite parameter from API request – {0}
400 CMN1N1002 Invalid parameter from API request – {0}
400 CMN1N1003 Invalid parameter Length from API request – {0}
400 CMN2N2007 Invalid Country Code
500 CMN4N8003 DB Connection Failed

Security factors

Service Flow

Data Security Flow

How to generate key factors

OpenSSL is an open-source command-line tool that allows you to perform various SSL-related tasks.
This article will explain how to create key factors for security with OpenSSL.

Private Key

A private key enables encryption and is the most important component of certificates.

openssl genpkey -out domain.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048

If you want to make it more secure, adding '-des3' on the command will encrypt with password.

Certificate Signing Request (CSR)

Certificate Signing Request (CSR) is a necessary factor to get a signed certificate. The CSR includes the public key and some additional information, such as organization and country.
Let's create a CSR (domain.csr) from the existing private key.

openssl req -out domain.csr -key domain.key -new -sha256

You'll enter CSR information to complete the process. The output will look like this:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:KR
State or Province Name (full name) []:Seoul
Locality Name (eg, city) [Default City]:Sample City
Organization Name (eg, company) [Default Company Ltd]:Sample Company
Organizational Unit Name (eg, section) []:Sample section
Common Name (eg, your name or your server's hostname) []:domain
Email Address []:email@email.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

* 'password' is optional attribute.
* An important field is 'Common Name', which should be the exact Fully Qualified Domain Name (FQDN) of our domain.

For more information, refer to 'https://www.openssl.org'.

Contact points

[Dev Team]

Name Address
Wallet Technical Support https://developer.samsung.com/dashboard/support