Module: Focas::Config
- Included in:
- Focas
- Defined in:
- lib/focas/config.rb
Constant Summary collapse
- OPTIONS =
%w[ token merID MerchantID TerminalID MerchantName customize lidm purchAmt CurrencyNote AutoCap AuthResURL frontFailUrl PayType PeriodNum LocalDate LocalTime reqToken subMerchID enCodeType timeoutDate timeoutTime timeoutSecs Currency lagSelect threeDSAuthInd ].freeze
- MAPPING_TABLE =
標 **[必] 為必填,另外 threeDSAuthInd 是 3DS 驗證,需要時就必填 TradeInfo 參數
{ token: 'token', # **[必] 驗證參數,於商店自行設定,然後請銀行人員人工放行 merID: 'mer_id', # **[必] 網站特店自訂代碼(請注意 merID 與 MerchantID 不同), number <= 10 MerchantID: 'merchant_id', # **[必] 收單銀行授權使用的特店代號(由收單銀行編製提供), number 固定 15 TerminalID: 'terminal_id', # **[必] 收單銀行授權使用的機台代號(由收單銀行編製提供), number 固定 8 MerchantName: 'merchant_name', # 特店名稱,僅供顯示 customize: 'customize', # **[必] 客製化付款授權網頁辨識碼(0: 不客製;1-8 有 8 種客製化樣式可選擇) lidm: 'lidm', # * 交易訂單編號,建議訂單編號不可重複編號,且在 16 位以下最佳(如果是銀聯卡,則不能用 -、_ 符號) purchAmt: 'purch_amt', # **[必] 新台幣整數(10 位數內),如果是金融卡,最大交易為 200 萬 CurrencyNote: 'currency_note', # 註記說明,50 字內 AutoCap: 'auto_cap', # 是否自動轉入請款檔作業 (0: 預設不轉入 / 1: 自動轉入) AuthResURL: 'auth_res_url', # 授權結果回傳網址,最多 512 位元組 frontFailUrl: 'front_fail_url', # 銀聯網路 UPOP 交易失敗,返回商戶跳轉網址 PayType: 'pay_type', # 交易類別碼 (0: 預設一般交易 / 1: 分期 / 2: 紅利) PeriodNum: 'period_num', # 分期期數 (1-99) LocalDate: 'local_date', # 購買地交易日期(yyyymmdd)(預設為系統日期) LocalTime: 'local_time', # 購買地交易時間(HHMMSS) (預設為系統時間) reqToken: 'req_token', # 交易驗證碼,最大長度 64 位 subMerchID: 'sub_merch_id', # 次特店代號,固定長度 8 位 enCodeType: 'encode_type', # *[必] 網頁編碼格式(預設為 BIG5),所以必傳 "UTF-8" timeoutDate: 'timeout_date', # 設定交易逾時日期(yyyymmdd),固定長度 8 位 timeoutTime: 'timeout_time', # 設定交易逾時起始時間(HHMMSS),固定長度 6 位 timeoutSecs: 'timeout_secs', # 設定交易逾時秒數,固定長度 3 位 (最大值為 600 秒),先不設定,使用 600 會錯 Currency: 'currency', # 交易幣別,固定長度 3 位 (901) lagSelect: 'lag_select', # 語言選擇,固定長度 1 位 (0: 繁 / 1: 簡 / 2: 英 / 3: 日 ) threeDSAuthInd: 'three_ds_auth_ind', # 3D 交易驗證類型,若該特店設定支援 3D 交易,前端未帶此欄位,則預設為 0101 (0101 表示支付類交易驗證(PA)的 Payment transaction。 0204 表示非支付類交易驗證(NPA)的 Add card。0205 表示非支付類交易驗證(NPA)的 Maintain card。 註:綁卡驗證應使用 0204 或 0205) }.freeze
Instance Method Summary collapse
- #api_base_url ⇒ Object
- #check_resp_token(data) ⇒ Object
- #configure {|_self| ... } ⇒ Object
- #create_lidm ⇒ Object
- #get_payment_url ⇒ Object
Instance Method Details
#api_base_url ⇒ Object
89 90 91 92 93 94 |
# File 'lib/focas/config.rb', line 89 def api_base_url self.production_mode ||= 0 self.api_base_url = self.production_mode == 0 ? 'https://www.focas-test.fisc.com.tw' : 'https://www.focas.fisc.com.tw' end |
#check_resp_token(data) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/focas/config.rb', line 104 def check_resp_token(data) # 資料錯誤的先 return return false if not data ret = data.transform_keys(&:to_sym) return false if not ret[:respToken] begin # to hash resp_token = ret[:respToken] = Config. settings = .transform_keys(&:to_sym) # 檢查 ret[:status] 成功或失敗 if ret[:status] == '0' # 成功 tmp_arr = %W( #{ret[:status]} #{ret[:lidm]} #{settings[:token]} #{ret[:authCode]} #{ret[:authRespTime]} #{settings[:MerchantID]} #{settings[:TerminalID]} ) hash_string = tmp_arr.join('&') else # 失敗 tmp_arr = %W( #{ret[:status]} #{ret[:errcode]} #{ret[:lidm]} #{settings[:token]} #{ret[:authRespTime]} #{settings[:MerchantID]} #{settings[:TerminalID]} ) end # 開始驗證 token hash_token = Digest::SHA256.hexdigest(hash_string).upcase return (resp_token.upcase == hash_token) rescue return false end end |
#configure {|_self| ... } ⇒ Object
85 86 87 |
# File 'lib/focas/config.rb', line 85 def configure yield self end |
#create_lidm ⇒ Object
100 101 102 |
# File 'lib/focas/config.rb', line 100 def create_lidm lidm = "#{Time.now.strftime("%Y%m%d%H%M%S")}_#{SecureRandom.hex(2).upcase}" end |
#get_payment_url ⇒ Object
96 97 98 |
# File 'lib/focas/config.rb', line 96 def get_payment_url "#{self.api_base_url}/FOCAS_WEBPOS/online/" end |