Filter
-
Content Type
-
Category
Mobile/Wearable
Visual Display
Digital Appliance
Platform
Mobile/Wearable
Visual Display
Digital Appliance
Platform
Filter
tutorials web
blogthe previous tutorial, implementing "add to wallet" in an android application, showed how to generate and sign a card data token to add the card to samsung wallet. this tutorial demonstrates how you can perform server interactions with the samsung wallet server and retrieve information such as the card states on a user’s device. if you are a samsung wallet partner who is offering samsung wallet cards to your users, you might also want to know how you can track a provided wallet card’s status on a user’s device. follow along in this tutorial to learn how you can utilize the send card state api and retrieve this information to your own server. all code examples used in this tutorial can be found within the sample code provided at the end of this tutorial for further reference. card states and the send card state api the samsung wallet card’s status on a user’s device is represented by various states, such as added, updated, or deleted. whenever the card state of a card changes on a user’s device, samsung wallet server sends a notification to the configured partner server informing about the change. this api provided by samsung is called the send card state api. figure 1: samsung wallet card state changes samsung provides the send card state api as a means of server-to-server communication between the samsung server and the partner’s server and to let the partner know about the card state of their issued cards on user’s devices. with this api, partners can track the state of a wallet card on a user’s samsung galaxy device. prerequisites before you can test the send card state api, you need to: complete the samsung wallet onboarding process. create a samsung wallet card template. launch the wallet card template and have it in verifying or active status so that the card can be added to a user’s device. have an existing server to receive the notifications. you can use codesandbox or a similar online hosting service for testing. configure your firewall (if you use any) to accept incoming connections from the samsung wallet server (34.200.172.231 and 13.209.93.60). when you have completed all the prerequisites, proceed to the next step to configure your wallet card template to send requests to your server. configure the wallet card template for the send card state api to receive the send card state notifications on your server, you need to set your server’s url in the desired samsung wallet card’s options: go to the wallet partners portal. from the wallet cards dropdown, select “manage wallet card.” click the name of the wallet card. click “edit” and then scroll down to the “partner send card state” section to modify the partner server url. click “save” to set the partner server url for the card. figure 2: partner send card state url input field now, whenever a user adds or deletes an issued samsung wallet card to their device, the samsung wallet server automatically sends a post notification to the partner server url set in the wallet partners portal. next you need to learn about the specification of the request so that you can handle it from the server. send card state api specification and format for a complete description of the send card state api specification, see samsung wallet documentation. request method the send card state api uses a post method to send a request to the server. the api path for the request is fixed and uses the partner server url that you defined in section “configure the wallet card template for the send card state api.” api path and url parameters the api path at the very end of the "partner send card state" section is the path where the samsung server sends the send card state post request. so the complete api path url is: {partner server url}/cards/{cardid}/{refid}?cc2={cc2}&event={event}. here, cardid is the card id of the wallet card template and refid is the reference id field of the issued card data, which is a unique identifier. the cc2 query parameter is the 2-letter country code (iso 3166-1 alpha-2) and event is the card state event (added, deleted, or updated) occurring in the user’s device. consider the following example card configuration: partner server url: https://partner.server.url card id: 123 ref id for the issued card: abc country code: us in this configuration, whenever the user adds the card to their samsung wallet application, the samsung wallet server sends a send card state notification to the following url: https://partner.server.url/cards/123/abc?cc2=us&event=added. similarly, if a user from the united kingdom deletes a card with the refid xyz, the post request is sent to https://partner.server.url/cards/123/xyz?cc2=gb&event=deleted. therefore, you can know if a card was added or removed from the user’s device directly from the query parameters. post request body the post request body does not contain any information regarding the card state. rather it just provides a callback url that you can use if you want to send an update notification for the card. { "callback": "https://us-tsapi.walletsvc.samsung.com" } post request header the post request header contains all the required information for ensuring the authenticity of the request. it contains a request id with the name “x-request-id” and a jwt bearer token credential for authentication with the name “authorization” in the header. the samsung wallet server uses a bearer authorization token to ensure the authenticity of the requests being sent to the partner server. for details of the security factors, see authorization token. the bearer token is encoded in base64 following the jwt specification. it has three parts: jws header containing authentication related information, jws payload containing the api path, method, and refid, and jws signature, which validates that the bearer token is signed by the samsung server. jws header format: { "cty": "auth", // always “auth” "ver": "3", // can also be “2” for legacy card data token "partnerid": "4048012345678938963", // your partner id "utc": 1728995805104, // time of signing in milliseconds "alg": "rs256", "certificateid": "a123" // only provided for token version 3 } jws payload format: { "api": { "path": "/cards/3h844qgbhil00/2e19cd17-1b3e-4a3a-b904?cc2=gb&event=added", "method": "post" }, "refid": "2e19cd17-1b3e-4a3a-b904-f30dc91ac264" } finally, the bearer token contains a signature to verify the token. this is signed using the samsung private key and can be validated using the public key provided by samsung wallet during the onboarding process. after receiving any request from the samsung wallet server, your server should send back an http status code as a response. samsung server expects one of the following codes as a response: 200 ok 401 unauthorized 500 internal server error 503 service unavailable this is the complete specification of the send card state api that you need to be aware of before you implement the server. next, you need to configure your server to accept the post request in the specified format. configure the spring server to receive the post request to receive and interpret the send card state post notifications sent by the samsung wallet server, you need to configure a partner server and host the server at the url you specified earlier. to receive the post requests, this tutorial extends an existing server created using the spring boot framework. if you want to know how the spring server is configured, check out the “generate signed wallet card data” section in the implementing "add to wallet" in an android application tutorial. this cdata generation server is used as the base server application for this tutorial, so the dependencies are the same as well. now you can start implementing the tutorial. create a controller class to intercept the post request samsung wallet always sends the send card state post notification to the fixed api path url: {partner server url}/cards/{cardid}/{refid}. create a new controller class in your spring server to intercept any post request that is sent to this api path. @restcontroller @requestmapping("/cards") class cardstatecontroller { @postmapping(path = ["/{cardid}/{refid}"]) fun handlecardstate(@pathvariable cardid: string, @pathvariable refid: string): httpstatuscode { // implement your logic here to process the card state. println("received card state notification for card id $cardid and reference id $refid.") return httpstatus.ok } } run the server and then add or delete a card from your samsung wallet. if the partner server url was set correctly in section “configure the wallet card template for the send card state api,” your server should receive a post request from the samsung server and print the following message to the console: “received card state notification.” update the controller class to receive the query parameters handle the query parameters from the request by adding the following parameters as the function’s parameters: @requestparam("cc2") cc2: string, @requestparam("event") event: string receive and print the request body using the @requestbody body: string parameter. the function should now look like this: @postmapping(path = ["/{cardid}/{refid}"], params = ["cc2", "event"]) fun handlecardstate(@pathvariable cardid: string, @pathvariable refid: string, @requestparam("cc2") cc2: string, @requestparam("event") event: string, @requestbody body: string): httpstatuscode { // implement your logic here to process the card state. println("country code: $cc2") println("wallet card state event: $event") println("request body: $body") return httpstatus.ok } now whenever the samsung server sends a request to the server, it prints the device’s country code and the wallet card’s state event on the device. verify the post request this is the final and the most important step of this tutorial. before accepting any incoming post request, you should always validate the request by following the api specification mentioned earlier in the tutorial. the security procedures can include but are not limited to: matching your partnerid with the received partnerid custom parameter. checking the token version with the ver custom parameter. for token version 3, match your certificateid using the certificateid custom parameter. checking the time of signing using the utc custom parameter. matching the other jws header parameters with the values mentioned in the specification. matching the path from the jws payload with the received url. verifying the jwt. this section shows how you can implement each of these one by one. first, parse the authentication token and read the header. val signedjwt : signedjwt = signedjwt.parse(authtoken) val jwsheader : jwsheader = signedjwt.header match partnerid and jws header parameters: val ownpartnerid = "4048012345678938963" // your partner id from samsung wallet partner portal val receivedpartnerid = jwsheader.customparams["partnerid"] val ctype = jwsheader.contenttype val alg = jwsheader.algorithm.name // check if the jws header parameters match the expected values if (ctype == "auth" && alg == "rs256" && receivedpartnerid == ownpartnerid ) { println("jws header parameters matched") // proceed with further verification } check the token version and match certificateid: val ver = jwsheader.customparams["ver"] val owncertificateid = "a123" // your certificate id from samsung wallet partner portal val receivedcertificateid = jwsheader.customparams["certificateid"]?: "" // if partner uses token version 3 in the jws header of the cdata, // then samsung server also returns version 3 response along with the certificate id if(ver == "3" && receivedcertificateid == owncertificateid){ println("jws header certificate id matched") // proceed with further verification } check if the token was generated recently: // check if the timestamp is within acceptable range val utc = jwsheader.customparams["utc"] as long val timedelta = system.currenttimemillis() - utc println("time delta: $timedelta") if (timedelta < 600000l) { println("utc timestamp is within last 1 minute. time delta = $timedelta ms.") // proceed with further verification } match the api path with the received api path from the payload: val receivedapivalue = signedjwt.payload.tojsonobject()["api"]?.tostring()?: "" val receivedapipath = receivedapivalue.substring(6, receivedapivalue.length - 14) val expectedpath = "/cards/$cardid/$refid?cc2=$cc2&event=$event" // match the path in the payload with the expected path if (receivedapipath == expectedpath) { println("path matched") // proceed with further verification } finally, validate the token using the samsung certificate provided to you during the onboarding process: read the samsung certificate from a file and then extract the public key. for instructions, refer to the cdata generation server sample code at implementing "add to wallet" in an android application. build an rsakey object using the extracted public key. create an rsassaverifier object with the rsakey to verify the token. verify the token using the verifier. // verify the signature of the jwt token using the public key provided by samsung wallet. val samsungpublickey = readcertificate(getstringfromfile("sample/securities/samsung.crt")) val rsakey = rsakey.builder(samsungpublickey as rsapublickey).build() val verifier: rsassaverifier = rsassaverifier(rsakey) if(signedjwt.verify(verifier)){ println("verification successful") // implement your logic here to process the card state notification. // for example, you can update the card status in your database or trigger a notification to the user. // in this example, we simply return a 200 ok response indicating that the notification was successfully processed. return httpstatus.ok } else { println("verification failed") // return an appropriate http status code indicating that the notification could not be verified. return httpstatus.unauthorized } now the complete implementation of the controller class to receive and verify the send card state request is complete. once a send card state request is completely verified, you can accept the request as a valid card state update and make any changes as required. for example, you can update the card status information in your own database or trigger a notification to the user. summary by completing this tutorial, you are now able to receive card state updates from the samsung wallet server using the send card state api and validate them. in a future tutorial, we will discuss how you can expand the server interaction functionality even further and how you can update samsung wallet card information on user devices through the get card data api. if you want to discuss or ask questions about this tutorial, you can share your thoughts or queries on the samsung developers forum or contact us directly for any implementation-related issues through the samsung developer support portal. if you want to keep up-to-date with the latest developments in the samsung developers ecosystem, subscribe to the samsung developers newsletter. sample code you can click on the link given below to download the complete sample code used in this tutorial. wallet card state server sample code (55 kb) dec 2024 additional resources implementing "add to wallet" in an android application send card state authorization token iso 3166 country codes
Mobassir Ahsan
tutorials mobile
blogsamsung wallet is introducing a new feature called "generic card" for partners who cannot use other card types to fulfill their business requirements. this provides flexibility to modify various field labels for the card, according to the partners’ business needs. other cards, such as boarding passes and coupons serve a specific purpose, and their field labels cannot be modified. however, with a generic card, the label can be modified so it can be used for multiple purposes. in this article, you learn how to modify a generic card to use it as an insurance card. we will explain the details specification with example of the generic card. at the end of the article a guide will be provided to implement this card for your reference, to help you modify your generic card according to your needs. card setup before you begin creating a new card template, log in to the samsung wallet partner site and create a generic card. log in to the samsung wallet partner site. go to the wallet cards and then create wallet card. for more details about creating a card, check the manage wallet cards documentation. select generic card from the available card templates. modify the card information. when you have finished editing card information, launch the card to complete card setup. for more information on how to launch the card, see launch wallet cards. template editor use the template editor to modify the card template. from the "cardart" view, you can modify the card color, set a background image or change the logo image properties. from the "enlarge" view, you can modify the {{text1}} and {{text2}} labels. however, only the label itself can be changed in the template editor. to set the label value, you need to update the json file. from the "detail" view, you can modify the "textgroup" and "applink" properties. modify the text label according to your needs. it is also possible to add new text fields, with a maximum of 12 text fields allowed. after every modification, click save. finally, apply all changes by clicking apply. if you want to preview your changes, just click preview. add to samsung wallet now that the card has been created in the site, it is ready to be distributed to fulfill your business needs. implement the "add to samsung wallet" functionality to the platform where you are planning to distribute the cards. when users click "add to samsung wallet," the card is added to the wallet application on the user’s galaxy device. this functionality can be added through the application/mobile web, mms, or email. additionally, you can use a qr code on a computer web browser and kiosk. samsung provides a codelab guide for developers so that they can easily understand the implementation. for additional information on the codelab guide, read utilize the add to samsung wallet service for digital cards. further details can also be found in the implementing atw button documentation. card specifications to complete the "add to samsung wallet" button implementation, you must generate the card data token and create a final url. for more information, see add to samsung wallet. let’s start by reviewing the generic card specifications to generate the card data token. the generic card follows the specifications below. for more information on them, see the generic card section. name description title the main title of the generic card. in the sample card, the title is "card title." in the image below, the title is "insurance identification card." subtitle the subtitle of the generic card. in the sample card, it is "card subtitle". providername use this field to set the card provider name. for more information, check the card json example below. however, the provider name depends on your card type and should be modified accordingly. eventid enter an id as an event identifier. in case your card is prepaid, for example a gift card, or if you have vouchers to events, such as concerts, it is possible to define an event id. for instance: "event-001". groupingid enter an identifier to group related cards. startdate enter the starting date and the epoch timestamp in milliseconds. startdate.relativenotitime enter the amount of time within which you want to provide a notification to the user. the notification time is the relative time from the startdate. the value can be up to 2880 milliseconds. enddate enter the end date and the epoch timestamp in milliseconds. enddate.relativenotitime enter the amount of time within which you want to provide a notification to the user. the notification time is the relative time from the enddate. the value can be up to 2880 milliseconds. logoimage set the logo image url. the file size must not exceed 256 kb. also this image can be set from the template editor. logoimage.darkurl set the logo image url for the dark mode. the file size must not exceed 256 kb. logoimage.lighturl set the logo image url for the light mode. the file size must not exceed 256 kb. bgimage set the background image url. the file size must not exceed 512 kb. text{i} set the label-text value that should be displayed for each field containing the details of your card. the label is defined in the template editor, shown in the image below. to set the value of the label, update the json file. image{i} enter the image url, such as: "https://www.samsung.com/images/image1.png". this url is just an example, you must update it according to your needs. this field only works in generic card type3. we have used a type1 card in the example. so this field in the example json has no effect on the card. you can find all three card type sample uis here. image{i}.lighturl enter the image url in light mode, such as: "https://www.samsung.com/images/light.png". this url is just an example, you must update it according to your needs. image{i}.darkurl enter the image url in dark mode, such as: "https://www.samsung.com/images/dark.png". this url is just an example, you must update it according to your needs. serial{i} set the serial for barcode or qr code. serial{i}.serialtype serial presentation type. for more information on the presentation types (serialtype), see references. serial{i}.ptformat set the presentation format. for more details on the presentation formats (ptformat), see references. serial{i}.ptsubformat set the presentation subformat here. for more details on the barcode formats (ptsubformat), see references. serial{i}.errorcorrectionlevel set the error correction levels in this field. the amount of redundancy or error correction data included in the code varies. qr codes offer four levels of error correction: l, m, q, and h. the qr field looks like the following in your card: privacymodeyn set the user authentication if required. set the value to "y" or "n" bgcolor set the card art color. fontcolor set the card art font color. nonetworksupportyn set the value to "y" to open the wallet card when under the "no network" status. otherwise, set the value to "n" noticedesc set the the notice description here. see the image below of how it is added to card. applinklogo add the application link logo url in this field. applinkname add the application link name in this field. applinkdata add the application link url in this field. locations list of locations where the card will be used. this information can be used to provide location-based services. samsung wallet can use this information to show maps, names of places, and addresses. for more information on the locations field and json format, check references. card json example in previous sections, you have learned about the card specifications. next, let’s implement the generic card fields according to your needs. in this section, as the aim is to create an insurance card, you must use the fields accordingly. samsung provides a specifically formatted json structure. you need to configure the card data objects within the structure’s data array. for more details, see the generic card section. { "card": { "type": "generic", "subtype": "others", "data": [ { "createdat": 1709712961000, "updatedat": 1709712961000, "language": "en ", "refid": "933533e1-9284-461c-905f-bc177526a8d1", "attributes": { "title": "insurance identification card", "subtitle": "insurance card", "providername": "samsung insurance co.", "eventid": "1", "groupingid":"1", "startdate": 1731299205000, "startdate.relativenotitime": 500, "enddate": 1731320805000, "enddate.relativenotitime": 400, "logoimage": "https://us-cdn-gpp.stg.mcsvc.samsung.com/mcp25/resource/2023/12/20/55ea769f-d14d-4c47-94cc-50cade36cdd9.png", "logoimage.darkurl": "https://us-cdn-gpp.stg.mcsvc.samsung.com/mcp25/resource/2023/12/20/55ea769f-d14d-4c47-94cc-50cade36cdd9.png", "logoimage.lighturl": "https://us-cdn-gpp.stg.mcsvc.samsung.com/mcp25/resource/2023/12/20/55ea769f-d14d-4c47-94cc-50cade36cdd9.png", "bgimage": "", "text1": "1234567", "text2": "samsung insurance co.", "text3": "jaqueline m", "text4": "samsung motors 2014 galaxy5", "text5": "11sam23sung3t", "text6": "(031)000-1235", "image1": "https://us-cdn-gpp.mcsvc.samsung.com/mcp25/resource/2024/3/5/b9445e3f-2ef5-4d81-9fca-b7a8a7cd599f.png", "image1.darkurl": "https://us-cdn-gpp.mcsvc.samsung.com/mcp25/resource/2024/3/5/b9445e3f-2ef5-4d81-9fca-b7a8a7cd599f.png", "image1.lighturl": "https://us-cdn-gpp.mcsvc.samsung.com/mcp25/resource/2024/3/5/b9445e3f-2ef5-4d81-9fca-b7a8a7cd599f.png", "serial1.value": ">1180mm2241b7c 0000000000000298060000000000 0 090870907 ", "serial1.serialtype": "qrcode", "serial1.ptformat": "qrcode", "serial1.ptsubformat": "qr_code", "serial1.errorcorrectionlevel": "m", "privacymodeyn": "y", "bgcolor": "#3396ff", "fontcolor": "#ffffff", "nonetworksupportyn": "n", "noticedesc": "{\"count\":2,\"info\":[{\"title\":\"notice1\",\"content\":[\"description1\",\"description2\"]},{\"title\":\"notice2\",\"content\":[\"description1\",\"description2\"]}]}", "applinklogo": "https://www.samsung.com/logo.png", "applinkdata": "https://www.samsung.com/", "applinkname": "samsung insurance co.", "locations": "[{\"lat\": 37.2573276, \"lng\": 127.0528215, \"address\": \"suwon\", \"name\": \"digital city\"}]" } } ] } } generic card testing with the "add to wallet" test tool now, you can test the generic card with the "add to wallet" test tool provided by samsung. just follow these steps: sign in to the add to wallet test tool. for more information, see the samsung wallet test tool. enter the private key in the "enter partner private key" field. in this tool, you find all cards that you have created from the samsung wallet partner site in the "select card" section. for more information, see the samsung wallet partner site. select the generic card that you have just created. now select json from the data field and modify the existing json data fields according to the card specification details. after modifying the json data fields, check if the json is valid. finally, if the private key is valid, the "add to samsung wallet" button becomes active at the bottom of the page. then, just click add to samsung wallet to finish adding the generic card. if you use the provided example json and add the card to the wallet, the card looks like the following: server integration in this step, server configuration is needed because the generated jwt token expires after 30 seconds. developers are advised to only generate this token after a user has clicked the "add to wallet" button. as you have already performed testing with the "add to wallet" test tool, you need to configure your server. for more information on the implementation of both the "add to samsung wallet" button and server-side logic, see implementing "add to wallet" in an android application. this article explains how you can distribute your card with your android application and how to generate the jwt token at runtime, after pressing the "add to samsung wallet" button. conclusion you have now learned the basics for how to set up a generic card and test it for your business needs. in case you have further questions, contact samsung developer support. related resources utilize the add to samsung wallet service for digital cards introduce loyalty cards to your application with samsung wallet implementing "add to wallet" in an android application seamlessly integrate "add to wallet" for samsung wallet
M. A. Hasan Molla
Develop Samsung Wallet
docmanage wallet card the samsung wallet partners portal provides partners with the necessary tools and functionality to integrate the “add to samsung wallet” feature into their services this guide outlines the process of registering, managing wallet cards, and ensuring that everything runs smoothly refer to the partner onboarding guide for the samsung wallet portal the partners need to complete the following steps to register and gain access to the samsung wallet portal note-wallet portal currently offers 'add to samsung wallet' functionality to the partners overall managing process once registered and logged into the samsung wallet portal, partners can follow the steps to manage wallet cards and monitor performance step 1 - create wallet card template begin by drafting the cards that will be added to samsung wallet these cards can include loyalty cards, tickets, boarding passes, and more draft status - initially, these cards will be in draft status until they are fully configured and ready for testing manage wallet card partners can manage all registered wallet cards this includes edit, update, and monitor the status of the wallet cards general information the general information page allows the partner to enter administrative details to manage their cards, as well as to define common parameters for the wallet folder contents testing mode all data generated in testing mode is periodically deleted be sure to turn off the "testing mode" setting after the test is over wallet card name representative title of the wallet card wallet card id unique wallet card domain name partner app package name partner application package name wallet card template pre-defined partner wallet card template partner get card data url for the partner api call to receive card data if the partner uses this api, enter the url otherwise leave it blank partner send card state url for the partner api call to send a card state notification if the partner uses this api, enter the url otherwise leave it blank samsung server ips samsung wallet server ips which need to be allowed by the partner’s firewall, separately described for inbound and outbound wearable wallet assistance whether to support the wearable wallet service support ‘no network’ status whether to support wallet card opening during the ‘no network’ status description description of the wallet card select card template the samsung wallet portal offers various wallet card templates optimized for different use cases, including boarding passes, tickets, coupons, and digital ids to streamline your integration, you can easily select the appropriate template from the select wallet card template pop-up window steps to select wallet card template navigate to the select wallet card template option within the portal in the wallet card type drop-down menu, select the category that best suits your use case e g , boarding pass, ticket, coupon, or digital id once the card type is selected, a list of templates will appear in the wallet card sub type section choose one of the available templates from the list that corresponds to your selected card type some card types support a flexible layout design after selecting the template, you can proceed with configuring the card’s details, including the branding, content, and data fields specific to the selected template samsung wallet supports various wallet card types designed to cater to different use cases each card type is optimized for specific functions, making it easier for partners to provide a seamless experience to users note-refer to section wallet card type to learn more about it view wallet card template partners can easily manage all their registered wallet cards through the samsung wallet portal this includes the ability to view, edit, and delete wallet cards as needed step 2 - launch wallet card template verifying status once a wallet card is ready for launch, it must go through the verifying status before it can be activated and made available to users partners can launch and activate their cards once they have been reviewed and approved, ensuring the card meets all requirements steps to launch card template to begin the launch process, click yes to confirm and approve the activation of the wallet card to begin the activation process, click the launch button for the card you wish to activate once a card is launched, the button text changes to launched the activation cannot be cancelled after the card is launched, its status will change to verifying during this stage, the system will conduct a final review to ensure all information is accurate and meets the necessary requirements after verification, the card will undergo administrator approval the admin will review and approve the card for activation once the card is approved by the administrator, its status will change to active, making it available for users to add to their samsung wallet launch wallet card template rejected status if the wallet card is rejected after launching, you can modify the card and re-launch steps to modify the card and re-launch the administrator registers the reason for rejection when rejecting the launched wallet card it is sent to the partner by email from the system, including the reason for rejection partners can apply for launch again by checking the reason for rejection and modifying the wallet card information step 3 – testing mode partners can use the testing mode to test a wallet card internally before it is officially released to users this feature ensures that all aspects of the card, including its functionality and user experience, are working as expected when you create a new wallet card, the testing mode option is enabled by default, allowing you to perform internal tests without affecting user access all data generated during testing is periodically deleted to ensure that no test data remains in the system once testing is complete even though testing mode is enabled, the card is still visible and accessible in the system testing does not prevent the card from being exposed to users, so you can verify its functionality without any restrictions once testing is complete and you are satisfied with the card’s performance, be sure to turn off testing mode note-remember to change the status from testing mode on to testing mode off to finalize the testing process and prepare the card for official release step 4 - admin approval active status after a wallet card is launched, it must go through an administrator approval process before it becomes active and visible to users steps for admin approval once the launch button is clicked, the card’s status automatically changes to verifying during this stage, the card is reviewed for accuracy, completeness, and compliance with samsung wallet requirements note-please ensure that testing is completed using either your own implementation or the add to wallet test tool, as the samsung wallet administrator will verify the results through server-side test logs an administrator will review the submitted wallet card to ensure it meets all content and technical guidelines if the card passes the review, it is approved for activation upon administrator approval, the card status updates 'active' once the card reaches active status, it becomes visible and accessible to end users, enabling them to add it to their wallets step 5 – add to samsung wallet integration to integrate the "add to samsung wallet" feature into your system, you need to insert the appropriate "add to wallet" script this script is available for various platforms, including web, android, and email/mms, and each platform requires a slightly different implementation approach follow the steps below to successfully implement the "add to wallet" button create the tokenized card data, known as cdata, which contains the actual wallet card content note-since cdata has a time-to-live ttl of 30 seconds, it is recommended that the system generates cdata in real time to ensure it remains valid when processed 2 the cdata format varies depending on the card type e g , loyalty card, ticket, coupon 3 refer to the [_cdata generation sample code_][cdata generation sample code] on the partners portal for detailed guidance 4 copy the sample **‘add to wallet’** script from [_partners portal’s wallet card_][partners portal’s wallet card] page 5 replace the placeholder "cdata" in the script with your generated tokenized card data 6 apply the script to your system see [_partners portal’s wallet card_][partners portal’s wallet card] for details note-for "add to wallet" integration, you may need some base data you can find that and other necessary information on partners portal and wallet api spec you can also add image beacon in the script for tracking effect analysis add to wallet script guide step 6 – merchant push notification partners can create a message template for sending pushes on each of their wallet cards type partners can only choose the merchant push type message type you can choose a message type from marketing or others rejected comment if the merchant push notification is rejected after request approval, you can modify the message template the administrator registers the reason for rejection when rejecting the merchant push notification it is sent to the partner by email from the system, including the reason for rejection partners can request for approval again by checking the reason for rejection and modifying the message template approved date displays the date and time when the push message is approved by the administrator message template you can create the contents of the push, and it is also possible to put the available variables in '{{}}' after configuring the content, click harmfulness verification to verify whether there is a harmful expression in the content the verified result is displayed as pass or fail, and if it is fail, it shows the filtered harmful expression together even if the verified result is fail, an approval request can be made, but it can be rejected by the administrator if a different language is added to the default language in general information, the message template must also be entered for each added language request approval button after completing the message template, click this button to send an e-mail requesting approval to the administrator configure the wallet card layout samsung wallet offers the flexibility to customize card layouts according to your preferences samsung wallet supports 2 different layout types while all cards can use the default layout type, the flexible layout type is only available for specific cards this section defines the design and attributes of the wallet cards to be supported through the flexible layout type supported card types with flexible layout the card types that support the flexible layout type are as follows loyalty membership , coupon, event ticket, generic card, boarding pass create a card with flexible layout when creating a wallet card that supports the flexible layout type, the user can choose between the default and flexible layouts when selecting the card type to create a wallet card with a flexible layout create a wallet card select the wallet card template to use select the type and sub type for the wallet card template selecting a card type that supports a flexible layout will display the available flexible layout identifiable by the name 'generic-subtypename-default' note-please choose carefully, as the layout type cannot be changed once the card is activated card design and attribute configuration step 1 determine the layout preset to determine the layout preset in the template editor, click the preset change button to modify the layout design presets consist of a combination of three areas card header area, card primary area, and card auxiliary area select each tabs respectively to create the desired combination note-the design types provided vary by card type and area note-• changing the preset updates all previously saved layouts • once a card has been activated, its layout cannot be modified ensure thorough testing before releasing the card card header area choose from six option, including logo type and sub-text combinations logo type logo image, logo image + text, text only the card header area has the same configuration across all card types, and 6 available configurations card primary area the main section that determines the card's primary layout the card primary area is configured differently for each card types the primary area of loyalty membership , coupon, event ticket, generic card has 7 available configurations the primary area of a boarding pass has 4 available configurations card auxiliary area select the number of text fields needed to provide additional information the card auxiliary area is configured differently for each card types the auxiliary area of loyalty membership ,, coupon, event ticket, generic card has 5 available configurations the auxiliary area of a boarding pass has 6 available configurations step 2 define key values for each attribute in the layout to define the key values for each attribute click on an empty container in the card preview where the key has not been set when an empty container consists of a label and a value pair, the label and value are selected as a group setting either a label or a value synchronizes and applies the values across all grouped containers click the entry key button to view the supported attribute names please refer to the wallet card spec for details on the attributes of each entry key boarding pass | event ticket | coupon | loyalty membership | generic card select an attribute from the list or if the desired attribute is not available, enter the value directly in the direct input field when selecting from the attribute list, samsung wallet's supported text will appear in your application save the key value by clicking the save button once all configurations are complete, click apply to implement the layout step 3 prepare card data matching the layout design to prepare the card data matching the chosen layout design refer to the specifications for each card type for wallet card data if you used direct input during layout setup, provide an extendedfields attribute corresponding to the key value entrykey the key entered in the input field label the name displayed in your application value the data corresponding to the label "extendedfields" "[{\"label\" \"group/boarding\", \"value\" \"6/10 35\", \"entrykey\" \"group/boarding\"}]"
Develop Samsung Wallet
docnotification service purpose and scope the notification service enables partners to send messages to users who have registered a wallet card issued by that partner notifications are template-driven and may be used for both service and marketing purposes, subject to template approval and content policy checks partners can create templates via the partner portal or programmatically, then use approved templates to deliver encrypted, jwt-wrapped notification payloads that target specific card instances delivery metrics impressions, clicks are recorded and exposed in the samsung wallet partners portal for campaign evaluation notification workflow deliver personalized push messages to samsung wallet users, linked to their wallet cards samsung wallet enables authorized partners to send targeted push notifications using pre-approved message templates this feature supports marketing, transactional, and engagement-driven use cases only partners with administrative approval can access and use the notifications feature the notifications tab is hidden for unauthorized accounts step 1 create notification template partners can create push message templates through the partner portal or notification api templates define the structure and content of the notification type only merchant push is supported message category choose from marketing or other variables use dynamic placeholders with {{ }} syntax e g , hello {{name}}, your pass for {{event}} is ready if your wallet card supports multiple languages, a message template must be provided for each language variant after drafting the message run harmfulness check to detect prohibited content results pass or fail even if failed, templates can still be submitted but may be rejected in the next step step 2 request template approval once the template is complete click the request approval button in the portal an administrator will review the content if rejected the reason is provided via system email partners can revise and resubmit the template for approval if approved the approved date will appear in the portal the template becomes eligible for use in the notification api step 3 push notification with template once a template is approved, partners can push notifications to users linked to their wallet cards using a secure post api request required parameters template id – issued after template approval reference id – a unique identifier tied to the user’s wallet card created during the add to wallet process only pre-approved templates can be used in push requests step 4 monitor impressions and clicks after the push is delivered, partners can track impressions – number of users who viewed the notification clicks – number of interactions with the push these metrics can be accessed through the partner portal dashboard, enabling performance evaluation of each campaign geofence notification geofence notification enables samsung wallet to provide a location-triggered notification for a wallet card that has already been added by the user this capability uses the locations field in wallet card data cdata and evaluates the user's device location against a configured geofence policy when the configured condition is met, samsung wallet may display a notification to the user this feature is based on card data registered through add to wallet, but the notification behavior itself is performed after card enrollment for this reason, geofence notification is described as a specialized notification scenario rather than as part of the core add to wallet flow at a high level, the partner provides location information and a geofencetype in the card data samsung wallet uses the provided location data and service configuration to evaluate whether a location-triggered notification should be displayed on the device prerequisites the wallet card must already be added to samsung wallet the partner must provide valid locations data in the wallet card data cdata the partner must provide a geofencetype for each location intended for geofence notification the user must allow location access on the device for location-triggered behavior availability of geofence notification may depend on service policy or feature enablement partner input example { "locations" "[{\ \"lat\" 37 12345,\ \"lng\" 127 12345,\ \"name\" \"store 1\",\ \"address\" \"110 example-ro\",\ \"geofencetype\" \"100\",\ \"message\" \"welcome to store 1 check your available benefits in samsung wallet \"\ }]" } the locations field is represented as a stringified json array in wallet card data cdata each location object may contain basic place information such as latitude, longitude, place name, and address for geofence notification, the partner additionally provides geofencetype as a string value and may provide a notification message geofence notification configuration for geofence notification, the partner provides geofencetype as a string value in each applicable location entry supported values are "100", "200", "300", "400", and "500" these values indicate the geofence radius in meters, such as 100 m, 200 m, 300 m, 400 m, and 500 m samsung wallet uses the provided value together with service-side configuration to apply the geofence notification scenario to the card each value must be provided as a string in the locations entry supported geofencetype values "100" 100 m radius "200" 200 m radius "300" 300 m radius "400" 400 m radius "500" 500 m radius geofence notification flow step 1 prepare card data the partner prepares wallet card data cdata and includes locations entries for the relevant places for geofence notification, each target location entry includes geofencetype and message step 2 register the card through add to wallet the partner submits the card through the add to wallet flow using the appropriate card template and wallet card data step 3 resolve geofence policy samsung wallet applies the geofence notification scenario associated with each geofencetype and prepares the card for location-triggered behavior on the device step 4 add the card and grant location access the user adds the card to samsung wallet to support location-triggered behavior, location access must be enabled on the device step 5 detect geofence events the device evaluates the user's location against the configured geofence conditions, such as entry, radius, and active time range step 6 display notification when the configured condition is satisfied, samsung wallet displays the notification associated with the location entry notification service apis send notification this api sends notifications to end users who have added the wallet card [request] type value description method post url /{cc2}/wltex/cards/{cardid}/notifications/{templateid}/send header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws for more details x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier randomly generated uuid string path parameters cc2string 2 required country code cc2 from send card state send card event cardidstring 32 required wallet card identifier granted from samsung wallet partners portal template idstring 32 required approved notification template identifier from samsung wallet partners portal payload ndatastring required notification object json * this field needs to be encrypted * refer to card data token cdata for more details * the value of "cty" must be set to "notification" notification object refidsarray of string 100 required unique content identifier defined by the content provider dataobject required name-value pair for use in notification template example post /wltex/cards/12584806754/notifications/12353465344/send /* [headers] */ authorization bearer <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 /* [payload] */ { "ndata" <jwt_serialized> } /*[notification object]*/ { "refids" [ "ref-20230304-0003", "ref-20230304-0004" ], "data" { "name" "logan", "place" "samsung wallet" } } [response] type value description http status 200 ok payload n/a [result] http status code description 200 ok success 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 unauthorized authorization token is invalid or expired 500 internal server error the server encountered an unexpected condition that prevented it from fulfilling the request create targeted notification job this api creates a targeted notification job for users who match the specified filter conditions [request] type value description method post url /wltex/cards/{cardid}/notifications/{templateid}/jobs header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier randomly generated uuid string path parameters cardidstring 32 required wallet card identifier granted from samsung wallet partners portal template idstring 32 required approved notification template identifier from samsung wallet partners portal payload filterobject required targeting condition object the supported filter key is eventid dataobject optional name-value pair for use in notification template example post /wltex/cards/12584806754/notifications/12353465344/jobs /* [headers] */ authorization bearer <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 /* [payload] */ { "filter" { "eventid" "event-003" }, "data" { "name" "logan", "place" "samsung wallet" } } [response] type value description http status 200 ok payload idstring targeted notification job identifier statusstring targeted notification job status the initial status is ready example 200 ok { "resultcode" "0", "resultmessage" "success", "id" "targeting-job-id", "status" "ready" } [result] http status code description 200 ok success 400 bad request requests cannot or will not be processed due to a client error 401 unauthorized authorization token is invalid or expired 404 not found targeted notification job does not exist or does not belong to the requested card 500 internal server error the server encountered an unexpected condition that prevented it from fulfilling the request get targeted notification job this api retrieves the status and timestamps of a targeted notification job [request] type value description method get url /wltex/cards/{cardid}/notifications/{templateid}/jobs/{jobid} header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier randomly generated uuid string path parameters cardidstring 32 required wallet card identifier granted from samsung wallet partners portal template idstring 32 required approved notification template identifier from samsung wallet partners portal jobidstring 36 required targeted notification job identifier returned when creating the job example get /wltex/cards/12584806754/notifications/12353465344/jobs/targeting-job-id /*[headers]*/ authorization bearer <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140004 [response] type value description http status 200 ok payload jobobject targeted notification job object job idstring targeted notification job identifier job statusstring targeted notification job status job createdatstring date and time when the targeted notification job was created job endedatstring date and time when the targeted notification job ended the value can be null while processing example 200 ok { "resultcode" "0", "resultmessage" "success", "job" { "id" "targeting-job-id", "status" "ready", "createdat" "2026-03-16t00 00 00z", "endedat" null } } [result] http status code description 200 ok success 400 bad request requests cannot or will not be processed due to a client error 401 unauthorized authorization token is invalid or expired 404 not found targeted notification job does not exist or does not belong to the requested card 500 internal server error the server encountered an unexpected condition that prevented it from fulfilling the request adding notification templates in general, card notification creation is possible through the samsung wallet partners portal however, a server api is provided for cases where it is necessary to create a large number of card notifications card notifications created through api can also be checked and managed in the same way on the samsung wallet partners portal [request] type value description method post url /partner/v1/card/template/{cardid}/notification header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier random generated uuid string path parameters cardidstring 32 required the wallet card identifier granted through the samsung wallet partners portal * the identifier is needed when updating a specific card template body parameters ntemplateobject required actual payload data in basic json format to establish the communication between partners and samsung wallet this must be in the secure jwt json web token format * see the chapter card data token cdata for more details payload object typestring 20 required notification type m merchant push, g geo push messagetypestring 20 required purpose of notification s service, m marketing messagedetails[]array of object required container of notification message messagedetails[] languagecodestring 20 required default notification language code,e g en, ko messagedetails[] messagestring 500 required notification message forcesaveynstring 10 optional sets whether to save when harmfulness is detected this must be set to either 'y' or 'n' * default 'n' example notification template object { "type" "m", "messagetype" "s", "messagedetails" [ { "languagecode" "en", "message" "it’s notification message " }] } example post /partner/v1/card/template/3hdpejr6qi380/notification /* [headers] */ authorization <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 /* [payload] */ { "ntemplate" "<jwt_serialized>" } [response] type value description http status 200 ok payload harmfulresult harmfulness check result responded as “pass” or “fail” harmfullabels reason for harmfulness detection responded only when harmfulresult is “fail” save indicates whether the forcesaveyn option has been set when set to “y”, it is responded as “force” 200 ok { "resultcode" "0", "resultmessage" "success", "harmfulresult" "pass" } 200 ok { "resultcode" "0", "resultmessage" "success", "harmfulresult" "fail", "harmfullabels" "hate,violence" } 200 ok { "resultcode" "0", "resultmessage" "success", "save" "force", "harmfulresult" "fail", "harmfullabels" "violence" } [result] http status code description 200 200 ok 400 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 401 unauthorized authorization token is invalid or expired 500 500 internal server error 503 503 service unavailable get notification templates [request] type value description method get url /partner/v1/card/template/{cardid}/notification headers authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier random generated uuid string path parameters cardidstring 32 required the wallet card identifier granted through the partner portal * the identifier is needed when updating a specific card template example get /partner/v1/card/template/3hdpejr6qi380/notification /* [headers] */ authorization <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 [response] type value description http status 200 ok example 200 ok { "resultcode" "0", "resultmessage" "success", "templates" [ { "id" "4091356465432138240", "type" "m", "messagetype" "s", "approval" "approved", "messagedetails" [ { "languagecode" "en", "message" "hi! {{name}}, this is merchant push " } ] }, { "id" "4092425423713135680", "type" "m", "messagetype" "s", "approval" "none", "messagedetails" [ { "languagecode" "en", "message" " hi! {{name}}, this is merchant push" } ] }, ] } [result] http status code description 200 200 ok 400 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 401 unauthorized authorization token is invalid or expired 500 500 internal server error 503 503 service unavailable get notification statistics [request] type value description method get url /partner/v1/card/template/{cardid}/stats/notifications headers authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier random generated uuid string path parameters cardidstring 32 required the wallet card identifier granted through the partner portal * the identifier is needed when updating a specific card template query parameters notificationidstring 32 optional if specified, statistics are returned only for the specified notification if not specified, aggregated statistics for all notifications of the card are returned starttimetamp ms required start date unix timestamp in milliseconds endtimestamp ms required end date unix timestamp in milliseconds metricstring 32 required metric impression/click example get /partner/v1/card/template/3hdpejr6qi380/stats/notifications?notificationid=123456789&start=1764514800000&end=1765465200000&metric=impression /* [headers] */ authorization <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 [response] type value description http status 200 ok example 200 ok { "resultcode" "0", "resultmessage" "success", "statistics" [ [ 1764820800000, 1 ], [ 1764896400000, 2 ], [ 1764900000000, 1 ], [ 1764903600000, 0 ], [ 1764907200000, 1 ], [ 1765134000000, 0 ] ] } [result] http status code description 200 200 ok 400 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 401 unauthorized authorization token is invalid or expired 500 500 internal server error 503 503 service unavailable
tutorials mobile
blogsamsung wallet is one of the leading digital wallet services, designed for and available on millions of samsung galaxy devices. to ensure that samsung wallet partners can easily develop, test and integrate samsung wallet cards, samsung wallet has recently introduced a new testing suite called wallet studio. wallet studio allows samsung wallet partners and developers to develop, design, modify and experiment with different types of samsung wallet cards for a variety of purposes. wallet studio lets partners preview the card's final design in advance, making the samsung wallet card development process easier. in this tutorial, you will learn about wallet studio and how you can utilize this tool to design and check samsung wallet cards in real-time. about wallet studio wallet studio is the complete testing and designing suite introduced by samsung wallet. the tool is available at the following url: https://partner.walletsvc.samsung.com/addtowallettest wallet studio includes many features to streamline the development and testing process for samsung wallet cards. one of its key features is to allow samsung wallet partners to preview how these cards will appear on samsung galaxy devices once their implementation is complete. in this article, the following 2 features of wallet studio are discussed and you will learn about their use cases: playground – for exploring different types of pre-configured samsung wallet cards add to samsung wallet – for testing your own cards during development these 2 features are very similar in nature. both of them can be used to design and preview samsung wallet cards in real-time. however, their use cases are vastly different. playground presents samsung wallet partners with all possible combinations of preconfigured samsung wallet cards. it can therefore be used to check various samsung wallet card types and their designs. the feature can be utilized to review design options for different samsung wallet cards and their functionalities before you decide to develop a specific card type. add to samsung wallet is meant for testing your own samsung wallet cards. once you have reviewed the different types of samsung wallet cards using playground and decided on a specific type of card to implement, you can then use the add to samsung wallet feature. to use this feature, you need to create your own samsung wallet card templates using the wallet partners portal. since this feature allows you to directly configure, test, preview and add your own cards using your own private keys and certificate id, it is best used during the actual implementation of your card. prerequisites to use wallet studio, you need to first complete the samsung wallet onboarding process. once you have completed the onboarding, you can use the samsung wallet playground to check different types of samsung wallet cards. to use add to samsung wallet, you additionally need to do the following: create your own private key & csr upload the csr in the samsung wallet partners portal create at least 1 card template in the samsung wallet partners portal additionally, a supported samsung galaxy device with samsung wallet installed is necessary in order to perform add to samsung wallet operations on mobile devices. checking all card types using wallet studio playground wallet studio's playground feature provides an easy-to-use web ui for viewing all possible combinations of samsung wallet cards and their subtypes. the purpose of playground is to check the design and availability of various different samsung wallet cards. in playground, you can check all available samsung wallet cards. these cards are all pre-created for an easier experience. using playground, you can preview various wallet card types and their designs, modify their attributes, and review the changes in real-time, either through the preview pane or by adding the card to samsung wallet. to use wallet studio playground: visit wallet studio at the following url: https://partner.walletsvc.samsung.com/addtowallettest hover on learn and a pop-up menu appears. click playground to use the playground feature. figure 1: wallet studio - playground selection on this page, the card type and subtype dropdown menu is visible in the top-right corner. select a card type. its subtype dropdown menu is then populated with all the available subtypes for that card type. then select a subtype from the dropdown menu and a sample card preview appears for the selected card type. alternatively, you can scroll down to the playground section of wallet studio and click on a card type. then the playground page appears for the selected card type. figure 2: wallet studio - playground once you select a card type, you can modify the card's attributes using the text fields, and the changes appear immediately in the preview pane. after modifying the attributes to your liking, you can click the "add to samsung wallet" button, and a samsung wallet card with the same design as displayed in the preview pane is added to your wallet. this only applies if you are using wallet studio from your samsung galaxy device that has samsung wallet installed. designing your own cards using add to samsung wallet add to samsung wallet is very similar to wallet studio playground. while playground offers the ability to experiment with pre-configured samsung wallet cards, add to samsung wallet is specifically designed for reviewing and testing your own custom cards. to visit the add to samsung wallet tab of wallet studio: open wallet studio hover on my card container and a pop-up menu appears. click add to samsung wallet to use the add to samsung wallet feature. figure 3: wallet studio – add to samsung wallet selection the card templates you created previously appear in the card picker area of this page. before you choose a card, you need to upload your private key to wallet studio. to use add to samsung wallet: click the "choose file" button. upload your private key. select your certificate id. select the desired card template from the card picker. a preview of the selected card appears below the card picker. you can now design, modify, and experiment with the card, as necessary, using wallet studio. figure 4: wallet studio - add to samsung wallet you can also add the card to your device at any time using the "add to wallet" button below the card preview. designing and testing samsung wallet cards in real-time once you select a card in either add to samsung wallet or playground, a preview of the card and its configurable attributes appear. all the modifiable attributes for the card are listed in the general section of the page. as soon as you modify an attribute, the preview of the card updates immediately to reflect the changes. this way, you can modify the card attributes and use the preview to monitor the effect on the card in real-time. figure 5: changes made in wallet studio (reflected immediately in the preview) if you hover over the ? icon of an attribute, it displays the required data type and length for the attribute. figure 6: specification for each attribute (viewed by hovering over the "?" icon) if you use an invalid data type or exceed the specified data length, the tool warns you in real-time. figure 7: wallet studio informing users if a value does not meet the specification to view the json value of the card, use the dropdown menu on the top-right corner of the general section and select json. the complete json object for the card appears. if you make any modifications to the json data, the changes appear immediately in the preview section. figure 8: viewing and editing the json values directly in wallet studio to modify the barcode or qr code for the card, click the "barcode/qr" button and the barcode section appears. click any of the supported barcode or qr code formats and the changes are applied to the card. this way, you can modify the entire card, including the qr and barcodes, using wallet studio. figure 9: barcode type and values, modified using wallet studio wallet studio can be used to design and create a complete samsung wallet card which can be used as a reference during the card implementation. additionally, wallet studio can be utilized differently on desktop and mobile devices. in a desktop environment, the playground and add to samsung wallet tools can be used primarily for designing and previewing samsung wallet cards and generating the card's required json data. on mobile devices, the preview is not displayed due to the smaller screen. instead, you can directly add the card to your device's samsung wallet using the "add to samsung wallet" button to see how it looks. figure 10: wallet studio flow on mobile devices conclusion in this blog article you learned how you can make use of wallet studio to design and test samsung wallet cards on samsung galaxy devices. with this knowledge, feel free to proceed to the next steps of implementing samsung wallet cards. for additional reference you can check out the following resources: visit the samsung wallet documentation. check previous blogs on samsung wallet to learn about various features of samsung wallet. learn how you can generate cdata in real-time . learn how to handle samsung wallet card updates. for additional queries and support, feel free to reach out to us through the samsung developer forum.
Mobassir Ahsan
Develop Samsung Wallet
docintroduction welcome to the samsung wallet cards integration guide samsung wallet is a secure and unified digital wallet solution designed for samsung galaxy devices, offering users a convenient way to store and manage a wide range of digital assets—including payment cards, loyalty memberships, travel tickets, coupons, digital ids, and more seamlessly integrated with samsung’s ecosystem, it enables contactless payments via samsung pay, supports biometric authentication for enhanced security, and allows for real-time interactions like push notifications and location-based reminders samsung wallet empowers partners and developers to deliver personalized, digital-first experiences while ensuring user data remains private and protected samsung wallet is an e-wallet service that allows users of samsung devices to securely store and access various digital items, such as credit cards, boarding passes, loyalty cards, and digital keys by combining multiple services into one platform, it streamlines everyday transactions and digital storage in a convenient and user-friendly interface users can add their ticket, coupon, boarding pass, and other types of data into samsung wallet using an add to wallet link via multiple online channels like app, web, e-mail, or social media messages benefits of samsung wallet cards service this document provides an overview for integration partners looking to enable digital items e g , tickets, coupons, and passes on samsung wallet this guide will walk you through the setup, onboarding, implementation, and management steps needed to launch your wallet-enabled services this document describes how to implement samsung wallet cards service features from the integration partner's point of view a partner account is a samsung developer account registered on the samsung wallet partners portal it allows samsung wallet partners to manage their wallet services, register card templates, access credentials partner id, card id , and communicate securely with samsung’s servers to integrate with samsung wallet cards, partners follow a structured process that enables their digital content—such as tickets, coupons, and passes—to be stored and managed in the samsung wallet app the implementation includes the following stages partner account setup to begin, the integration partner must create a samsung account and register as a service provider in the samsung wallet partners portal this account grants access to tools and resources needed for integration, including card management, api credentials, and documentation onboarding during onboarding, the partner submits basic company details, once submitted, samsung issues the following key integration credentials partner id card id certificates for secure communication via a signed csr these credentials are required for card generation, secure api calls, and managing wallet content add to samsung wallet integration the partner integrates the "add to samsung wallet" functionality into their digital platforms—such as apps, websites, or emails—by adding a button or link when end users click the button, the link triggers the process of creating and storing a digital card in samsung wallet partners can deliver content in two ways data transmit link encodes card content directly in a jwt json web token data fetch link samsung fetches the content from a partner's server upon user action each card is uniquely identified by a reference id refid reusing the same id updates the card silently wallet card management after cards are added to users' samsung wallet apps, the partner can manage them by interacting with samsung’s server apis this includes updating card content e g , time changes, status updates sending notifications for specific events cancelling or deleting cards receiving events via the send card state callback e g , when a user adds or removes a card these server-to-server communications ensure cards stay current and reflect real-time changes
Develop Samsung Wallet
docoverview this section describes the add to samsung wallet process, which enables partners to register cards in samsung wallet and define their baseline data, presentation, and capabilities add to wallet is the standard and mandatory process for publishing wallet cards the lifecycle, portal operations, and rest apis described in this section apply to all supported card types most card services rely solely on the add to wallet process and do not require any additional feature integration scope add to samsung wallet defines card registration and lifecycle management template configuration and publication card metadata, layout, and action data definition capability declaration, including optional nfc support the behaviors and state transitions described in this section represent the canonical integration path for wallet cards optional feature extensions some card programs may support additional device-level capabilities beyond standard card presentation where applicable, such features are treated as optional extensions to the base add to wallet process detailed technical and operational requirements for those extensions are described in separate documentation service flow the add to samsung wallet atw service provides a set of interfaces that enable users to easily add digital content to their samsung wallet, enhancing convenience by allowing users to store, manage, and access items such as loyalty cards, tickets, boarding passes, and more directly within the app the service involves several steps, from content preparation to updates and managing card states preparation steps to prepare the contents intended to store on samsung wallet must be tokenized as jwt json web token when using data transmit link considering what environments, the button will be displayed in such as app, web, mms, or email when you plan to integrate this service refer to implement the button section for more details note-the data transmit link is used for communication between the partner’s server and samsung wallet this link sends any additional information related to the card such as updates or notifications about the card’s status add to wallet steps to add to wallet once users who want to store contents click or tab the linked button, it initiates the process of adding to samsung wallet if you are providing the full pass content, use the data transmit link option note-the data fetch link enables the partner's backend system to pull content dynamically when a user clicks the "add to wallet" button, the system fetches the necessary content e g , card details, event data, loyalty points using this link samsung will notify the result through server interface named send card state send card event this works as a callback for 'add to wallet' process delivering events and country code for the user wallet card to handle interactions after storing content in samsung wallet, server interfaces are required these interfaces are defined in the updating wallet card specs see api guidelines for more details update wallet cards steps to update wallet cards partners may need to update or modify the content stored in samsung wallet for example, a user might accumulate more loyalty points, or flight details may change to update the wallet card content, partners must call the samsung server api the cc2 path parameter must match the cc2 value from the send card state send card event api notification triggered by the added event refer to samsung server api section for more details update notification is for single content cancel notification is for calling off every user's wallet card content related to a specific event get card data payload has the same format of card information as the one of 'add to wallet' send card state send card event can also have an event 'deleted' to notify a wallet card deletion on samsung wallet by users gift cards and generic cards currently do not support update notification functionality card states wallet cards within samsung wallet can have various states e g , active, expired, used, suspended for each content provider’s notifications and user actions the state diagram below describes wallet card states from beginning to end state diagram
Learn Code Lab
codelabverify your id with samsung wallet objective learn how to verify a user's identity with the id information registered in their samsung wallet app partnership request to create, manage, and monitor performance of wallet cards with the samsung wallet partners site, you must become an official samsung partner once done, you can fully utilize this code lab you can learn more by visiting samsung wallet partner onboarding process, here in samsung developers notein accordance with the applicable samsung wallet partners agreements, this code lab covers the setup and use of the verify with samsung wallet service for purposes of integrating samsung wallet with partner sites and apps the use cases and corresponding code samples included are representative examples only and should not be considered as either recommended or required overview verify with samsung wallet enables users to utilize the digital id added to their wallets to simplify online transactions that require an identity verification a mobile device with samsung wallet installed is required to verify the user’s identity through this feature this feature uses the relying party card type to verify a user's identity using the id information stored in samsung wallet this feature supports app-to-app app2app and web-to-app web2app integration models the web2app integration supports the partner's mobile web application to request a verification to the samsung wallet app the app2app integration supports the partner’s mobile application to request a verification to the samsung wallet app when the partner site requests the user to verify their identity, the verify with samsung wallet button is displayed the user is redirected to the samsung wallet app where they verify their identity via pin or biometrics once verified, the user's identity information is sent to the partner and the transaction will proceed noteas of 2024, this feature is only available in the united states and can be used by the state government with mobile driver's license mdl support for more information, visit samsung dev support for detailed description, see verify with samsung wallet set up your environment you will need the following access to samsung wallet partners site samsung galaxy device that supports samsung wallet app samsung wallet app latest version android studio latest version recommended java se development kit jdk 11 or later supported mobile driver's license be added to samsung wallet app internet browser, such as google chrome openssl intellij idea or any java ide optional sample code here is a sample code for you to start coding in this code lab download it and start your learning experience! verify with wallet sample code for app2app integration 802 3 kb start the onboarding process partners can manage wallet cards and monitor performance with the samsung wallet partners site to join as partner generate a private key and certificate signing request csr using the openssl command you can follow the instructions in security factors notea private key enables encryption and is the most important component of certificates while csr, which is a necessary factor to obtain a signed certificate, includes the public key and additional information like organization and country proceed to register in the samsung wallet partners site using your samsung account follow the samsung wallet partner onboarding process upload the generated csr for data encryption in encryption setting management section after registration, you will receive a welcome email noteupon receiving the certificates via email, be sure to keep the information safe from exposure and only use them for the following purposes signed certificate used along with the private key to sign data samsung certificate used to encrypt card data and validate authentication tokens in server api headers create a relying party wallet card follow the steps below to create a wallet card in samsung wallet partners site go to wallet cards > manage wallet card and click add wallet card in wallet card template field, choose [wallet] relying party as wallet card type and relyingparty > others as sub type select the design type and click done in wallet card custom setting, click change, and choose drivers as authentication issuer you can also select specific mdls such as below notethe authentication issuer is a unique property of the relying party card type the identity provider of the authentication issuer is supported depending on the service location set for example, if the service location is in the united states, the authentication issuer field only supports any identity provider in the united states region in main headquarters location, select united states once finished, select save to view all registered information launch wallet cards you can launch and request activation of the cards by clicking the launch button upon agreeing to proceed, the launch button text changes to launched and the card status becomes verifying create a verify with samsung wallet button app2app for the app2app integration, you need to setup the button inside the mobile application in android studio, click open locate the downloaded android project rpclient_codelab from the directory and click ok go to app > kotlin+java > com samsung android sample rpclient > presentation > partners and, in the partnersrequestfragment kt file, add the verify with samsung wallet button inside the oncreateview function glide with this load partner getverifybuttonimage into binding verifybutton set up a click listener for the verifybutton binding verifybutton setonclicklistener { /// add the requestdata variable to prepare the request fields /// add the applink variables to request the card information /// call the applink method to request verification } inside the listener, add the requestdata variable to prepare the request fields for verification val requestdata = demodata requestdata add the applink variables to request the card information val applink = rpclientapis buildapplink partnerid = partner getpartnerid , cardid = partner getcardid , payload = partner buildapp2apppayload , samsungpublickey = partner getsamsungpublickey , partnerpublickey = partner getpartnerpublickey , partnerprivatekey = partner getpartnerprivatekey , isstagingserver = true the data being requested are as follows partnerid = gets the partner id from the identification card used cardid = gets the card id from the identification card used payload = builds the app2app payload samsungpublickey = gets the samsung public key partnerpublickey = gets the partner's public key partnerprivatekey = gets the partner's private key isstagingserver = checks if the application runs on a staging environment noterequested data such as partnerid, public keys, and private keys are generated during the onboarding process, while cardid is generated when you create a wallet card however, in this code lab, these data is already predefined and included in the sample mobile app call the applink method to request verification this method creates a channel between the test app and samsung wallet app to create the request and response data for the verification process applink? let { log i tag, applink rpclientapis request "com samsung android spay", uuid randomuuid tostring , applink, object rpclientapis onresponselistener { override fun ongetmdocrequestdata deviceengagementbytes bytearray bytearray? { log i tag, "deviceengagementbytes=${deviceengagementbytes tohex }" val keypair = securerepository generateeckeypair log i tag, "requestdata=$requestdata" val encryptedsessionestablishmentbytes = securerepository buildsessionestablishment requestdata, deviceengagementbytes, keypair log i tag, "encryptedsessionestablishmentbytes=${encryptedsessionestablishmentbytes? tohex }" return encryptedsessionestablishmentbytes } override fun onmdocresponse encryptedresponsebytes bytearray { log i tag, "encryptedresponsebytes=${encryptedresponsebytes tohex }" try { val plainresponse = securerepository decryptmdocresponse encryptedresponsebytes log i tag, "plainresponse=${plainresponse? toprettyjson }" val responsedata = plainresponse? toprettyjson onresponse postvalue responsedata } catch e exception { e printstacktrace } } override fun onmdocresponsefailed exception exception { log i tag, "onmdocresponsefailed ${exception} " onerror postvalue exception } } } run and test the application app2app go to build > build app bundle s / apk s > build apk s to build the application install the apk file to your mobile device and test the sample app as follows open the sample app and choose sdc code lab press the verify with samsung wallet button once you are redirected to the samsung wallet app, press the verify button the samsung wallet app shows a checkmark to indicate that the identity has already been verified while the sample app displays a verification success screen test the verify with samsung wallet button web2app for the web2app integration, you can use the test tool to test the verify with samsung wallet button open a web browser on your computer or galaxy mobile device and go to the following link partner walletsvc samsung com/addtowallettest go to verify with wallet tab and click choose key file to upload your private key in the select card dropdown menu, select the card you created to display its details navigate to the form tab and modify the data as desired you can change the logo image or provider name press the verify with samsung wallet button once you are redirected to samsung wallet, press the verify button the samsung wallet app shows a checkmark to indicate that the identity has already been verified go back to the test tool, open the mdoc tab, and click the check result button it displays a result success popup when the verification process is successful tokenize card data and implement the verify with wallet button to your service optional notethis step is optional, but if you want to learn how to integrate the verify with wallet button into your services like an android app, web app, or email, you can follow these steps the samsung wallet partners site provides generated verify with samsung wallet scripts for each wallet card you create you can simply copy and paste these scripts into your partner apps web and android or include them in emails/mms messages to implement the verify with wallet button, follow these steps go to the [verify with wallet script guide] section of the card you created click show to view the available scripts and then copy the appropriate script for your service develop a program that can generate tokenized card data cdata the cdata represents the actual content of the wallet card and comes in different formats depending on the card type you can check the cdata generation sample code for reference the cdata is derived from the card data, which is in json format for testing purposes, you can utilize the generated json from the test tool follow the implementing button guide to determine where to incorporate the generated cdata and gain further insights into this process you are redirected back to your app and your identity is verified you're done! congratulations! you have successfully accomplished the topic of this code lab now, you are ready to verify your id with the verify with samsung wallet button into your application on your own! if you're having trouble, you may download this file verify with wallet complete code for app2app integration 802 5 kb to learn more, explore samsung wallet
Develop Samsung Wallet
docaction data this section describes action data, which defines actions that can be associated with a wallet card during the add to wallet process action data enables a card to expose predefined actions that can be triggered from samsung wallet, allowing partners to define how users interact with the card beyond static presentation overview action data represents a structured definition of actions associated with a wallet card these actions are defined at card issuance time and become part of the card data registered in samsung wallet from the add to wallet perspective, action data is optional is defined and delivered during the add to wallet process applies uniformly to all cards that require actionable behavior applicability and api usage action data may be used across various card services to support different interaction scenarios typical usage includes launching application-specific behavior triggering partner-defined actions supporting extended interaction flows initiated from the wallet api role get card data partner api return procedural data during issuance or refresh request action partner api primary carrier of action data send card event partner api used by partners to report final lifecycle outcomes and terminal events of wallet card instancesformerly referred to as send card state update notification samsung api notify state transitions caused by completed actions the presence of action data does not impose any requirement on how the action is executed at runtime conceptual model action as a mediated process an action represents a single logical step within a larger workflow responsibilities samsung wallet server o initiates or forwards actions o maintains transaction continuity o does not own business logic or credentials partner server o interprets actiontype o executes domain-specific logic o returns next-step instructions or execution results idempotency is evaluated within the scope of a card program partner context , primarily based on the card instance identifier refid and the requested actiontype detailed idempotency and deduplication rules are defined in section idempotency and request deduplication idempotency and request deduplication idempotency identifier all apis defined in this specification use refid as the primary identifier of a card instance at minimum, the wallet backend must guarantee idempotent handling of requests scoped by refid actiontype this ensures that repeated requests caused by network retries do not result in duplicated side effects idempotency scope claification the refid value is guaranteed to be unique within a given card program partner context , but is not guaranteed to be globally unique across different partners or programs accordingly, samsung wallet evaluates idempotency within the card template scope internally, the effective idempotency key may be composed of cardid, refid, actiontype, actioninstanceid partners are required to ensure uniqueness of refid within their own card template, but are not required to generate globally unique refid values across templates recommended idempotency extension to safely distinguish retries from logically new attempts, the following enhancement is recommended each action data request should include a unique request-level identifier e g actioninstanceid idempotency should be evaluated using the composite key refid, actiontype, actioninstanceid if actioninstanceid is not present, the server must fall back to refid, actiontype and must not reject the request solely due to the absence of actioninstanceid concurrent action handling for a given refid, the server must define and enforce valid state transitions if an action is received that is not valid for the current state the server must reject the request with http 409 state_conflict the response must include an appropriate error code describing the conflict common action envelope all actions are defined using a common envelope format the envelope includes action identifier action type action-specific payload this structure allows samsung wallet to interpret and route actions in a consistent manner [common action envelope structure] field description actiontypestring ≤ 32 required identifier of the requested action actionpayloadobject required container for action-specific data actionpayload actiondetailsobject required contextual metadata for the action see actiondetails object actionpayload actiondetails actioninstanceidstring optional unique request-level identifier for idempotency and deduplication see idempotency and request deduplication actionpayload {fields}object optional action-specific payload fields whose semantics are determined solely by actiontype normative rules when actiontype is present, actionpayload must be present the semantic meaning of actionpayload {fields} is determined solely by actiontype unknown fields must be ignored, unless explicitly agreed by both parties actiondetails object the actiondetails object contains action-specific data required to perform the defined action the structure and contents of actiondetails depend on the action type and the intended use case the actiondetails object provides contextual metadata for an action field description timestampstring optional unix epoch milliseconds eventstring optional logical event register, update, reissue, etc reasonstring optional reason for triggering the action levelstring optional info, warn, error sourcestring optional wallet_app, wallet_server, partner_server codestring optional result or error code messagestring optional human-readable message action usage pattern action data may be applied to different usage patterns depending on the card service these patterns define how action data is interpreted and used after the card is added to samsung wallet general action usage in general usage scenarios, action data is used to define actions that can be initiated by the user from the wallet interface these actions are handled according to the action type and associated payload access-related action usage optional in some card services, action data may be used to support access-related interactions in such cases action data may include access-related information the action definition may serve as an entry point for access-related processing the inclusion of access-related action data during add to wallet does not, by itself, enable or activate access functionality detailed access-specific behavior is described in the separate access guide
tutorials mobile
blogintroduction the samsung wallet application lets you store cards that can be used for various purposes. if you want to provide reward points to your members, use the newly introduced loyalty card type, also known as a membership card. in this article, we show how you can create a loyalty card in the wallet partners portal. we also provide guidelines to implement the card, so that you can integrate the loyalty card into your application. card setup before adding the card to samsung wallet, create your card in the wallet partners portal. log in to the wallet partners portal. select wallet cards from the sidebar and then navigate to create wallet card. follow the instructions in the general information section to complete the form. select "loyalty card" from the wallet card template menu. select your location from the main (headquarters) location menu. if you get a "country not supported" error during a later phase, contact samsung developer support. after completing the form, save the card. all created cards are listed in the manage wallet card view. you can view, edit, and delete the card information from this view. finally, launch the card. card specification once a card is created in the wallet partners portal, the card can be implemented in the partner application so that the user can purchase and use it. to do so, implement the "add to samsung wallet" button in your application. for this purpose, generate a card data token and create a final url. this url is integrated with the "add to samsung wallet" button to add the card to samsung wallet. for generating a card data token, you need to define the wallet card data. the loyalty card follows the specification below. name description title required. the main title of the loyalty card. in the sample card, this field has the value "card title". eventid optional. the event id. use this id to find and process an action to an event to all loyalty cards with the same id. groupingid optional. identifier to group related cards. subtitle1 optional. an auxiliary field for showing supporting information about your card. logoimage optional. logo image displayed in the card item. the image size must be a maximum of 256 kb. logoimage.darkurl optional. logo image displayed in the card item in dark mode. the image size must be a maximum of 256 kb. logoimage.lighturl optional. logo image displayed in the card item in light mode. the image size must be a maximum of 256 kb. providername required. provider name for the loyalty card. startdate optional. card validity start date. the date format is an epoch timestamp in milliseconds. enddate optional. card validity end date. the date format is an epoch timestamp in milliseconds. locations optional. list of locations where the card can be used. this information can be used to provide location-based service and samsung wallet can use this information to show maps, place names and addresses. you can find more about the location field and the json format in the documentation. noticedesc optional. the notices section can be used for any additional information for your card. you can use html tags without any css or script in this field. for the test card, this field contains the following list: <ul> <li>loyalty card notice. <a href="https://www.samsung.com/">learn more.</a></li> <li>loyalty card notice.</li></ul> csinfo optional. customer service information visible to the card user. this information is stored as key-value pairs with the following keys that correspond with the categories of information shown to the user: callemail website applinklogo required. application link logo url applinkname required. application link name applinkdata required. application link destination url bgimage optional. background image for the card bgcolor optional. background color for the card. if you use bgcolor together with bgimage, they are displayed in a predefined ratio. to only display a background image, omit the bgcolor value. the following image shows the difference between a scenario where both bgimage and bgcolor are used (left) to one where only bgimage is used (right). fontcolor optional. font color on the card art. barcode.value optional. barcode data and serial number. barcode.serialtype optional. barcode presentation type. for more details, see the presentation types (serialtype) table. barcode.ptformat optional. barcode presentation format. you can find all supported presentation formats in the presentation formats (ptformat) table. barcode.ptsubformat optional. barcode format. some commonly used barcode formats are listed in the barcode formats (ptsubformat) table. barcode.errorcorrectionlevel optional. qr code error correction level. four error correction levels are available: l/m/q/h. merchantid optional. merchant identifier. use this field if you have merchant id. merchantname optional. merchant name. amount optional. total amount of points or initial balance. it is recommended to use a one-letter currency symbol. use any of these formats: $1,000 or 1,000p. balance optional. available points or remaining balance. use the same format as the amount field. card json example the card data must be in the json format and needs to follow the specific structure. the example below shows a card data sample that we have used to implement the loyalty card used in this content. modify the card data as per your card information. find more about the card data format in the wallet cards documentation. { "card": { "type": "loyalty", "subtype": "others", "data": [ { "refid": "9400ae65-751b-4327-866c-37e8c228f1c4", "createdat": 1672574400000, "updatedat": 1672574400000, "language": "en", "attributes": { "title": "card title", "eventid": "event-001", "groupingid": "group-001", "orderid": "order-001", "subtitle1": "card subtitle", "logoimage": "https://kr-cdn-gpp.stg.mcsvc.samsung.com/devops/ops/partner-portal/test-tool/assets/img/ticket_movie.jpg", "logoimage.lighturl": "https://kr-cdn-gpp.stg.mcsvc.samsung.com/devops/ops/partner-portal/test-tool/assets/img/ticket_movie.jpg", "logoimage.darkurl": "https://kr-cdn-gpp.stg.mcsvc.samsung.com/devops/ops/partner-portal/test-tool/assets/img/ticket_movie.jpg", "providername": "provider name", "startdate": 1715533051242, "enddate": 1715833051242, "noticedesc": "<ul><li>loyalty card notice. <a href=\"https://www.samsung.com/\">learn more.</a></li><li>loyalty card notice.</li></ul>", "csinfo": "{\"website\":\"https://homepage.com/cs\",\"email\":\"cs@email.com\",\"call\":\"555 333 111\"}", "applinklogo": "https://play-lh.googleusercontent.com/znfa1roz7hpv9j-jiacbjmjudl2x-fnuwte0oyvbbcwvf5vpzoqqikbxgk7d-aptvag=w240-h480-rw", "applinkname": "loyalty card link", "applinkdata": "www.samsung.com", "bgimage": "https://djcpagh05u38x.cloudfront.net/wlt/us/stg/x1iwgocnroqa5dmwpykfkq/qupknpwntmqt7letkgufag.png", "bgcolor": "#ffffff", "fontcolor": "#ffffff", "locations": "[{\"lat\":48.861614505643196,\"lng\":2.380811870098114,\"address\":\"38 rue saint-maur, 75011 paris\",\"name\":\"atelier des lumieres\"}]", "amount": "$1,000", "balance": "$100", "barcode.value": "cs16138353212584806754fg1802", "barcode.serialtype": "qrcode", "barcode.ptsubformat": "qr_code", "barcode.ptformat": "qrcodeserial", "barcode.errorcorrectionlevel": "m", "merchantid": "123344433", "merchantname": "merchantname" } } ] } } test with the add to wallet test tool once the card data specification details and the json structure of the loyalty card are established, we can test the "add to samsung wallet" functionality. first, we use the add to wallet test tool as this tool provides minimal card data in json format by default. after that, you can modify the json data and test the cards as you want. follow the instructions below to use the add to wallet test tool. for more details, refer to the add to wallet test tool documentation. sign in to the add to wallet test tool. enter the private key in the enter partner private key field. select the loyalty card we have created and then enter the json in the data field. finally add the card to samsung wallet. create jwt token if testing with add to wallet test tool is successful, you can implement the "add to samsung wallet" functionality with your application or website and handle the card data token generation process on your server. finally, generate the url and integrate it with the "add to samsung wallet" button. for more details on the implementation, check out our implementing "add to wallet" in an android application article, which is a complete guide to implementing the "add to samsung wallet" button on an android application and handling the card data token generation process on the server side. conclusion once the implementation of both the application and server is completed, you can integrate the loyalty card with your production server and perform a full test on the loyalty card. after the test is done, an admin will check and set the card as active. while implementing your card, follow the steps shown in seamlessly integrate "add to wallet" for samsung wallet, as this article focuses on the common mistakes. if you have any questions or face difficulties implementing the card, you can contact samsung developer support. related resources integrate "add to samsung wallet" button into partner services implementing "add to wallet" in an android application seamlessly integrate "add to wallet" for samsung wallet
M. A. Hasan Molla
We use cookies to improve your experience on our website and to show you relevant advertising. Manage you settings for our cookies below.
These cookies are essential as they enable you to move around the website. This category cannot be disabled.
These cookies collect information about how you use our website. for example which pages you visit most often. All information these cookies collect is used to improve how the website works.
These cookies allow our website to remember choices you make (such as your user name, language or the region your are in) and tailor the website to provide enhanced features and content for you.
You have successfully updated your cookie preferences.