{"id":1979,"date":"2014-10-23T08:08:36","date_gmt":"2014-10-23T08:08:36","guid":{"rendered":"http:\/\/blog.jaringanhosting.com\/?p=1979"},"modified":"2014-10-23T08:12:02","modified_gmt":"2014-10-23T08:12:02","slug":"cara-mengintegrasikan-pembayaran-via-credit-card-dengan-asp","status":"publish","type":"post","link":"https:\/\/blog.jaringanhosting.com\/index.php\/cara-mengintegrasikan-pembayaran-via-credit-card-dengan-asp\/","title":{"rendered":"ASP Hosting Indonesia &#8211; JaringanHosting.com :: Cara Mengintegrasikan Pembayaran via Credit Card Dengan ASP"},"content":{"rendered":"<p style=\"text-align: justify;\">Pada artikel sebelumnya kami pernah membagikan <a href=\"http:\/\/blog.jaringanhosting.com\/index.php\/asp-net-mvc-hosting-indonesia-jaringanhosting-com-cara-mengintegrasikan-paypal-dengan-asp-net-mvc\/#sthash.crfAgCZb.dpbs\">Cara Mengintegrasikan PayPal Dengan ASP.NET MVC<\/a>. Jika sebelumnya mengenai PayPal, di\u00a0artikel ini saya akan menjelaskan mengenai \u00a0<span style=\"text-decoration: underline;\"><strong>Cara mengintegrasikan pembayaran menggunakan credit card ke payment system<\/strong> <\/span>Anda. \u00a0Saya akan menggunakan 2 komponen dari\u00a0<a href=\"http:\/\/www.nsoftware.com\/\">\/n software<\/a>\u00a0yaitu,\u00a0IBiz VitalPS Integrator dan\u00a0IP*Works! 3-D Secure MPI. Pada\u00a0tutorial ini saya akan menggunakan edisi ASP, Meskipun fungsi ini juga dapat dilakukan dengan menggunakan edisi NET dalam aplikasi web ASP.NET. Atau menggunakan edisi C++ untuk membuat aplikasi CGI yang bisa dijalankan di server. Selain 2 komponen yaitu\u00a0IBiz VitalPS Integrator dan\u00a0IP*Works! 3-D Secure MPI, kita harus membuat akun dengan\u00a0Visa&#8217;s PIT test server, dan juga mendownload dan menginstall beberapa\u00a0<em>certificates.\u00a0<\/em><\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/creditcard.jpg\"><img loading=\"lazy\" class=\"aligncenter wp-image-1983 size-medium\" src=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/creditcard-e1414042469200-300x199.jpg\" alt=\"creditcard\" width=\"300\" height=\"199\" srcset=\"https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/creditcard-e1414042469200-300x199.jpg 300w, https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/creditcard-e1414042469200-1024x682.jpg 1024w, https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/creditcard-e1414042469200.jpg 1697w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><strong>Merchant.inc<\/strong><\/p>\n<p style=\"text-align: justify;\">Untuk membuatnya menjadi sederhana, kita akan membagi file-file yang dibutuhkan menjad 4 bagian terpisah yaitu,\u00a0Mechant.inc, OrderPage.asp, VerifyEnrollment.asp, ProcessPARes.asp, dan PaymentPage.asp. Kita akan mulai dari\u00a0Mechant.inc, yang berisi semua pengaturan kita yang akan dimasukkan ke seluruh halaman lain. Dalam file ini, baik itu\u00a0IBiz VitalPS Integrator dan\u00a0IP*Works! 3-D Secure MPI harus di inisialisasi dengan data <em>merchant<\/em> Anda. Dalam tutorial ini kita menggunakan data <em>test account<\/em><\/p>\n<pre class=\"lang:default decode:true\">'===================\r\n  '3-D Secure MPI setup:\r\n  '===================\r\n  Dim o3DS\r\n  Set o3DS = Server.CreateObject(\"IPWorksMPIASP.ThreeDSecure\")               \r\n   \r\n  o3DS.MerchantBankId   = \"999995\"       ' Must match \"BIN\" in PIT profile   \r\n  o3DS.MerchantNumber   = \"999999999911\" ' Must match \"Merchant ID\" in PIT profile\r\n  o3DS.MerchantPassword = \"12345678\"     ' Must match \"Password\" in PIT profile\r\n  o3DS.MerchantName     = \"TEST_MERCHANT\" \r\n  o3DS.MerchantURL      = \"http:\/\/www.testmerchant.com\"   \r\n  o3DS.DirectoryServerURL = \"https:\/\/dropit.3dsecure.net:7443\/PIT\/DS\"   \r\n  ' Client-side certificate acquired from PIT.\r\n  ' Your IP address will be your cert subject\r\n  \r\n  o3DS.SSLCertStoreType       = 2 'sstPFXFile\r\n  o3DS.SSLCertStore           = \"PFX\\C:\\pitclient.pfx\"\r\n  o3DS.SSLCertStorePassword   = \"pitpass\"\r\n  o3DS.SSLCertSubject         = \"12.34.56.78\"\r\n   \r\n  ' Add the Root and CA signing certificates: (Prepending a \"+\" character adds \r\n  ' another certificate instead of overwriting.  NOTE: These are sample \r\n  ' certificates. Please download the latest certs from the PIT main page.\r\n   \r\n  o3DS.RootCertificate = \"MIICHzCCAYigAwIBAgIUBJvEyXmLs6Ub9MX9W0Nn4w2JzY4w...\"\r\n  o3DS.RootCertificate = \"+\" &amp; \"MIICHjCCAYegAwIBAgIVAJyspltGwoe8VGp...\"\r\n  '===============\r\n  'IBiz VitalPS Integrator setup:\r\n  '===============\r\n  Dim oVPS\r\n  Set oVPS = Server.CreateObject(\"IBizPayASP.CCCharge\")\r\n   \r\n  ' This is sample merchant data.  \r\n  oVPS.MerchantBankId         = \"999995\"\r\n  oVPS.MerchantCategoryCode   = \"5999\"\r\n  oVPS.MerchantLanguage       = \"00\"\r\n  oVPS.MerchantName           = \"TEST_MERCHANT\"\r\n  oVPS.MerchantNumber         = \"999999999911\" \r\n  oVPS.MerchantServiceNumber  = \"800-1234567\"\r\n  oVPS.MerchantState          = \"NC\"\r\n  oVPS.MerchantStoreNumber    = \"0011\" \r\n  oVPS.MerchantTerminalNumber = \"9911\" \r\n  oVPS.MerchantTimeZone       = \"705\"   \r\n  oVPS.MerchantZip            = \"27709\"<\/pre>\n<p><strong>OrderPage.asp<\/strong><\/p>\n<p style=\"text-align: justify;\">Halaman ini adalah di mana informasi kartu kredit pelanggan akan dikumpulkan. Pedagang telah lebih dulu memulai\u00a0akan menghadapi\u00a0sesuatu yang jauh lebih rumit, tetapi\u00a0di tutorial\u00a0ini kita akan kompres ke bentuk yang sederhana. Formulir ini selanjutnya akan dikirim ke halaman VerifyEnrollment.asp kita, di mana komponen 3-D Secure MPI digunakan untuk memverifikasi identitas pemegang kartu. Sebagian besar pedagang harus membuat sedikit perubahan pada halaman <em>order<\/em>\u00a0mereka ada untuk menambahkan <em>3-D secure support<\/em>. Perbedaannya hanyalah dua halaman menengah. Harap diperhatikan bahwa data berikut ini adalah data uji, dan jumlah yang diindikasikan tanpa titik desimal.<\/p>\n<pre class=\"lang:default decode:true \">&lt;FORM method=\"post\" action=\"VerifyEnrollment.asp\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"CardNumber\"   value=\"4012001037141112\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"ExpMonth\"     value=\"05\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"ExpYear\"      value=\"06\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"CustomerName\" value=\"John Doe\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"Address\"      value=\"8320 S. Hardy Dr.\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"City\"         value=\"Tempe\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"State\"        value=\"AZ\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"ZipCode\"      value=\"85284\"&gt;\r\n  &lt;INPUT type=\"text\" name=\"Amount\"       value=\"5500\"&gt;\r\n  &lt;INPUT type=\"submit\" name=\"Purchase\"   value=\"Purchase\"&gt;\r\n&lt;\/FORM&gt;<\/pre>\n<p><strong>VerifyEnrollment.asp<\/strong><\/p>\n<p style=\"text-align: justify;\">Setelah pelanggan menekan tombol <em>order<\/em>, data kartu kredit akan diposting ke halaman VerifyEnrollment.asp. Hal pertama yang kita lakukan di sini adalah menyimpan informasi untuk <em>databese order<\/em>. Setelah menyimpan info, kita menggunakan komponen 3-D Secure MPI \u00a0untuk memeriksa apakah kartu kredit pelanggan terdaftar dalam program Visa Verified By Visa.<\/p>\n<pre class=\"lang:default decode:true \">&lt;!--#include file = \"merchant.inc\" --&gt;\r\n&lt;%\r\n  'Save order info and returns a unique key to access data\r\n  key = SaveOrderInfoToDatabase() \r\n  o3DS.MessageId = \"123456\" ' Must be unique for each transaction\r\n  o3DS.CardNumber = Request.Form(\"CardNumber\")\r\n  o3DS.VerifyEnrollment()<\/pre>\n<p style=\"text-align: justify;\">\u00a0Jika terjadi\u00a0kesalahan komunikasi dengan <em>Directory Server<\/em> atau kartu dinyatakan tidak terdaftar, transaksi tersebut harus dilanjutkan secara normal ke Halaman Pembayaran. Catatan bahwa ini benar-benar transparan kepada pelanggan. Jika kartu nya tidak terdaftar di\u00a0Verified By Visa atau Mastercard SecureCode, transaksi di proses seperti biasa. Namun, jika kartu tersebut terdaftar maka pelanggan akan diarahkan ke situs tertentu di <strong>ACSURL<\/strong>\u00a0<em>property<\/em>\u00a0komponen 3-D Secure.<\/p>\n<pre class=\"lang:default decode:true\">If (Err.Number &lt;&gt; 0 Or o3DS.CardEnrolled &lt;&gt; \"Y\") Then\r\n    ' If there's an error, here is where you can log it.\r\n    ' Also, redirect the cardholder to the paymentpage.\r\n    ' Send key so trans can be retrieved\r\n    Response.Redirect(\"PaymentPage.asp?\" &amp; \"MD=\" &amp; key) \r\n \r\n  Else\r\n  \r\n     'no error and the card is enrolled:\r\n    o3DS.MessageId         = key 'Using unique database access key\r\n    o3DS.TransactionId     = key 'Using unique database access key\r\n    o3DS.CardExpMonth      = Request.Form(\"ExpMonth\")\r\n    o3DS.CardExpYear       = Request.Form(\"ExpYear\")\r\n    o3DS.TransactionAmount = Request.Form(\"Amount\")\r\n%&gt;\r\n&lt;SCRIPT LANGUAGE=\"Javascript\" &gt;\r\n&lt;!--\r\nfunction OnLoadEvent()   {   document.downloadForm.submit();   }\r\n\/\/--&gt;\r\n&lt;\/SCRIPT&gt;\r\n&lt;body OnLoad=\"OnLoadEvent();\"&gt;\r\n   &lt;form name=\"downloadForm\" action=\"&lt;% =o3DS.ACSURL %&gt;\" method=\"POST\"&gt;\r\n     &lt;INPUT type=\"hidden\" name=\"PaReq\" value=\"&lt;% =o3DS.GetAuthenticationPacket()%&gt;\"&gt;\r\n     &lt;input type=\"hidden\" name=\"TermUrl\" value=\"https:\/\/yourserver\/ProcessPARes.asp\"&gt;\r\n     &lt;input type=\"hidden\" name=\"MD\" value=\"&lt;% =key %&gt;\"&gt;\r\n   &lt;\/form&gt;\r\n&lt;\/body&gt;\r\n&lt;%\r\n  End If\r\n%&gt;<\/pre>\n<p style=\"text-align: justify;\">Harap dicatat bahwa di atas kode Javascript, atau sesuatu yang mirip, adalah sesuatu yang penting agar\u00a03-D Secure MPI bekerja. Pelanggan harus diarahkan dari jendela browser sendiri. Pelanggan meninggalkan situs merchant dan pergi ke lokasi yang ditentukan dalam\u00a0<strong>ACSURL <\/strong><em>property<\/em>. Setelah pelanggan masukan password untuk kartu kredit, ia akan diarahkan kembali ke TermUrl, yang dalam hal ini adalah &#8220;ProcessPARes.asp&#8221; file yang berada di server merchant. <em>Merchant data\u00a0<\/em>berisi kunci ke dalam database kita untuk memperoleh data transaksi, dan dikirim kembali ke TermUrl setelah pelanggan memasukkan\u00a0password.<\/p>\n<p><strong>ProcessPARes.asp<\/strong><\/p>\n<p style=\"text-align: justify;\">Halaman ProcessPARes.asp adalah tempat Access Control Server yang ditunjukkan ke dalam <strong>ACSURL\u00a0property<\/strong> atas posting apakah pelanggan telah dikonfirmasi atau tidak. Pos dari ACS akan mencakup bentuk variabel &#8220;Pares&#8221; dan &#8220;MD&#8221;. &#8220;Pares&#8221; berisi respon yang ditandatangani dan dienkripsi, dan &#8220;MD&#8221; melewati data merchant yang diperlukan untuk mengambil transaksi dari database merchant. Untuk mengurai paket respon ini, cukup dengan memberikan isi Pares dengan metode <strong>CheckAuthenticationResponse<\/strong>. Jika tidak terjadi\u00a0kesalahan dan <strong>AuthenticationStatus<\/strong> <em>property\u00a0<\/em>adalah &#8220;Y&#8221; (dikonfirmasi) atau &#8220;A&#8221; (upaya otentikasi), maka pelanggan dianggap telah dikonfirmasi . Jika dikonfirmasi, Anda dianggap\u00a0telah lulus <strong>TransactionID <\/strong>property,<strong> AuthenticationCAVV<\/strong>, dan <strong>AuthenticationECI<\/strong> ke komponen Ibiz VitalPS oVPS agar dianggap memenuhi syarat untuk perlindungan ekstra dan mendapatkan diskon. Jika <strong>AuthenticationStatus<\/strong> adalah &#8220;N&#8221;, Anda TIDAK Di HARUSKAN menyelesaikan transaksi.<\/p>\n<pre class=\"lang:default decode:true \">&lt;!--#include file = \"merchant.inc\" --&gt;\r\n&lt;%\r\n  key = Request.Form(\"MD\")\r\n  LoadFromDatabase(key) \r\n  o3DS.MessageId         = key\r\n  o3DS.TransactionId     = key\r\n  o3DS.TransactionAmount = LoadFromDatabase(key, \"TransactionAmount\")\r\n  o3DS.CardNumber        = LoadFromDatabase(key, \"CardNumber\")\r\n  o3DS.CardExpMonth      = LoadFromDatabase(key, \"CardExpMonth\")\r\n  o3DS.CardExpYear       = LoadFromDatabase(key, \"CardExpYear\")\r\n  o3DS.CheckAuthenticationResponse(Request.Form(\"PaRes\"))\r\n  if (Err.Number &lt;&gt; 0) Then\r\n    ' Log the error and then process the credit card. This should be \r\n    ' completely transparent to the customer.\r\n    Response.Redirect(\"PaymentPage.asp?\" &amp; \"MD=\" &amp; key)\r\n  Else\r\n    If (o3DS.AuthenticationStatus = \"Y\" Or o3DS.AuthenticationStatus = \"A\") Then\r\n      ' Redirect to the payment page, including the ECI, XID, and CAVV values\r\n      ' which are to be passed to the Vital processor.\r\n      Response.Redirect(\"PaymentPage.asp?\" &amp; \"MD=\" &amp; key &amp; \"&amp;XID=\" &amp; _\r\n                        o3DS.TransactionId &amp; \"&amp;ECI=\" &amp; o3DS.AuthenticationECI &amp; _\r\n                        \"&amp;CAVV=\" &amp; o3DS.AuthenticationCAVV)\r\n    Else\r\n%&gt;\r\n      &lt;b&gt;Authentication Failed.&lt;\/b&gt;&lt;BR&gt;\r\n      Your financial institution has indicated that it could not authenticate this \r\n      transaction via Verified by Visa. To protect against unauthorized use, this \r\n      Visa card cannot be used to complete your purchase. You may complete the \r\n      purchase by clicking &lt;a href=orderpage.asp&gt;here&lt;\/a&gt; to select \r\n      another form of payment.\r\n&lt;%\r\n    End If\r\n  End If\r\n%&gt;<\/pre>\n<p><strong>PaymentPage.asp<\/strong><\/p>\n<p style=\"text-align: justify;\">Langkah terakhir adalah PaymentPage.asp. Di sinilah kartu kredit pelanggan sebenarnya dihitung dan dipotong untuk pembayaran. Komponen Vital PS oVPS dibuat pada langkah merchant.inc diatas. Sekarang kita akan menggunakan komponen ini untuk meng-otorisasi kartu pelanggan. Kita\u00a0hanya akan memuat transaksi dari database, menambahkan 3D Secure XID, ECI, dan CAVV\u00a0dan berakhir pada penagihan kartu kredit.<\/p>\n<pre class=\"lang:default decode:true\">&lt;!--#include file = \"merchant.inc\" --&gt;\r\n&lt;%\r\n  key  = Request.QueryString(\"MD\")\r\n  oVPS.CardNumber        = LoadFromDatabase(key, \"CardNumber\")\r\n  oVPS.CardExpMonth      = LoadFromDatabase(key, \"CardExpMonth\")\r\n  oVPS.CardExpYear       = LoadFromDatabase(key, \"CardExpYear\")\r\n  oVPS.CustomerAddress   = LoadFromDatabase(key, \"CustomerAddress\")\r\n  oVPS.CustomerZip       = LoadFromDatabase(key, \"CustomerZip\")\r\n  oVPS.TransactionAmount = LoadFromDatabase(key, \"Amount\")\r\n  oVPS.TransactionNumber = \"0001\" ' This should increment for each transaction\r\n  oVPS.XID               = Request.QueryString(\"XID\")  'If not present = \"\"\r\n  oVPS.ECI               = Request.QueryString(\"ECI\")  'If not present = \"\"\r\n  oVPS.CAVV              = Request.QueryString(\"CAVV\") 'If not present = \"\"\r\n  oVPS.Authorize()\r\n  If (Err.Number &lt;&gt; 0) Then\r\n    'log the error and alert the customer\r\n%&gt;\r\n    We're sorry, our payment system is currently experiencing technical \r\n    difficulties. Please call 1-800-555-5555 to place your order over the \r\n    phone. We are sorry for any inconvenience.     \r\n&lt;%\r\n  ElseIf (DirectCharge.ResponseCode = \"00\" Or _\r\n   DirectCharge.ResponseCode = \"85\") Then \r\n    Response.Write(\"Thank you for your purchase. Your tracking number is:\" &amp; key)\r\n  Else \r\n    Response.Write(\"Your card has been declined for the following reason:\")\r\n    Response.Write(oVPS.ResponseText)\r\n  End If\r\n  UpdateDatabaseEntry(key)\r\n%&gt;<\/pre>\n<p style=\"text-align: justify;\">Artikel ini menunjukkan bagaimana mengintegrasikan\u00a0sebuah sistem pembayaran <em>merchant<\/em> yang sangat sederhana dari awal. Namun, 3-D Secure MPI dan Ibiz VitalPS Integrator dapat dengan mudah diintegrasikan ke dalam sistem yang ada. Jika gateway yang Anda gunakan support\u00a03-D Secure data transport\u00a0(XID, CAVV, dan ECI) Anda dapat menggunakan komponen\u00a0IP*Works! 3-D Secure MPI\u00a0untuk mengotentikasi pemegang kartu dengan menciptakan halaman penengah antara checkout dan pembayaran seperti yang ditunjukkan di atas. Dengan begitu sekarang Anda sudah berhasil bukan\u00a0<span style=\"text-decoration: underline;\"><strong>Mengintegrasikan Pembayaran via Credit Card ke Payment System<\/strong><\/span> Anda? Semoga bermanfaat<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada artikel sebelumnya kami pernah membagikan Cara Mengintegrasikan PayPal Dengan ASP.NET MVC. Jika sebelumnya mengenai PayPal, di\u00a0artikel ini saya akan menjelaskan mengenai \u00a0Cara mengintegrasikan pembayaran menggunakan credit card ke payment system Anda. \u00a0Saya akan menggunakan 2 komponen dari\u00a0\/n software\u00a0yaitu,\u00a0IBiz VitalPS<\/p>\n","protected":false},"author":4710,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts\/1979"}],"collection":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/users\/4710"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/comments?post=1979"}],"version-history":[{"count":0,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts\/1979\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/media?parent=1979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/categories?post=1979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/tags?post=1979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}