{"id":32417,"date":"2016-02-08T17:19:29","date_gmt":"2016-02-08T11:49:29","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=32417"},"modified":"2017-03-27T16:10:21","modified_gmt":"2017-03-27T10:40:21","slug":"integrating-paytm-wallet-sdk-in-android-application","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/integrating-paytm-wallet-sdk-in-android-application\/","title":{"rendered":"Integrating Paytm Wallet SDK in an Android Application"},"content":{"rendered":"<h3 style=\"text-align: left\"><strong>How Paytm SDK Work<\/strong><\/h3>\n<p style=\"text-align: left\">The Paytm Payments SDK for <a title=\"iOS application development services\" href=\"http:\/\/www.tothenew.com\/mobile-ios-application-development-services\" target=\"_blank\">iOS <\/a>and <a title=\"Android Application Development Services\" href=\"http:\/\/www.tothenew.com\/mobile-android-application-development-services\" target=\"_blank\">Android <\/a>enables merchants to integrate payments into their mobile app. The following diagram describes how a typical payment transaction works. The components involved in completing a payment transaction are as follows:<\/p>\n<ul style=\"text-align: left\">\n<li>User Placing the Order: The end user who wants to initiate a payment transaction.<\/li>\n<li>Merchant Application: The Application of the merchant where the Paytm Wallet needs to be integrated. This may be an Android or iOS application.<\/li>\n<li>Paytm SDK: The SDK provided by Paytm to make all the API calls to Payment Gateway and Merchant&#8217;s Web server (which is explained in the next point).<\/li>\n<li>Merchant&#8217;s Web server: The merchant needs to setup this web server at their end. The logic to generate and verify CheckSum needs to be setup on this server. Checksum helps ensure the integrity of transactions i.e. it helps ensure that the transaction requests have not been intercepted and tampered with. Checksum utilities are provided by Paytm for different development platforms.<\/li>\n<li>Payment Gateway: The Payment Gateway of Paytm. It will communicate with the Paytm SDK and Merchant&#8217;s Web server. In case, the payment is made via credit cards\/debit cards\/net banking, the Payment Gateway will interact with the Banks as well.<\/li>\n<\/ul>\n<p style=\"text-align: left\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-32423\" src=\"\/blog\/wp-ttn-blog\/uploads\/2016\/02\/SDK-Flow.jpg\" alt=\"SDK Flow\" width=\"534\" height=\"514\" \/><\/p>\n<h3 style=\"text-align: left\"><strong>Steps for Android Integration<\/strong><\/h3>\n<p style=\"text-align: left\">Step are given below.<\/p>\n<ul>\n<li style=\"text-align: left\">download PGSDK library from http:\/\/paywithpaytm.com\/developer\/#web_plugin or <\/li>\n<li style=\"text-align: left\">Client side certificate (Optional :provide by PAYTM Web).<br \/>\nPassword for the Client side certificate. (Optional: provided by PAYTM Web).<br \/>\nAdd Client side certificate file inside raw folder. If raw folder is not there then create raw folder within &#8220;res&#8221; folder.<\/li>\n<li style=\"text-align: left\">Add the INTERNET and ACCESS_NETWORK_STATE permissions to your AndroidManifest.xml. These two permissions are required for PGSDK Service to run.\u00a0AndroidManifest.xml\u00a0&lt;uses-permission android:name=&#8221;android.permission.INTERNET&#8221;\/&gt;<br \/>\n&lt;uses-permission android:name=&#8221;android.permission.ACCESS_NETWORK_STATE&#8221;\/&gt;<\/li>\n<li style=\"text-align: left\">Add\u00a0PaytmPGActivity in your AndroidManifest.xml and this activity already present in your\u00a0PGSDK.This Activity perform all transaction related information and provide you callback.<\/li>\n<\/ul>\n<h4 style=\"text-align: left\">AndroidManifest.xml<\/h4>\n<blockquote>\n<p style=\"text-align: left\">&lt;activity<br \/>\nandroid:name=&#8221;com.paytm.pgsdk.PaytmPGActivity&#8221;<br \/>\nandroid:configChanges=&#8221;keyboardHidden|orientation|keyboard&#8221;<br \/>\n\/&gt;<\/p>\n<\/blockquote>\n<h3 style=\"text-align: left\">How to use API<\/h3>\n<div>\n<div class=\"ng-scope\">\n<div class=\"ng-isolate-scope\">\n<ol>\n<li value=\"1\">Obtain the PaytmPGService instance. Either obtain Staging service or obtain Production service depending on your need. <em>PaytmPGService.getStagingService()<\/em> will return the <em>Service<\/em> Object pointing to Staging Environment.<em>PaytmPGService.getProductionService()<\/em> will return the <em>Service<\/em> Object pointing to Production Environment.<\/li>\n<li value=\"2\">Create PaytmOrder Object holding the Order Information. Syntax for creating PaytmOrder Object is as follows:<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"ng-scope\">\n<div class=\"block-code block-show-code ng-isolate-scope ng-pristine ng-valid\">\n<div class=\"ng-scope\">\n<blockquote>\n<p class=\"cm-s-neo\"><span class=\"cm-variable\">PaytmOrder<\/span> <span class=\"cm-variable\">Order<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">PaytmOrder<\/span>(<span class=\"cm-variable\">Map<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">String<\/span>, <span class=\"cm-variable-3\">String<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">paramMap<\/span>);<\/p>\n<\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div class=\"ng-scope\">\n<div class=\"ng-isolate-scope\">\n<p>Where,<br \/>\n<em>paramMap<\/em> is the map containing request parameter names and their respective values. Please refer Example given in the next sub-section.<\/p>\n<ol>\n<li value=\"3\">Create PaytmMerchant Object holding the Merchant Configuration. Syntax for creating PaytmMerchant Object is as follows:<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"ng-scope\">\n<div class=\"block-code block-show-code ng-isolate-scope ng-pristine ng-valid\">\n<div class=\"ng-scope\">\n<blockquote>\n<p class=\"cm-s-neo\"><span class=\"cm-variable\">PaytmMerchant<\/span> <span class=\"cm-variable\">Merchant<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">PaytmMerchant<\/span>(<span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inChecksumGenerationURL<\/span>, <span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inChecksumVerificationURL<\/span>)<span class=\"cm-variable\">\u037e<\/span><\/p>\n<\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div class=\"ng-scope\">\n<div class=\"ng-isolate-scope\">\n<p>where,<br \/>\n<em>inChecksumGenerationURL<\/em> is the Merchant Checksum Generation URL and<br \/>\n<em>inChecksumVerificationURL<\/em> Merchant Checksum Verification URL<\/p>\n<ol>\n<li value=\"4\">Create PaytmClientCertificate Object holding the Certificate information. This step is conditional. Only if the client certificate is requested and used by merchant (as given in <em>Prerequisites<\/em> section above), then create the PaytmClientCertificate object. Otherwise pass the PaytmClientCertificate as null. Syntax for creating PaytmClientCertificate Object is as follows:<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"ng-scope\">\n<div class=\"block-code block-show-code ng-isolate-scope ng-pristine ng-valid\">\n<div class=\"ng-scope\">\n<blockquote>\n<p class=\"cm-s-neo\"><span class=\"cm-variable\">PaytmClientCertificate<\/span> <span class=\"cm-variable\">Certificate<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">PaytmClientCertificate<\/span>(<span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inPassword<\/span>, <span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inFileName<\/span>)<span class=\"cm-variable\">\u037e<\/span><\/p>\n<\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div class=\"ng-scope\">\n<div class=\"ng-isolate-scope\">\n<p>where,<br \/>\n<em>inPassword<\/em> is the Client side certificate password<br \/>\n<em>inFileName<\/em> is the Client side certificate file name. This file must be present inside &#8220;raw&#8221; folder.<\/p>\n<ol>\n<li value=\"5\">Call the <em>initialize() <\/em>method to set PaytmOrder, PaytmMerchant and PaytmClientCertificate Objects. Method Signature is as follows:<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"ng-scope\">\n<div class=\"block-code block-show-code ng-isolate-scope ng-pristine ng-valid\">\n<div class=\"ng-scope\">\n<blockquote>\n<p class=\"cm-s-neo\"><span class=\"cm-variable-3\">void<\/span> <span class=\"cm-variable\">com<\/span>.<span class=\"cm-variable\">paytm<\/span>.<span class=\"cm-variable\">pgsdk<\/span>.<span class=\"cm-variable\">PaytmPGService<\/span>.<span class=\"cm-variable\">initialize<\/span>(<span class=\"cm-variable\">PaytmOrder<\/span> <span class=\"cm-variable\">inOrder<\/span>, <span class=\"cm-variable\">PaytmMerchant<\/span> <span class=\"cm-variable\">inMerchant<\/span>, <span class=\"cm-variable\">PaytmClientCertificate<\/span> <span class=\"cm-variable\">inCertificate<\/span>);<\/p>\n<\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"ng-scope\">\n<address class=\"ng-isolate-scope\"><em>inOrder<\/em>\u00a0 is the Object which is holding Order Information.<br \/>\n<em>inMerchant\u00a0<\/em> is the Object which is holding Merchant Configuration.<br \/>\n<em>inCertificate<\/em> is the Object which is holding Certificate Information. Pass this as null if no client certificate is used by the merchant (as given above in the <em>Prerequisites<\/em> section<\/address>\n<div class=\"ng-isolate-scope\"><\/div>\n<div class=\"ng-isolate-scope\"><\/div>\n<div class=\"ng-isolate-scope\"><\/div>\n<div class=\"ng-isolate-scope\">\n<h3>Example-<\/h3>\n<pre class=\"cm-s-neo\"><span class=\"cm-comment\">\/\/Getting the Service Instance. PaytmPGService.getStagingService()  will return the Service pointing to Staging Environment and PaytmPGService.getProductionService() will return the Service pointing to Production Environment.<\/span>\r\n<span class=\"cm-variable\">PaytmPGService<\/span> <span class=\"cm-variable\">Service<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">null\u037e<\/span>\r\n<span class=\"cm-variable\">Service<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">PaytmPGService<\/span>.<span class=\"cm-variable\">getStagingService<\/span>()<span class=\"cm-variable\">\u037e<\/span>\r\n<span class=\"cm-comment\">\/\/or<\/span>\r\n<span class=\"cm-variable\">Service<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">PaytmPGService<\/span>.<span class=\"cm-variable\">getProductionService<\/span>()<span class=\"cm-variable\">\u037e<\/span>\r\n<span class=\"cm-comment\">\/\/Create new order Object having all order information.<\/span>\r\n<span class=\"cm-variable\">Map<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">String<\/span>, <span class=\"cm-variable-3\">String<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">paramMap<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">HashMap<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">String<\/span>, <span class=\"cm-variable-3\">String<\/span><span class=\"cm-operator\">&gt;<\/span>();\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"REQUEST_TYPE\"<\/span>, <span class=\"cm-string\">\"DEFAULT\"<\/span>);\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"ORDER_ID\"<\/span>, <span class=\"cm-variable\">\u2018ORDER12345\u2019<\/span>)\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"MID\"<\/span>, <span class=\"cm-string\">\"klbGlV59135347348753\"<\/span>);\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"CUST_ID\u201d,\u2019CUST110\u2019)<\/span>\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"CHANNEL_ID\"<\/span>, <span class=\"cm-string\">\"WAP\"<\/span>);\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"INDUSTRY_TYPE_ID\"<\/span>, <span class=\"cm-string\">\"Retail\"<\/span>);\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"WEBSITE\"<\/span>, <span class=\"cm-string\">\"paytm\"<\/span>);\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"TXN_AMOUNT\"<\/span>, <span class=\"cm-string\">\"1.0\"<\/span>);\r\n<span class=\"cm-variable\">paramMap<\/span>.<span class=\"cm-variable\">put<\/span>(<span class=\"cm-string\">\"THEME \"<\/span>, <span class=\"cm-string\">\"merchant\"<\/span>);\r\n\r\n<span class=\"cm-variable\">PaytmOrder<\/span> <span class=\"cm-variable\">Order<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">PaytmOrder<\/span>(<span class=\"cm-variable\">paramMap<\/span>)<span class=\"cm-variable\">\u037e<\/span>\r\n<span class=\"cm-comment\">\/\/Create new Merchant Object having all merchant configuration.<\/span>\r\n<span class=\"cm-variable\">PaytmMerchant<\/span> <span class=\"cm-variable\">Merchant<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">PaytmMerchant<\/span>( <span class=\"cm-string\">\"http:\/\/hostname\/&lt;checksum-gerneration-URL&gt;\"<\/span>, <span class=\"cm-string\">\" http:\/\/hostname\/&lt;checksum-verification-URL&gt;\"<\/span>)<span class=\"cm-variable\">\u037e<\/span>\r\n\r\n<span class=\"cm-comment\">\/\/Set PaytmOrder and PaytmMerchant objects. Call this method and set both objects before starting transaction.<\/span>\r\n<span class=\"cm-variable\">Service<\/span>.<span class=\"cm-variable\">initialize<\/span>(<span class=\"cm-variable\">Order<\/span>, <span class=\"cm-variable\">Merchant<\/span>, <span class=\"cm-atom\">null<\/span>);\r\n\r\n<span class=\"cm-comment\">\/\/Start the Payment Transaction. Before starting the transaction ensure that initialize method is called.<\/span>\r\n<span class=\"cm-variable\">Service<\/span>.<span class=\"cm-variable\">startPaymentTransaction<\/span>(<span class=\"cm-keyword\">this<\/span>, <span class=\"cm-atom\">true<\/span>, <span class=\"cm-atom\">true<\/span>, <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">PaytmPaymentTransactionCallback<\/span>()\r\n{\r\n  <span class=\"cm-meta\">@Override<\/span>\r\n  <span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">void<\/span> <span class=\"cm-variable\">someUIErrorOccurred<\/span>(<span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inErrorMessage<\/span>)\r\n  {\r\n  <span class=\"cm-comment\">\/\/ Some UI Error Occurred in Payment Gateway Activity.<\/span>\r\n  <span class=\"cm-comment\">\/\/ This may be due to initialization of views in Payment Gateway Activity or may be due to initialization of webview.<\/span>\r\n  <span class=\"cm-comment\">\/\/ Error Message details the error occurred.<\/span>\r\n  }\r\n  \r\n  <span class=\"cm-meta\">@Override<\/span>\r\n  <span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">void<\/span> <span class=\"cm-variable\">onTransactionSuccess<\/span>(<span class=\"cm-variable\">Bundle<\/span>  <span class=\"cm-variable\">inResponse<\/span>)\r\n  {\r\n    <span class=\"cm-comment\">\/\/ After successful transaction this method gets called.<\/span>\r\n    <span class=\"cm-comment\">\/\/ Response bundle contains the merchant response parameters.<\/span>\r\n  }\r\n  \r\n  <span class=\"cm-meta\">@Override<\/span>\r\n  <span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">void<\/span> <span class=\"cm-variable\">onTransactionFailure<\/span>(<span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inErrorMessage<\/span>, <span class=\"cm-variable\">Bundle<\/span>  <span class=\"cm-variable\">inResponse<\/span>)\r\n  {\r\n    <span class=\"cm-comment\">\/\/ This method gets called if transaction failed.<\/span>\r\n    <span class=\"cm-comment\">\/\/ Here in this case transaction is completed, but with a failure.<\/span>\r\n    <span class=\"cm-comment\">\/\/ Error Message describes the reason for failure.<\/span>\r\n    <span class=\"cm-comment\">\/\/ Response bundle contains the merchant response parameters.<\/span>\r\n  }\r\n  \r\n  <span class=\"cm-meta\">@Override<\/span>\r\n  <span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">void<\/span> <span class=\"cm-variable\">networkNotAvailable<\/span>()\r\n  {\r\n  <span class=\"cm-comment\">\/\/ If network is not available, then this method gets called.<\/span>\r\n  }\r\n  \r\n  <span class=\"cm-meta\">@Override<\/span>\r\n  <span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">void<\/span> <span class=\"cm-variable\">clientAuthenticationFailed<\/span>(<span class=\"cm-variable-3\">String<\/span>  <span class=\"cm-variable\">inErrorMessage<\/span>)\r\n  {\r\n  <span class=\"cm-comment\">\/\/ This method gets called if client authentication failed.<\/span>\r\n  <span class=\"cm-comment\">\/\/ Failure may be due to following reasons<\/span>\r\n  <span class=\"cm-comment\">\/\/      1. Server error or downtime.<\/span>\r\n  <span class=\"cm-comment\">\/\/      2. Server unable to generate checksum or checksum response is <\/span>\r\n  <span class=\"cm-comment\">\/\/         not in proper format.<\/span>\r\n  <span class=\"cm-comment\">\/\/      3. Server failed to authenticate that client. That is value of<\/span>\r\n  <span class=\"cm-comment\">\/\/         payt_STATUS is 2.<\/span>\r\n  <span class=\"cm-comment\">\/\/ Error Message describes the reason for failure.<\/span>\r\n  }\r\n  \r\n  <span class=\"cm-meta\">@Override<\/span>\r\n  <span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">void<\/span> <span class=\"cm-variable\">onErrorLoadingWebPage<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">iniErrorCode<\/span>, <span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inErrorMessage<\/span>, <span class=\"cm-variable-3\">String<\/span> <span class=\"cm-variable\">inFailingURL<\/span>)\r\n  {\r\n  <span class=\"cm-comment\">\/\/ This page gets called if some error occurred while loading some URL in Webview.<\/span>\r\n  <span class=\"cm-comment\">\/\/ Error Code and Error Message describes the error.<\/span>\r\n  <span class=\"cm-comment\">\/\/ Failing URL is the URL that failed to load.<\/span>\r\n  }\r\n  });<\/pre>\n<h3>Test your \u00a0transactions:<\/h3>\n<p>The following Staging Wallet can be used for testing transactions:<br \/>\nMobile number: 7777777777<br \/>\nPassword: Paytm12345<br \/>\nOTP &#8211; 489871<\/p>\n<div class=\"docs-header\">\n<h3>Response Codes<\/h3>\n<\/div>\n<div class=\"docs-body\">\n<div class=\"content block-content ready\">\n<div class=\"blocks-parent\">\n<div class=\"block section ng-scope\">\n<div>\n<div class=\"ng-scope\">\n<div class=\"ng-isolate-scope\">\n<p>Interpretation of the most common response codes can be found below:<\/p>\n<ul>\n<li style=\"text-align: left\">101- \u00a0Transaction Successful<\/li>\n<li style=\"text-align: left\">141- \u00a0Transaction cancelled by customer after landing on Payment Gateway Page.<\/li>\n<li style=\"text-align: left\">227- \u00a0Payment Failed due to a technical error. Please try after some time.<\/li>\n<li style=\"text-align: left\">810- \u00a0Page closed by customer after landing on Payment Gateway Page.<\/li>\n<li style=\"text-align: left\">8102- \u00a0 Transaction cancelled by customer post login. Customer had sufficient Wallet balance for completing transaction.<\/li>\n<li style=\"text-align: left\">8103- \u00a0Transaction cancelled by customer post login. Customer had in-sufficient Wallet balance for completing transaction.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>How Paytm SDK Work The Paytm Payments SDK for iOS and Android enables merchants to integrate payments into their mobile app. The following diagram describes how a typical payment transaction works. The components involved in completing a payment transaction are as follows: User Placing the Order: The end user who wants to initiate a payment [&hellip;]<\/p>\n","protected":false},"author":725,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":55},"categories":[518,1400],"tags":[3105,3103,3102,3104],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/32417"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/725"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=32417"}],"version-history":[{"count":0,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/32417\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=32417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=32417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=32417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}