Online payment processing for internet businesses by newebpay from Taiwan
- Ruby 2.6+
目前這個 Gem 只在 Rails 專案內支援,故安裝方式請放在 Gemfile
內
gem 'newebpay-turbo', '~> 0.7.0'
bundle install
rails generate newebpay:install
會在 config/initializer
內產生 newebpay.rb
閱讀藍新金流官方手冊,根據需要的參數打開註解!
下列為必填參數,不然會造成錯誤
config.merchant_id = nil # 建議使用環境變數帶入
config.hash_key = nil # 建議使用環境變數帶入
config.hash_iv = nil # 建議使用環境變數帶入
config.respond_type = 'JSON'
config.version = '2.0'
config.login_type = 0
...
# controllers
payment = Newebpay::Payment.new(
order_number: YOUR_ORDER_NUMBER (required),
amount: YOUR_ORDER_AMOUNT (required),
email: YOUR_ORDER_EMAIL (optional),
product_description: YOUR_PRODUCT_DESCRIPTION (default_value: 產品說明),
order_comment: YOUR_ORDER_COMMENT (optional))
@form_info = payment.required_parameters # { MERCHANT_ID:..., TradeInfo: ..., TradeSha: ..., Version: '2.0' }
# views
<%= form_with url: NEWEBPAY_MPG_URL, method: :post do |form| >
<% @form_info.each do |key, value|>
<%= form.hidden_field key, { value: value } >
<% end %>
<% end %>
上述 required_parameters
所產生的物件藍新金流串接需要的參數,接著根據手冊需要放入 Form
內使用 POST
的方式送至藍新金流
要不要使用 hidden_field
取決於網站設計,這個 Gem
負責提供完整的加密參數,上述只是範例,可以隨意活用。
若是有加入 ReturnURL
或是 NotifyURL
的使用者,會接受到藍新傳送回來的付款資訊 ( 無論成功與否 )
response = Newebpay::Response.new(params)
response.result # 付款的詳細資訊
response.success? # 確認付款是否成功
response.message # 交易資訊的訊息
response.order_number # 您送出的訂單編號
response.trade_number # 與藍新方的交易編號
response.ip # 付款者的 ip 位置
response.card_number_first_six_code # 付款者的信用卡前六碼
response.card_number_last_four_code # 付款者的信用卡後四碼
response.escrow_bank # 款項的託管銀行
response.auth_bank # 交易的授權銀行
response.pay_way # 付款者的交易方式 ( 信用卡, ATM ... )
response.inst # 0 為無分期, 1 為有分期
response.inst_first_price # 信用卡分期第一期繳費金額
response.inst_each_price # 信用卡分期每期繳費金額
response.atm_pay_bank_code # ATM 繳費的銀行代碼
response.atm_payer_account_last_five_code # ATM 付款者的帳號後五碼
response.paid_at # 繳費時間
refunder = Newebpay::Refund.new(
order_number: YOUR_ORDER_NUMBER (required),
amount: YOUR_ORDER_AMOUNT (required),
cancel: false ( 預設是 false, 如果填入 true 代表要取消退款))
refunder.request! # 申請退款,若是帶入 cancel: true 則為取消退款
refunder.response # 查看回傳結果
refunder.success? # 請求是否成功
invoicer = Newebpay::Invoice.new(
order_number: YOUR_ORDER_NUMBER (required),
amount: YOUR_ORDER_AMOUNT (required),
cancel: false ( 預設是 false, 如果填入 true 代表要取消請款))
invoicer.request! # 申請請款,若是帶入 cancel: true 則為取消請款
invoicer.response # 查看回傳結果
invoicer.success? # 請求是否成功
任何 Bug 回報和 PR 都歡迎在這邊開 issue 或是直接發 PR
https://github.com/5xTraining/newebpay-turbo
The gem is available as open source under the terms of the MIT License