{"id":21366142,"url":"https://github.com/tonytonyjan/allpay","last_synced_at":"2025-07-06T02:38:24.482Z","repository":{"id":26785520,"uuid":"30243749","full_name":"tonytonyjan/allpay","owner":"tonytonyjan","description":"歐付寶 API 的 Ruby 包裝。","archived":false,"fork":false,"pushed_at":"2017-02-04T14:13:29.000Z","size":30,"stargazers_count":19,"open_issues_count":1,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-09-26T05:52:48.266Z","etag":null,"topics":["allpay","api-ruby","ruby"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonytonyjan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-03T13:23:46.000Z","updated_at":"2020-08-21T06:49:26.000Z","dependencies_parsed_at":"2022-07-30T19:18:08.835Z","dependency_job_id":null,"html_url":"https://github.com/tonytonyjan/allpay","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonytonyjan%2Fallpay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonytonyjan%2Fallpay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonytonyjan%2Fallpay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonytonyjan%2Fallpay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonytonyjan","download_url":"https://codeload.github.com/tonytonyjan/allpay/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225855942,"owners_count":17534967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["allpay","api-ruby","ruby"],"created_at":"2024-11-22T07:13:54.596Z","updated_at":"2024-11-22T07:13:55.301Z","avatar_url":"https://github.com/tonytonyjan.png","language":"Ruby","readme":"[![Build Status](https://travis-ci.org/tonytonyjan/allpay.svg?branch=master)](https://travis-ci.org/tonytonyjan/allpay)\n\n# Allpay 歐付寶\n\n這是歐付寶 API 的 Ruby 包裝，更多資訊參考他們的[官方文件](https://www.allpay.com.tw/Content/files/%E5%85%A8%E6%96%B9%E4%BD%8D%E9%87%91%E6%B5%81%E4%BB%8B%E6%8E%A5%E6%8A%80%E8%A1%93%E6%96%87%E4%BB%B6.pdf)。\n\n- 這不是 Rails 插件，只是個 API 包裝。\n- 使用時只需要傳送需要的參數即可，不用產生檢查碼，`allpay_client` 會自己產生。\n- 錯誤代碼太多且會不斷增加，筆者不另行撰寫，官方也建議查網站上的代碼清單。\n\n## 安裝\n\n```bash\ngem install allpay_client\n```\n\n## 使用\n\n```ruby\ntest_client = Allpay::Client.new(mode: :test)\nproduction_client = Allpay::Client.new({\n  merchant_id: 'MERCHANT_ID',\n  hash_key: 'HASH_KEY',\n  hash_iv: 'HASH_IV'\n})\n\ntest_client.request '/Cashier/QueryTradeInfo',\n  MerchantTradeNo: '0457ce27',\n  TimeStamp: Time.now.to_i\n```\n\n歐付寶共有 5 個 API：\n\n- /Cashier/AioCheckOut\n- /Cashier/QueryTradeInfo\n- /Cashier/QueryPeriodCreditCardTradeInfo\n- /CreditDetail/DoAction\n- /Cashier/AioChargeback\n\n每個 API 有哪些參數建議直接參考歐付寶文件，注意幾點：\n\n- 使用時不用煩惱 `MerchantID` 與 `CheckMacValue`，正如上述範例一樣。\n- `/Cashier/AioCheckOut` 回傳的內容是 HTML，這個請求應該是交給瀏覽器發送的，所以不應該寫出 `client.request '/Cashier/AioCheckOut'` 這樣的程式碼。\n\n## Allpay::Client\n\n實體方法                                                     | 回傳                | 說明\n---                                                          | ---                 | ---\n`request(path, **params)`                                    | `Net::HTTPResponse` | 發送 API 請求\n`make_mac(**params)`                                         | `String`            | 用於產生 `CheckMacValue`，單純做加密，`params` 需要完整包含到 `MerchantID`\n`verify_mac(**params)`                                       | `Boolean`           | 用於檢查收到的參數，其檢查碼是否正確，這用在歐付寶物的 `ReturnURL` 與 `PeriodReturnURL` 參數上。\n`query_trade_info(merchant_trade_number, platform = nil)`    | `Hash`              | `/Cashier/QueryTradeInfo` 的捷徑方法，將 `TimeStamp` 設定為當前時間\n`query_period_credit_card_trade_info(merchant_trade_number)` | `Hash`              | `/Cashier/QueryPeriodCreditCardTradeInfo` 的捷徑方法，將 `TimeStamp` 設定為當前時間\n`generate_checkout_params`                                   | `Hash`              | 用於產生 `/Cashier/AioCheckOut` 表單需要的參數，`MerchantTradeDate`、`MerchantTradeNo`、`PaymentType`，可省略。\n\n## 使用範例\n\n```bash\ngit clone git@github.com:tonytonyjan/allpay.git\ncd allpay\nbundle install\nruby examples/server.rb\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonytonyjan%2Fallpay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonytonyjan%2Fallpay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonytonyjan%2Fallpay/lists"}