Skip to content

信用卡定期定額

Cellvin Chung edited this page Feb 26, 2020 · 3 revisions

版本:1.0

完成 config/initializers/newebpay.rb 中的 periodical_callback, periodical_notify_callback 設定

  • 若沒有設定 periodical_callback,交易完成後,付款人將停留在藍新金流交易完成頁面。
  • 若沒有設定 periodical_notify_callback,每期執行信用卡授權交易完成後,不會回傳資料。
# view
<%= newebpay_periodical_pay_button '顯示文字', order_number: "訂單編號", description: "產品名稱",
price: "每期金額", email: "email", class: 'btn btn-success', id: 'periodical' %>
參數 說明 必填 預設
order_number 商店訂單編號

限英、數、_,上限 20 字。
同商店中不可重複。
V
description 產品名稱

上限 100 字。
V
price 委託金額 V
period_type 授權週期

daily:固定天數
weekly:每週
monthly:每月
yearly:每年
V monthly
period_point 週期授權時間點

period_typedaily時,限 2 ~ 364,以授權日期隔日起算。
period_typeweekly時,限 1 ~ 7,代表週一~週日
period_typemonthly時,限 01 ~ 31,代表 1 號~31 號。若當月沒該日期,則自動調整為當月最後一天。
period_typeyearly時,格式為日期 md ,如0125代表 1 月 25 日。
V 01
period_times 授權期數 (執行交易次數)

若期數大於信用卡到期日,則自動以信用卡到期日為最終期數。
V 99
check_type 檢查模式

1:立刻執行 10 元授權。
若成功,將立即自動取消授權,付款人將不會被扣款。
若失敗,則該筆委託 單將自動取消。

2:立即執行委託金額授權

3:不檢查

詳細說明見原文件
V 1
email 付款人電子信箱 V
merchant_id 商店代號 config/initializers/newebpay.rb 中的 merchant_id
email_editable 是否可修改 Email

1:可修改
0:不可修改
0
comment 備註
上限 300 字
payment_info 是否開放填寫付款人資訊

Y:是
N:否
N
order_info 是否開放填寫收件人資訊

Y:是
N:否
N
cancel_url 取消支付返回網址
  • 詳細說明參見原文件,部分參數名稱與預設值與原文件不同。
  • 原文件其他的必填欄位會自動產生,不需處理。
  • 原文件的 ReturnURL、NotifyURL 已分別整合至config/initializers/newebpay.rb中的periodical_callbackperiodical_notify_callback,不需再指定路徑。

在測試環境中,卡號請填 4000-2211-1111-1111,到期日及背面三碼任意填寫。

前景回傳

# config/initializers/newebpay.rb
config.periodical_callback do |newebpay_response|
   if newebpay_response.success?
     flash[:notice] = 'success'
     redirect_to root_path
   else
     Rails.logger.info "Newebpay Periodical Payment Not Succeed: #{newebpay_response.status}: #{newebpay_response.message} (#{newebpay_response.to_json})"
   end
 end
  • 付款是否成功:newebpay_response.success?
  • 請在periodical_notify_callback處理資料,periodical_callback僅處理頁面redirect

背景回傳

# config/initializers/newebpay.rb
config.periodical_notify_callback do |newebpay_response|
   if newebpay_response.success?
     PeriodicalTransaction.find_by(period_no: newebpay_response.period_no)
          .update_attributes!(paid: true)
   else
     Rails.logger.info "Newebpay Periodical Payment Not Succeed: #{newebpay_response.status}: #{newebpay_response.message} (#{newebpay_response.to_json})"
   end
 end
  • 參見原文件第五、六點,可直接使用Result參數,原參數名稱underscore後為method
    • newebpay_response.merchant_id, newebpay_response.trade_no
Clone this wiki locally