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...
```