README.md in nicepay-0.1.3 vs README.md in nicepay-0.1.4

- old
+ new

@@ -1,12 +1,185 @@ # NICEPay Ruby Bindings -## Ruby SDK API Operation Test +``` +NICEPAY ♥ Ruby +``` +## Payment Flow + +### Credit Card + +![Card Flow](https://drive.google.com/uc?export=view&id=0BwDN_OMoONYMaHlLRnBfY1RVZGM "Card Flow") + ### Virtual Account +![VA Flow](https://drive.google.com/uc?export=view&id=0BwDN_OMoONYMREpvVmNlNDhOeGc "VA Flow") + +## Nicepay Ruby SDK Installation + +### Install Nicepay Ruby Gem + ``` +gem install nicepay -v 0.0.1 +``` + +### Add Nicepay Gem into GEMFILE + +add following line +``` +gem 'nicepay', '~> 0.1.3' +``` + +## Nicepay API Operation + +### Generate Virtual Account + +#### Sample Code `sample/test-va.rb` + +``` +=begin + Nicepay Ruby Bindings + Virtual Account Sample Code + Have a Nicepay! +=end +require 'nicepay' +# require 'nicepay' +# Configuration + +# MID +Nicepay.iMid=('VACCTCLOSE') +# Merchant Key +Nicepay.merchantKey=('33F49GnCMS1mFYlGXisbUDzVf2ATWCl9k3R++d5hDd3Frmuos/XLx8XhXpe+LDYAbpGKZYSwtlyyLOtS/8aD7A==') +# Webhook/Notification Handler URL +Nicepay.dbProcessUrl=('http://httpresponder.com/nicepay') +Nicepay.callBackUrl=('http://www.example.com/') + +# API Operation +requestVa = Nicepay::Api::RequestVa.new(Nicepay.requestParam) + +# Set Request Parameter for Virtual Account + +# Merchant Id +Nicepay.setRequestParam('iMid', Nicepay.iMid) + +# Bank Transfer -> payMethod = 02 +Nicepay.setRequestParam('payMethod', '02') + +# Set Bank +# BCA -> CENA +# BNI -> BNIN +# Mandiri -> BMRI +# Hana Bank -> HNBN +# Maybank -> IBBK +# Permata -> BBBA +Nicepay.setRequestParam('bankCd', 'CENA') + +# Reference Number / Order Number / Invoice Number, generated by merchant +Nicepay.setRequestParam('referenceNo','Invoice-7834') + +# Transaction Description +Nicepay.setRequestParam('description','Payment of ' + Nicepay.param('referenceNo')) # Description +Nicepay.setRequestParam('goodsNm', Nicepay.param('description')) # goodsNm = Description + +# Add cart information mandatory at least one cart data +# Nicepay.addCart('image_location','product_name','product_description', 'sub_total_amount') +Nicepay.addCart('https://www.nicepay.co.id/nicepay/images/cart.png', 'Glasses', 'Jumlah: 3', 1000) +Nicepay.addCart('https://www.nicepay.co.id/nicepay/images/cart.png', 'Glasses', 'Jumlah: 1', 2000) + +# Set cartData as request parameter +Nicepay.setRequestParam('cartData', Nicepay.cartData) + +# Amount -> auto count from cartData +Nicepay.setRequestParam('amt', Nicepay.autoCountTotal) + +# Currency -> Indonesian Rupiah +Nicepay.setRequestParam('currency', 'IDR') + +# Set customer information +Nicepay.setRequestParam('billingNm', 'John Doe') +Nicepay.setRequestParam('billingPhone', '02112341234') +Nicepay.setRequestParam('billingEmail', 'john.doe@example.com') +Nicepay.setRequestParam('billingAddr', 'Jl. Jend Sudirman') +Nicepay.setRequestParam('billingCity', 'Jakarta Pusat') +Nicepay.setRequestParam('billingState', 'DKI Jakarta') +Nicepay.setRequestParam('billingPostCd', '10210') +Nicepay.setRequestParam('billingCountry', 'Indonesia') + +Nicepay.setRequestParam('deliveryNm', 'John Doe') +Nicepay.setRequestParam('deliveryPhone', '02112341234') +Nicepay.setRequestParam('deliveryEmail', 'john.doe@example.com') +Nicepay.setRequestParam('deliveryAddr', 'Jl. Jend Sudirman') +Nicepay.setRequestParam('deliveryCity', 'Jakarta Pusat') +Nicepay.setRequestParam('deliveryState', 'DKI Jakarta') +Nicepay.setRequestParam('deliveryPostCd', '10210') +Nicepay.setRequestParam('deliveryCountry', 'Indonesia') + +# Set User Customer IP +Nicepay.setRequestParam('userIP', Nicepay.userIp) + +# Set dbProcessUrl (Notification Handler / Web Hook URL) +Nicepay.setRequestParam('dbProcessUrl', Nicepay.dbProcessUrl) + +# Set callbackUrl (Redirection page after payment URL) +Nicepay.setRequestParam('callBackUrl', Nicepay.callBackUrl) + +# Set vat, fee & noTaxAmt -> reserved for future feature, only set 0 for now +Nicepay.setRequestParam('vat', 0) +Nicepay.setRequestParam('fee', 0) +Nicepay.setRequestParam('notaxAmt', 0) + +# Set VA expiry date -> 2 days from now +Nicepay.setRequestParam('vacctValidDt', Nicepay.vaExpiryDate(2)) # format: %Y%m%d +# You can also set like this +# Nicepay.setRequestParam('vacctValidDt', '20160608') # format: %Y%m%d + +# Set VA expiry time -> time as now +Nicepay.setRequestParam('vacctValidTm', Nicepay.vaExpiryTime) # format: %H%M%S +# You can also set like this +# Nicepay.setRequestParam('vacctValidTm', '095519') # format: %H%M%S + +# Merchant Token +Nicepay.setRequestParam('merchantToken', Nicepay.merchantToken) + +# If you want to dump POST parameters and review it +# puts Nicepay.dumpParameters +# abort("Exit") + +# Inspect Response +# puts requestVa.response.inspect + +response = requestVa.response + +# Inspect response +# puts response.inspect + +# If success, show and email VA information including customer journey to customer + +if response["resultCd"].to_s == "0000" + puts "\n" + puts "----------------------------------------------------------------------" + puts "Virtual Account Number : " + response["bankVacctNo"].to_s + puts "Description : " + response["description"].to_s + puts "Reference No : " + response["referenceNo"].to_s + puts "Transaction ID : " + response["tXid"].to_s # Save tXid in your database + puts "----------------------------------------------------------------------" + +else response["resultCd"].to_s +# If error, you can redirect back to checkout page +# In this sample, we only puts error message + puts "\nOops! Virtual Account failed to generate! We have recorded the event. \nPlease try again later.\n\n" + puts "Result Code : " + response["resultCd"] + puts "Result Message : " + response["resultMsg"] +end + + +# Flush request parameter +Nicepay.flushParam +``` + +#### Run `sample/test-va.rb` +``` $ ruby sample/test-va.rb ``` ``` ---------------------------------------------------------------------- @@ -17,11 +190,134 @@ ---------------------------------------------------------------------- ``` ### Card Checkout +#### Sample Code `sample/test-card.rb` + ``` +=begin + Nicepay Ruby Bindings + Virtual Account Sample Code + Have a Nicepay! +=end +require 'nicepay' + +# Configuration + +Nicepay.iMid=('IONPAYTEST') +Nicepay.merchantKey=('33F49GnCMS1mFYlGXisbUDzVf2ATWCl9k3R++d5hDd3Frmuos/XLx8XhXpe+LDYAbpGKZYSwtlyyLOtS/8aD7A==') +Nicepay.dbProcessUrl=('http://httpresponder.com/nicepay') +Nicepay.callBackUrl=('http://www.example.com/') + +# API Operation +chargeCard = Nicepay::Api::ChargeCard.new(Nicepay.requestParam) + +# Set Request Parameter for Card Payment + +# Merchant Id +Nicepay.setRequestParam('iMid', Nicepay.iMid) + +# Card -> payMethod = 01 +Nicepay.setRequestParam('payMethod', '01') + +# No Installment - Do not use installment feature before get rights from bank +Nicepay.setRequestParam('instmntMon', '1') +Nicepay.setRequestParam('instmntType', '1') + +# Reference Number / Order Number / Invoice Number, generated by merchant +Nicepay.setRequestParam('referenceNo','Invoice-7833') + +# Transaction Description +Nicepay.setRequestParam('description','Payment of ' + Nicepay.param('referenceNo')) # Description +Nicepay.setRequestParam('goodsNm', Nicepay.param('description')) # goodsNm = Description + +# Add cart information mandatory at least one cart data +# Nicepay.addCart('image_location','product_name','product_description', 'sub_total_amount') +Nicepay.addCart('https://www.nicepay.co.id/nicepay/images/cart.png', 'Glasses', 'Jumlah: 3', 1000) +Nicepay.addCart('https://www.nicepay.co.id/nicepay/images/cart.png', 'Glasses', 'Jumlah: 1', 2000) +Nicepay.addCart('https://www.nicepay.co.id/nicepay/images/cart.png', 'Discount', 'Jumlah: 50%', -1500) +# Set cartData as request parameter +Nicepay.setRequestParam('cartData', Nicepay.cartData) +# Total Amount -> auto count from cartData +Nicepay.setRequestParam('amt', Nicepay.autoCountTotal) + +# Currency -> Indonesian Rupiah +Nicepay.setRequestParam('currency', 'IDR') + +# Set customer information +Nicepay.setRequestParam('billingNm', 'John Doe') +Nicepay.setRequestParam('billingPhone', '02112341234') +Nicepay.setRequestParam('billingEmail', 'john.doe@example.com') +Nicepay.setRequestParam('billingAddr', 'Jl. Jend Sudirman') +Nicepay.setRequestParam('billingCity', 'Jakarta Pusat') +Nicepay.setRequestParam('billingState', 'DKI Jakarta') +Nicepay.setRequestParam('billingPostCd', '10210') +Nicepay.setRequestParam('billingCountry', 'Indonesia') + +Nicepay.setRequestParam('deliveryNm', 'John Doe') +Nicepay.setRequestParam('deliveryPhone', '02112341234') +Nicepay.setRequestParam('deliveryEmail', 'john.doe@example.com') +Nicepay.setRequestParam('deliveryAddr', 'Jl. Jend Sudirman') +Nicepay.setRequestParam('deliveryCity', 'Jakarta Pusat') +Nicepay.setRequestParam('deliveryState', 'DKI Jakarta') +Nicepay.setRequestParam('deliveryPostCd', '10210') +Nicepay.setRequestParam('deliveryCountry', 'Indonesia') + +# Set User Customer IP +Nicepay.setRequestParam('userIP', Nicepay.userIp) + +# Set dbProcessUrl (Notification Handler / Web Hook URL) +Nicepay.setRequestParam('dbProcessUrl', Nicepay.dbProcessUrl) + +# Set callbackUrl (Redirection page after payment URL) +Nicepay.setRequestParam('callBackUrl', Nicepay.callBackUrl) + +# Set vat, fee & noTaxAmt -> reserved for future feature, only set 0 for now +Nicepay.setRequestParam('vat', 0) +Nicepay.setRequestParam('fee', 0) +Nicepay.setRequestParam('notaxAmt', 0) + +# Merchant Token +Nicepay.setRequestParam('merchantToken', Nicepay.merchantToken) + +# If you want to dump POST parameters and review it +# puts Nicepay.dumpParameters +# abort("Exit") + +# Inspect Response +# puts chargeCard.response.inspect + +response = chargeCard.response + +# Inspect response +# puts response + +# If success, redirect to payment page +if response["resultCd"].to_s == "0000" + puts "\n" + puts "-----------------------------------------------------------------------------------------------------" + puts "Redirect Customer to : " + response["requestURL"].to_s + "?tXid=" + response["tXid"].to_s + puts "tXid : " + response["tXid"].to_s # Save tXid in your database + puts "-----------------------------------------------------------------------------------------------------" + +else +# If error, you can redirect back to checkout page +# In this sample, we only puts error message + puts "\nOops! Payment Page failed to generate! We have recorded the event. \nPlease try again later.\n\n" + puts "Result Code : " + response["resultCd"] + puts "Result Message : " + response["resultMsg"] +end + + +# Flush request parameter +Nicepay.flushParam +``` + +#### Run `sample/test-card.rb` + +``` $ ruby sample/test-card.rb ``` ``` ----------------------------------------------------------------------------------------------------- @@ -30,11 +326,108 @@ ----------------------------------------------------------------------------------------------------- ``` ### Check Transaction Status +#### Sample Code `sample/test-status.rb` + ``` +=begin + Nicepay Ruby Bindings + Virtual Account Sample Code + Have a Nicepay! +=end +require 'nicepay' + +# Configuration + +# MID +Nicepay.iMid=('VACCTCLOSE') +# Merchant Key +Nicepay.merchantKey=('33F49GnCMS1mFYlGXisbUDzVf2ATWCl9k3R++d5hDd3Frmuos/XLx8XhXpe+LDYAbpGKZYSwtlyyLOtS/8aD7A==') +# Webhook/Notification Handler URL +Nicepay.dbProcessUrl=('http://httpresponder.com/nicepay') +# Redirection URL after customer made payment in Nicepay Payment Page +Nicepay.callBackUrl=('http://www.example.com/') + +# API Operation +checkStatus = Nicepay::Api::CheckStatus.new(Nicepay.requestParam) + +# Set Request Parameter for Check Status + +# Merchant Id +Nicepay.setRequestParam('iMid', Nicepay.iMid) + +# Reference Number / Order Number / Invoice Number, generated by merchant +Nicepay.setRequestParam('referenceNo','Invoice-7834') + +# Total Amount +Nicepay.setRequestParam('amt', '3000') + +# Set VA expiry date -> 2 days from now +Nicepay.setRequestParam('tXid', 'VACCTCLOSE02201606061354204825') +# You can also set like this + +# Merchant Token +Nicepay.setRequestParam('merchantToken', Nicepay.merchantTokenC) + +# If you want to dump POST parameters and review it +# puts Nicepay.dumpParameters +# abort("Exit") + +# Inspect Response +# puts requestVa.response.inspect + +response = checkStatus.response + +# Inspect response +# puts response.inspect + +=begin + **========================================================================================================= + ** Credit Card + **========================================================================================================= + ** $paymentStatus->status == 0 // Success + ** $paymentStatus->status == 1 // Failed + ** $paymentStatus->status == 2 // Void or Refund + ** $paymentStatus->status == 9 // Initialization or Unpaid + **========================================================================================================= + * + **========================================================================================================= + ** Virtual Account + **========================================================================================================= + ** $paymentStatus->status == 0 // Paid + ** $paymentStatus->status == 3 // Unpaid + ** $paymentStatus->status == 4 // Expired + **========================================================================================================= +=end +# If success, show VA information to customer +if response["resultCd"].to_s == "0000" + puts "\n" + puts "----------------------------------------------------------------------" + puts "Transaction Status : " + response["status"].to_s + puts "Amount : " + response["amt"].to_s + puts "Reference No : " + response["referenceNo"].to_s + puts "Transaction ID : " + response["tXid"].to_s + puts "----------------------------------------------------------------------" + +else +# If error, you can redirect back to checkout page +# In this sample, we only puts error message + puts "\nOops! Check Status failed to generate! We have recorded the event. \nPlease try again later.\n\n" + puts "Result Code : " + response["resultCd"] + puts "Result Message : " + response["resultMsg"] +end + + +# Flush request parameter +Nicepay.flushParam +``` + +#### Run `sample/test-status.rb` + +``` $ ruby sample/test-status.rb ``` ``` ---------------------------------------------------------------------- @@ -43,19 +436,13 @@ Reference No : Invoice-7834 Transaction ID : VACCTCLOSE02201606061354204825 ---------------------------------------------------------------------- ``` +<!--- ## Ruby on Rails -### Add gem into Gemlock - -add following line -``` -gem 'nicepay', '~> 0.1.1' -``` - ### Generate Controller ``` $ rails generate controller checkout ``` @@ -79,6 +466,12 @@ ### Configure routes (config/routes.rb) add following line ``` resources :checkout +``` +!--> +## Ruby on Rails + +``` +Coming soon... ```