{"id":17124632,"url":"https://github.com/asika32764/spgateway-sdk","last_synced_at":"2025-10-15T07:04:45.808Z","repository":{"id":62488652,"uuid":"88422109","full_name":"asika32764/spgateway-sdk","owner":"asika32764","description":"PHP 3rd party SDK for Spgateway (智富通).","archived":false,"fork":false,"pushed_at":"2022-12-19T08:25:35.000Z","size":53,"stargazers_count":10,"open_issues_count":1,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-13T06:11:31.547Z","etag":null,"topics":["pay2go","pay2go-php","spgateway","spgateway-sdk"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/asika/spgateway","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asika32764.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-16T15:24:19.000Z","updated_at":"2019-09-19T17:23:38.000Z","dependencies_parsed_at":"2023-01-29T21:00:56.929Z","dependency_job_id":null,"html_url":"https://github.com/asika32764/spgateway-sdk","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asika32764%2Fspgateway-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asika32764%2Fspgateway-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asika32764%2Fspgateway-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asika32764%2Fspgateway-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asika32764","download_url":"https://codeload.github.com/asika32764/spgateway-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670434,"owners_count":21142904,"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":["pay2go","pay2go-php","spgateway","spgateway-sdk"],"created_at":"2024-10-14T18:43:02.837Z","updated_at":"2025-10-15T07:04:40.774Z","avatar_url":"https://github.com/asika32764.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Spgateway PHP Package (智富通)\n\nBeta 中，因開發倉促，有錯誤請回報，或者發 PR 協助修改。\n\n## 安裝\n\n```bash\ncomposer require asika/spgateway\n```\n\n如要使用 Receiver 的 render 功能，請安裝 `windwalker/renderer`\n\n## 使用範例\n\n```php\n$spgateway = new \\Asika\\Spgateway\\Spgateway('MerchantID', 'key', 'iv');\n\n// Basic options\n$spgateway-\u003esetTest(true) // Use Test Platform\n\t-\u003esetMerchantOrderNo($orderNo)\n\t-\u003esetVersion('1.2')\n\t-\u003esetAmt((int) $price)\n\t-\u003esetRespondType(Spgateway::RESPONSE_TYPE_STRING) // Use String response\n\t-\u003esetItemDesc($desc)\n\t-\u003esetEmail($email)\n\t-\u003esetLoginType(0)\n\t-\u003esetNotifyURL($notifyUrl)\n\t-\u003esetReturnURL($returnUrl)\n\t-\u003esetCustomerURL($customUrl);\n\n$spgateway-\u003eatm-\u003eenable();     // 啟用 ATM\n$spgateway-\u003ebarcode-\u003eenable(); // 啟用條碼\n$spgateway-\u003ecvs-\u003eenable();     // 啟用超商代碼\n$spgateway-\u003ewebATM-\u003eenable();  // 啟用 Web ATM\n\n// 啟用信用卡\n$spgateway-\u003ecreditCard-\u003eenable()\n\t-\u003esetUNIONPAY(1)\n\t-\u003einstallment('3, 6, 12');\n\n// 啟用支付寶\n$spgateway-\u003ealipay-\u003eenable()\n\t-\u003esetReceiver('Sakura')\n\t-\u003esetTel1('123-12312-123')\n\t-\u003esetTel2('123-123-123')\n\t-\u003esetCount(1)\n\t-\u003eaddProduct(\n\t\t$item-\u003eid,\n\t\t$item-\u003etitle,\n\t\t$desc,\n\t\t$item-\u003eprice,\n\t\t1\n\t);\n\n// 啟用財富通\n$spgateway-\u003etenpay-\u003eenable()\n\t-\u003esetReceiver('Flower')\n\t-\u003esetTel1('123-12312-123')\n\t-\u003esetTel2('123-123-123')\n\t-\u003esetCount(1)\n\t-\u003eaddProduct(\n\t\t$item-\u003eid,\n\t\t$item-\u003etitle,\n\t\t$desc,\n\t\t(int) $price,\n\t\t1\n\t);\n\n// 輸出成 \u003cform\u003e 直接 POST 即可繳費\necho $spgateway-\u003eredner('\u003cbutton\u003eSubmit\u003c/button\u003e'); // Render HTML Form\n\n// 或是立即 POST (會印出 form 然後用 JS 立即 submit)\n$spgateway-\u003epost();\n```\n\n## 獲取繳費資訊\n\n在你的 ReturnUrl 中，直接呼叫 `PaidReceiver` 取得回應資料。\n\n```php\n$receiver = new \\Asika\\Spgateway\\PaidReceiver('MerchantID', 'key', 'iv');\n$receiver-\u003esetData($_POST);\n\n// You can log data here\n\n// Check transaction status \nif ($receiver-\u003egetStatus() !== \\Asika\\Spgateway\\Payment\\AbstractPayment::STATUS_SUCCESS)\n{\n    // SDK 會幫您自動翻譯 Status Code 成為中文\n    throw new \\RuntimeException($receiver-\u003egetMessage(), 400);\n}\n\n// Validate transaction\nif (!$receiver-\u003evalidate())\n{\n    throw new \\RuntimeException('訂單驗證失敗', 403);\n}\n\n// 以下的 $myOrder 是模擬資料，請代換成您所用框架的寫法\n\n// WebATM \u0026 信用卡 屬於立即繳費完成的管道，可以直接將 order 設為成功\nif ($receiver-\u003epayment-\u003eisInstantPayment())\n{\n    $myOrder-\u003estate = 'success';\n}\n// 不然就屬於 Deferral payment，將 order 設為 pending 等待使用者付費\nelse\n{\n    $myOrder-\u003estate = 'pending';\n}\n\n$myOrder-\u003eid      = $receiver-\u003egetMerchantOrderNo();\n$myOrder-\u003eexpired = $receiver-\u003egetExpireDate();\n$myOrder-\u003epayment = $receiver-\u003egetPaymentType();\n$myOrder-\u003ereturned_data = json_encode($_POST); // Save return data for future use.\n\n// Save order\n$myOrder-\u003esave();\n```\n\n用相同的方法寫在 NotifyUrl 中\n\n```php\n$receiver = new \\Asika\\Spgateway\\PaidReceiver('MerchantID', 'key', 'iv');\n$receiver-\u003esetData($_POST);\n\n// Validate transaction\nif (!$receiver-\u003evalidate())\n{\n    // Log error\n\n    throw new \\RuntimeException('訂單驗證失敗', 403);\n}\n\nif ($receiver-\u003egetStatus() !== \\Asika\\Spgateway\\Payment\\AbstractPayment::STATUS_SUCCESS)\n{\n    // Log error\n\n    throw new \\RuntimeException($receiver-\u003egetMessage(), 400);\n}\n\n// 直接設 order 為繳費成功\n$myOrder-\u003eid      = $receiver-\u003egetMerchantOrderNo();\n$myOrder-\u003estate   = 'success';\n$myOrder-\u003eexpired = '';\n$myOrder-\u003ereturned_data = json_encode($_POST); // Save return data for future use.\n\n// Save order (Use your own framework method)\n$myOrder-\u003esave();\n```\n\n## 在訂單內顯示等待繳款資訊\n\n如果您要在尚未付款的訂單頁面中，產生一個 table 來顯示等待繳款資訊，提醒使用者目前選用的付款方式，可以用 `PendingReceiver`\n\n```php\n$receiver = new \\Asika\\Spgateway\\PendingReceiver;\n\n// 在 ReutnrUrl 就要存好 returned_data\n$receiver-\u003esetData(json_decode($myOrder-\u003ereturned_data, true));\n\necho $receiver-\u003erender((['table_class' =\u003e 'table table-striped', 'title_width' =\u003e '200']);\n```\n\n## 在已繳款訂單內顯示繳款資訊\n\n如果訂單已經繳款成功，我們改用 `PaidReceiver` 來印 table\n\n```php\n$receiver = new \\Asika\\Spgateway\\PaidReceiver; // 不需要 api key\n\n$receiver-\u003esetData(json_decode($myOrder-\u003ereturned_data, true));\n\necho $receiver-\u003erender((['table_class' =\u003e 'table table-striped', 'title_width' =\u003e '200']);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasika32764%2Fspgateway-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasika32764%2Fspgateway-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasika32764%2Fspgateway-sdk/lists"}