﻿{"id":430,"date":"2023-01-11T15:51:47","date_gmt":"2023-01-11T12:51:47","guid":{"rendered":"http:\/\/www.eyurtsever.com\/?p=430"},"modified":"2023-01-11T15:51:57","modified_gmt":"2023-01-11T12:51:57","slug":"asp-net-payu-entegrasyonu","status":"publish","type":"post","link":"https:\/\/www.eyurtsever.com\/index.php\/asp-net-payu-entegrasyonu","title":{"rendered":"ASP.NET PayU Entegrasyonu"},"content":{"rendered":"<p>PayU eticaret sitelerinin \u00f6deme sistemlerinde kullan\u0131lmak \u00fczere hayata ge\u00e7irilmi\u015f bir proje ve bir\u00e7ok eticaret sitesinde kullan\u0131lmakta. Birka\u00e7 bankan\u0131n kredi kart\u0131na taksit yapabilme imkan\u0131 sunuyor. Normal \u015fartlarda her banka sanal posu i\u00e7in ayr\u0131 ayr\u0131 ba\u015fvuru yap\u0131p ayr\u0131 ayr\u0131 para \u00f6demeniz gerekiyor. PayU sayesinde t\u00fcm bankalara ba\u015fvurman\u0131za gerek kalm\u0131yor. Tek \u00e7ekim komisyonu biraz y\u00fcksek olsa da birden fazla kredi kart\u0131na taksit yapabilece\u011finiz i\u00e7in tercih edilebilir. A\u015fa\u011f\u0131daki kodlar\u0131 kullanarak sitenize entegre edebilirsiniz.<br \/>\nAsp.net payu entegrasyonu i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 takip edin.<br \/>\n\u00d6ncelikle a\u015fa\u011f\u0131daki kodlar\u0131 head taglar\u0131 aras\u0131na ekleyelim.<\/p>\n<pre class=\"EnlighterJSRAW\">&lt;script src=\"https:\/\/secure.payu.com.tr\/openpayu\/v2\/client\/json2.js\" type=\"text\/javascript\"&gt;&lt;\/script&gt;\n&lt;script src=\"https:\/\/secure.payu.com.tr\/openpayu\/v2\/client\/openpayu-2.0.js\" type=\"text\/javascript\"&gt;&lt;\/script&gt;\n&lt;script src=\"https:\/\/secure.payu.com.tr\/openpayu\/v2\/client\/plugin-payment-2.0.js\" type=\"text\/javascript\"&gt;&lt;\/script&gt;\n&lt;script src=\"https:\/\/secure.payu.com.tr\/openpayu\/v2\/client\/plugin-installment-2.0.js\" type=\"text\/javascript\"&gt;&lt;\/script&gt;\n&lt;!-- Style class for preloader --&gt;\n&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/secure.payu.com.tr\/openpayu\/v2\/client\/openpayu-builder-2.0.css\" \/&gt;<\/pre>\n<p>&nbsp;<br \/>\n<!--more--><br \/>\nKredi kart\u0131 formu i\u00e7in a\u015fa\u011f\u0131daki kodlar\u0131 kullan\u0131yoruz. id&#8217;leri de\u011fi\u015ftirmeden stilleri kendinize g\u00f6re d\u00fczenleyebilirsiniz.<\/p>\n<pre class=\"EnlighterJSRAW\">&lt;table class=\"kredi\"&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td align=\"right\" class=\"style6\"&gt;Kart Sahibinin Ad\u0131 :&lt;\/td&gt;\n&lt;td&gt;\n&lt;div id=\"payu-card-cardholder-placeholder\" class=\"card\"&gt;&lt;\/div&gt;&lt;\/td&gt;\n&lt;\/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"right\" class=\"style6\"&gt;Kart Numaras\u0131 :&lt;\/td&gt;\n&lt;td&gt;\n&lt;div id=\"payu-card-number-placeholder\" class=\"card\"&gt;&lt;\/div&gt;&lt;\/td&gt;\n&lt;\/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"right\" class=\"style6\"&gt;Son Kullanma Tarihi :&lt;\/td&gt;\n&lt;td&gt;&lt;select id=\"payu-card-expm\" class=\"lipres-drop-down-list-date\"&gt;&lt;option value=\"01\"&gt;01&lt;\/option&gt;&lt;option value=\"02\"&gt;02&lt;\/option&gt;&lt;option value=\"03\"&gt;03&lt;\/option&gt;&lt;option value=\"04\"&gt;04&lt;\/option&gt;&lt;option value=\"05\"&gt;05&lt;\/option&gt;&lt;option value=\"06\"&gt;06&lt;\/option&gt;&lt;option value=\"07\"&gt;07&lt;\/option&gt;&lt;option value=\"08\"&gt;08&lt;\/option&gt;&lt;option value=\"09\"&gt;09&lt;\/option&gt;&lt;option value=\"10\"&gt;10&lt;\/option&gt;&lt;option value=\"11\"&gt;11&lt;\/option&gt;&lt;option value=\"12\"&gt;12&lt;\/option&gt;&lt;\/select&gt;&lt;select id=\"payu-card-expy\" class=\"lipres-drop-down-list-date\"&gt;&lt;option value=\"2012\"&gt;2012&lt;\/option&gt;&lt;option value=\"2013\"&gt;2013&lt;\/option&gt;&lt;option value=\"2014\"&gt;2014&lt;\/option&gt;&lt;option value=\"2015\"&gt;2015&lt;\/option&gt;&lt;option value=\"2016\"&gt;2016&lt;\/option&gt;&lt;option value=\"2017\"&gt;2017&lt;\/option&gt;&lt;option value=\"2018\"&gt;2018&lt;\/option&gt;&lt;option value=\"2019\"&gt;2019&lt;\/option&gt;&lt;option value=\"2020\"&gt;2020&lt;\/option&gt;&lt;option value=\"2021\"&gt;2021&lt;\/option&gt;&lt;option value=\"2022\"&gt;2022&lt;\/option&gt;&lt;option value=\"2023\"&gt;2023&lt;\/option&gt;&lt;\/select&gt;&lt;\/td&gt;\n&lt;\/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"right\" class=\"style6\"&gt;CVV2 :&lt;\/td&gt;\n&lt;td&gt;\n&lt;div id=\"payu-card-cvv-placeholder\" class=\"card\"&gt;&lt;\/div&gt;\n&lt;span&gt;&lt;a href=\"#cvv2\" rel=\"facebox\"&gt;CVV2 Nedir ?&lt;\/a&gt;&lt;\/span&gt;&lt;\/td&gt;\n&lt;\/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"right\" class=\"style6\"&gt;Taksit :&lt;\/td&gt;\n&lt;td&gt; &lt;asp:radiobuttonlist id=\"rblTaksit\" runat=\"server\" clientidmode=\"Static\" repeatlayout=\"UnorderedList\"&gt;\n&lt;\/asp:radiobuttonlist&gt;&lt;\/td&gt;\n&lt;\/tr&gt;\n&lt;tr&gt;\n&lt;td class=\"style6\"&gt;&lt;\/td&gt;\n&lt;td&gt;&lt;\/td&gt;\n&lt;\/tr&gt;\n&lt;\/tbody&gt;\n&lt;\/table&gt;<\/pre>\n<p>&nbsp;<br \/>\nJavascript kodlar\u0131<\/p>\n<pre class=\"EnlighterJSRAW\">&lt;script type=\"text\/javascript\"&gt;\/\/ &lt;![CDATA[\n$(function () {\n\/\/**********************************************************\n\/\/installment setup\n\/\/**********************************************************\n\/\/used to control some stuff when card program is change\nOpenPayU.Installment.onCardChange(function (data) { \/\/optional\n\/\/data.program - Axess, Bonus, Maximum, Advantage, CardFinans, World\n$('#card-program').html(JSON.stringify(data.program));\n});\n\/\/**********************************************************\n\/\/payment setup\n\/\/**********************************************************\nOpenPayU.Payment.setup({ id_account: \"IDBURAYA\", orderCreateRequestUrl: \"AjaxIslemlerServisi.asmx\/PayuPay\" });\n$('#payu-cc-form-submit').click(function () {\n$(\"#payu-card-installment\").val($('#rblTaksit li input:checked').val());\n\/\/add preloader\nOpenPayU.Builder.addPreloader('L\u00fctfen Bekleyin ... ');\n\/\/**********************************************************\n\/\/begin payment\n\/\/ Bu b\u00f6l\u00fcmde arkada sipari\u015fde olu\u015fturuyorsak e\u011fer ek bilgileride buradan g\u00f6nderebiliriz.Bu bilgiler opsiyonel g\u00f6ndermesenizde sorun olu\u015fturmaz. \/\/**********************************************************\n\/\/Req_Id, First_Name, Last_Name, Email, PhoneNumber\nOpenPayU.Payment.create({\n\/\/merchant can send to his server side script other additional data from page. (OPTIONAL)\norderCreateRequestData: {\nFirst_Name: $('#txtAd').val()\n}\n}, function (response) {\n\/\/update buyer experience\nif (response.Status.StatusCode == 'OPENPAYU_SUCCESS') {\nalert('Success');\n$(\"#lblOdemeSonucu\").val(JSON.stringify(response));\nvar btn = document.getElementById(\"btnSiparisiOnayla\");\nif (btn) btn.click();\n} else {\nalert('Bir hata olu\u015ftu.L\u00fctfen kart bilgilerinizi kontrol edin.');\n$(\"#lblOdemeSonucu\").val(JSON.stringify(response));\n\/\/remove preloader OpenPayU.Builder.removePreloader();\n\/\/$('#error').html(response.status + '\\n' + JSON.stringify(response) );\n}\nreturn false;\n});\nreturn false;\n});\n} ());\n\/\/ ]]&gt;&lt;\/script&gt;<\/pre>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\nDaha sonra&nbsp;AjaxIslemlerServisi.asmx ad\u0131ndan bir web servisi ekliyoruz projemize ve bunun i\u00e7ine payupay ad\u0131nda bir fonksiyon ekliyoruz.<\/p>\n<pre class=\"EnlighterJSRAW\">[WebMethod(true)]\n[ScriptMethod(ResponseFormat = ResponseFormat.Json)]\npublic void PayuPay(string First_Name)\n{\nPayuClass pc = new PayuClass();\nstring sonuc = pc.PayuPay();\nContext.Response.Clear();\nContext.Response.ContentType = \"application\/json\";\nContext.Response.AddHeader(\"content-disposition\", \"attachment; filename=export.json\");\nContext.Response.AddHeader(\"content-length\", sonuc.Length.ToString());\nContext.Response.Flush();\nContext.Response.Write(sonuc);\n\/\/return sonuc;\n}<\/pre>\n<p>&nbsp;<br \/>\nPayU Class i\u00e7in a\u015fa\u011f\u0131daki kodlar\u0131 kullan\u0131yoruz<\/p>\n<pre class=\"EnlighterJSRAW\">public class PayuClass\n{\npublic string signature = \"SignatureBuraya\";\npublic string pos_id = \"PosIdBuraya\"; \/\/ merchant account id\npublic string hashsign = \"\";\npublic PayuClass()\n{\n\/\/\n\/\/ TODO: Add constructor logic here\n\/\/\n}\npublic string PayuPay(string Req_Id, string First_Name)\n{\nstring Last_Name = \"Abuzer\";\nstring Email=\"abuzer@musteriemail.com\";\nstring PhoneNumber=\"000000000\";\nint Taksit=1;\nstring post_data = GenerateXml(Req_Id, First_Name, Last_Name, Email, PhoneNumber, Taksit);\nhashsign = ComputeHash(post_data+signature,new SHA256CryptoServiceProvider());\nvar sonuc_xml = HttpPost(\"https:\/\/secure.payu.com.tr\/openpayu\/v2\/order.xml\",\"DOCUMENT=\"+HttpContext.Current.Server.UrlEncode(post_data));\n\/\/ Convert XML to a JSON string\nXmlDocument doc = new XmlDocument();\ndoc.LoadXml(sonuc_xml);\nstring JSON = ConvertJson.XmlToJSON(doc);\n\/\/ Replace \\ with \\\\ because string is being decoded twice\nJSON = JSON.Replace(@\"\\\", @\"\\\\\");\nreturn JSON;\n}\n\/\/Payu xml i olu\u015fturur\nprivate string GenerateXml(string Req_Id, string First_Name, string Last_Name, string Email, string PhoneNumber, int Taksit)\n{\nstring xml = @\"&lt;!--?xml version=\"\"1.0\"\" encoding=\"\"UTF-8\"\"?--&gt;&lt;openpayu xmlns=\"\" http:=\"\" www=\"\" openpayu=\"\" com=\"\" xsd=\"\"&gt;&lt;ordercreaterequest&gt; &lt;reqid&gt;{0}&lt;\/reqid&gt;&lt;customerip&gt;{1}&lt;\/customerip&gt;&lt;extorderid&gt;{2}&lt;\/extorderid&gt;&lt;merchantposid&gt;{13}&lt;\/merchantposid&gt;&lt;description&gt;{3}&lt;\/description&gt;&lt;currencycode&gt;{4}&lt;\/currencycode&gt;&lt;totalamount&gt;{5}&lt;\/totalamount&gt;&lt;buyer&gt;&lt;firstname&gt;{6}&lt;\/firstname&gt;&lt;lastname&gt;{7}&lt;\/lastname&gt;&lt;countrycode&gt;{8}&lt;\/countrycode&gt;&lt;email&gt;{9}&lt;\/email&gt;&lt;phonenumber&gt;{10}&lt;\/phonenumber&gt;&lt;language&gt;{11}&lt;\/language&gt;&lt;\/buyer&gt;&lt;products&gt;{12}&lt;\/products&gt;&lt;paymethod&gt;DEFAULT&lt;\/paymethod&gt;&lt;\/ordercreaterequest&gt;&lt;\/openpayu&gt;\";\nstring tutar = 300; \/\/ Buraya sepet tutar\u0131 ne kadarsa bunu yazabilirsiniz fakat payu \u00f6demeyi yaparken bu tutar\u0131 de\u011fil GenerateProductXml ile \u00fcretti\u011finiz \u00fcr\u00fcnlerin toplam\u0131n\u0131 dikkate al\u0131yor\n\/\/yani buraya verdi\u011finiz de\u011feri kendi sisteminize kaydetmek i\u00e7in kullanabilirsiniz.\nxml = String.Format(xml, Req_Id, HttpContext.Current.Request.UserHostAddress, \"1520\", \"AZ\", \"TRY\", tutar, First_Name, Last_Name, \"tr\", Email, PhoneNumber, \"tr\", GenerateProductXml(), pos_id);\nreturn xml;\n}\nprivate string GenerateProductXml()\n{\n\/\/Burada sepetteki \u00fcr\u00fcnleri liste olarak getiren metodumuz var\nvar UrunListesi = dbx.UrunleriGetir();\nstring urunxml = \"\";\nint cek_indirimi = 10;\nstring kargo_ucreti = 5;\nforeach (SepetUrun surun in UrunListesi)\n{\nurunxml += String.Format(@\"&lt;product&gt;&lt;name&gt;{0}&lt;\/name&gt;&lt;unitprice&gt;{1}&lt;\/unitprice&gt;&lt;quantity&gt;{2}&lt;\/quantity&gt;&lt;\/product&gt;\", surun.Urun_Adi, surun.birim_fiyat.ToString().Replace(\",\", \".\"), surun.adet);\n}\nurunxml += String.Format(@\"&lt;product&gt;&lt;name&gt;{0}&lt;\/name&gt;&lt;unitprice&gt;{1}&lt;\/unitprice&gt;&lt;quantity&gt;{2}&lt;\/quantity&gt;&lt;\/product&gt;\", \"Kargo \u00dccreti -\", kargo_ucreti.ToString().Replace(\",\", \".\"), \"1\");\nif (cek_indirimi &gt; 0)\n{\n\/\/ - de\u011ferler g\u00f6ndererek fiyattan indirim yapt\u0131rabiliyoruz.Hediye \u00c7eki Gibi\nurunxml += String.Format(@\"&lt;product&gt;&lt;name&gt;{0}&lt;\/name&gt;&lt;unitprice&gt;{1}&lt;\/unitprice&gt;&lt;quantity&gt;{2}&lt;\/quantity&gt;&lt;\/product&gt;\", \"\u00c7ek \u0130ndirimi -\",\"-\"+ cek_indirimi.ToString().Replace(\",\", \".\"), \"1\");\n}\nreturn urunxml;\n}\nprivate string HttpPost(string url, string post_data)\n{\nvar req = System.Net.WebRequest.Create(url);\nreq.ContentType = \"application\/x-www-form-urlencoded\";\nreq.Headers.Add(\"OpenPayu-Signature:sender=\"+pos_id+\";signature=\" + hashsign + \";algorithm=SHA256;content=DOCUMENT\");\nreq.Method = \"POST\";\nbyte[] bytes = Encoding.UTF8.GetBytes(post_data);\nreq.ContentLength = bytes.Length;\nSystem.IO.Stream os = req.GetRequestStream();\nos.Write(bytes, 0, bytes.Length);\nos.Close();\nSystem.Net.WebResponse resp = req.GetResponse();\nif (resp == null)\nreturn null;\nvar sr = new StreamReader(resp.GetResponseStream());\nreturn sr.ReadToEnd().Trim();\n}\npublic string ComputeHash(string input, HashAlgorithm algorithm)\n{\nByte[] inputBytes = Encoding.UTF8.GetBytes(input);\nByte[] hashedBytes = algorithm.ComputeHash(inputBytes);\nreturn BitConverter.ToString(hashedBytes).Replace(\"-\",\"\").ToLower();\n}<\/pre>\n<p>&nbsp;<br \/>\nVe son olarak convert json class&#8217;\u0131<\/p>\n<pre class=\"brush:vb\">using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing System.Text;\nusing System.Xml;\nusing System.Collections;\n\/\/\/\n\/\/\/ Summary description for ConvertJson\n\/\/\/\npublic class ConvertJson\n{\npublic ConvertJson()\n{\n\/\/\n\/\/ TODO: Add constructor logic here\n\/\/\n}\npublic static string XmlToJSON(XmlDocument xmlDoc)\n{\nStringBuilder sbJSON = new StringBuilder();\n\/\/sbJSON.Append(\"{ \");\nXmlToJSONnode(sbJSON, xmlDoc.DocumentElement, false);\n\/\/sbJSON.Append(\"}\");\nreturn sbJSON.ToString();\n}\n\/\/ XmlToJSONnode: Output an XmlElement, possibly as part of a higher array\nprivate static void XmlToJSONnode(StringBuilder sbJSON, XmlElement node, bool showNodeName)\n{\nif (showNodeName)\nsbJSON.Append(\"\\\"\" + SafeJSON(node.Name) + \"\\\": \");\nsbJSON.Append(\"{\");\n\/\/ Build a sorted list of key-value pairs\n\/\/ where key is case-sensitive nodeName\n\/\/ value is an ArrayList of string or XmlElement\n\/\/ so that we know whether the nodeName is an array or not.\nSortedList childNodeNames = new SortedList();\n\/\/ Add in all node attributes\nif (node.Attributes != null)\nforeach (XmlAttribute attr in node.Attributes)\nStoreChildNode(childNodeNames, attr.Name, attr.InnerText);\n\/\/ Add in all nodes\nforeach (XmlNode cnode in node.ChildNodes)\n{\nif (cnode is XmlText)\nStoreChildNode(childNodeNames, \"value\", cnode.InnerText);\nelse if (cnode is XmlElement)\nStoreChildNode(childNodeNames, cnode.Name, cnode);\n}\n\/\/ Now output all stored info\nforeach (string childname in childNodeNames.Keys)\n{\nArrayList alChild = (ArrayList)childNodeNames[childname];\nif (alChild.Count == 1)\nOutputNode(childname, alChild[0], sbJSON, true);\nelse\n{\nsbJSON.Append(\" \\\"\" + SafeJSON(childname) + \"\\\": [ \");\nforeach (object Child in alChild)\nOutputNode(childname, Child, sbJSON, false);\nsbJSON.Remove(sbJSON.Length - 2, 2);\nsbJSON.Append(\" ], \");\n}\n}\nsbJSON.Remove(sbJSON.Length - 2, 2);\nsbJSON.Append(\" }\");\n}\n\/\/ StoreChildNode: Store data associated with each nodeName\n\/\/ so that we know whether the nodeName is an array or not.\nprivate static void StoreChildNode(SortedList childNodeNames, string nodeName, object nodeValue)\n{\n\/\/ Pre-process contraction of XmlElement-s\nif (nodeValue is XmlElement)\n{\n\/\/ Convert &lt;aa&gt;&lt;\/aa&gt; into \"aa\":null\n\/\/ &lt;aa&gt;xx&lt;\/aa&gt; into \"aa\":\"xx\"\nXmlNode cnode = (XmlNode)nodeValue;\nif (cnode.Attributes.Count == 0)\n{\nXmlNodeList children = cnode.ChildNodes;\nif (children.Count == 0)\nnodeValue = null;\nelse if (children.Count == 1 &amp;&amp; (children[0] is XmlText))\nnodeValue = ((XmlText)(children[0])).InnerText;\n}\n}\n\/\/ Add nodeValue to ArrayList associated with each nodeName\n\/\/ If nodeName doesn't exist then add it\nobject oValuesAL = childNodeNames[nodeName];\nArrayList ValuesAL;\nif (oValuesAL == null)\n{\nValuesAL = new ArrayList();\nchildNodeNames[nodeName] = ValuesAL;\n}\nelse\nValuesAL = (ArrayList)oValuesAL;\nValuesAL.Add(nodeValue);\n}\nprivate static void OutputNode(string childname, object alChild, StringBuilder sbJSON, bool showNodeName)\n{\nif (alChild == null)\n{\nif (showNodeName)\nsbJSON.Append(\"\\\"\" + SafeJSON(childname) + \"\\\": \");\nsbJSON.Append(\"null\");\n}\nelse if (alChild is string)\n{\nif (showNodeName)\nsbJSON.Append(\"\\\"\" + SafeJSON(childname) + \"\\\": \");\nstring sChild = (string)alChild;\nsChild = sChild.Trim();\nsbJSON.Append(\"\\\"\" + SafeJSON(sChild) + \"\\\"\");\n}\nelse\nXmlToJSONnode(sbJSON, (XmlElement)alChild, showNodeName);\nsbJSON.Append(\", \");\n}\n\/\/ Make a string safe for JSON\nprivate static string SafeJSON(string sIn)\n{\nStringBuilder sbOut = new StringBuilder(sIn.Length);\nforeach (char ch in sIn)\n{\nif (Char.IsControl(ch) || ch == '\\'')\n{\nint ich = (int)ch;\nsbOut.Append(@\"\\u\" + ich.ToString(\"x4\"));\ncontinue;\n}\nelse if (ch == '\\\"' || ch == '\\\\' || ch == '\/')\n{\nsbOut.Append('\\\\');\n}\nsbOut.Append(ch);\n}\nreturn sbOut.ToString();\n}\n}<\/pre>\n<p>Kolay gelsin.<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PayU eticaret sitelerinin \u00f6deme sistemlerinde kullan\u0131lmak \u00fczere hayata ge\u00e7irilmi\u015f bir proje ve bir\u00e7ok eticaret sitesinde kullan\u0131lmakta. Birka\u00e7 bankan\u0131n kredi kart\u0131na taksit yapabilme imkan\u0131 sunuyor. Normal \u015fartlarda her banka sanal posu i\u00e7in ayr\u0131 ayr\u0131 ba\u015fvuru yap\u0131p ayr\u0131 ayr\u0131 para \u00f6demeniz gerekiyor. PayU sayesinde t\u00fcm bankalara ba\u015fvurman\u0131za gerek kalm\u0131yor. Tek \u00e7ekim komisyonu biraz y\u00fcksek olsa da birden [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,13],"tags":[65,137,231,232,233],"_links":{"self":[{"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/posts\/430"}],"collection":[{"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/comments?post=430"}],"version-history":[{"count":2,"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/posts\/430\/revisions"}],"predecessor-version":[{"id":625,"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/posts\/430\/revisions\/625"}],"wp:attachment":[{"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/media?parent=430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/categories?post=430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.eyurtsever.com\/index.php\/wp-json\/wp\/v2\/tags?post=430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}