{"id":13536300,"url":"https://github.com/Yurunsoft/PaySDK","last_synced_at":"2025-04-02T03:30:30.943Z","repository":{"id":41156315,"uuid":"103361678","full_name":"Yurunsoft/PaySDK","owner":"Yurunsoft","description":"PHP 集成支付 SDK ，集成了支付宝、微信支付的支付接口和其它相关接口的操作。支持 php-fpm 和 Swoole，所有框架通用。宇润PHP全家桶技术支持群：17916227","archived":false,"fork":false,"pushed_at":"2024-09-02T06:01:15.000Z","size":422,"stargazers_count":893,"open_issues_count":7,"forks_count":189,"subscribers_count":39,"default_branch":"dev","last_synced_at":"2025-03-27T05:06:50.713Z","etag":null,"topics":["alipay-sdk","alipaysdk","coroutine","payment","paysdk","php","swoole","weixin-pay"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/Yurunsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-13T06:23:34.000Z","updated_at":"2025-03-26T10:30:09.000Z","dependencies_parsed_at":"2024-01-12T20:47:47.837Z","dependency_job_id":"27e4245f-b957-4e5b-81f8-0fdeaddaa0dc","html_url":"https://github.com/Yurunsoft/PaySDK","commit_stats":{"total_commits":180,"total_committers":9,"mean_commits":20.0,"dds":0.07222222222222219,"last_synced_commit":"e146a056f3aa1b68f64bbc5e261bf137b7723307"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2FPaySDK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2FPaySDK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2FPaySDK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2FPaySDK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yurunsoft","download_url":"https://codeload.github.com/Yurunsoft/PaySDK/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246750739,"owners_count":20827773,"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":["alipay-sdk","alipaysdk","coroutine","payment","paysdk","php","swoole","weixin-pay"],"created_at":"2024-08-01T09:00:36.880Z","updated_at":"2025-04-02T03:30:30.635Z","avatar_url":"https://github.com/Yurunsoft.png","language":"PHP","funding_links":[],"categories":["Third-party SDK","PHP"],"sub_categories":[],"readme":"# PaySDK\r\n\r\n[![Latest Version](https://img.shields.io/packagist/v/yurunsoft/pay-sdk.svg)](https://packagist.org/packages/yurunsoft/pay-sdk)\r\n[![Php Version](https://img.shields.io/badge/php-%3E=5.5-brightgreen.svg)](https://secure.php.net/)\r\n[![IMI Doc](https://img.shields.io/badge/docs-passing-green.svg)](http://doc.yurunsoft.com/PaySDK)\r\n[![IMI License](https://img.shields.io/github/license/Yurunsoft/PaySDK.svg)](https://github.com/Yurunsoft/PaySDK/blob/master/LICENSE)\r\n\r\n## 介绍\r\n\r\nPaySDK 是 PHP 集成支付 SDK ，集成了支付宝、微信支付的支付接口和其它相关接口的操作。\r\n\r\n无框架依赖，支持所有框架，支持 Swoole 协程环境。\r\n\r\n我们有完善的在线技术文档：[http://doc.yurunsoft.com/PaySDK](http://doc.yurunsoft.com/PaySDK)\r\n\r\nAPI 文档：[https://apidoc.gitee.com/yurunsoft/PaySDK](https://apidoc.gitee.com/yurunsoft/PaySDK)\r\n\r\n此项目进入维护阶段，不会支持微信V3接口，懒得跟着他们折腾，如有需要请找别处！\r\n\r\n作者本人不提供任何技术支持，如有需要可以加群讨论：17916227 [![点击加群](https://pub.idqqimg.com/wpa/images/group.png \"点击加群\")](https://jq.qq.com/?_wv=1027\u0026k=5wXf4Zq)，有没有人回复就不一定了。\r\n\r\n大家在开发中肯定会对接各种各样的支付平台，我个人精力有限，欢迎各位来 [Github](https://github.com/Yurunsoft/PaySDK) 提交 PR，一起完善 PaySDK ，让它能够支持更多的支付平台，更加稳定可靠好用。\r\n\r\n## 支持的支付接口\r\n\r\n### 支付宝\r\n\r\n* 即时到账-电脑网站支付（老）\r\n* 即时到账-手机网站支付（老）\r\n* 当面付\r\n* 手机网站支付\r\n* 电脑网站支付\r\n* APP支付服务端\r\n* 小程序支付\r\n* 单笔转账到支付宝账户\r\n* 海外支付（电脑网站、手机网站、APP、扫码）\r\n* 海关报关\r\n* 其它辅助交易接口（退款、查询等）\r\n\r\n### 微信支付\r\n\r\n* 刷卡支付\r\n* 公众号支付\r\n* 扫码支付\r\n* APP支付\r\n* H5支付\r\n* 小程序支付\r\n* 企业付款到零钱\r\n* 企业付款到银行卡\r\n* 海外支付（刷卡、公众号、扫码、APP）\r\n* 海关报关\r\n* 其它辅助交易接口（退款、查询等）\r\n\r\n## 安装\r\n\r\n在您的composer.json中加入配置：\r\n\r\n`PHP \u003e= 5.5`\r\n\r\n```json\r\n{\r\n    \"require\": {\r\n        \"yurunsoft/pay-sdk\": \"~3.0\"\r\n    }\r\n}\r\n```\r\n\r\n`PHP \u003e= 5.4`\r\n\r\n```json\r\n{\r\n    \"require\": {\r\n        \"yurunsoft/pay-sdk\": \"~2.0\"\r\n    }\r\n}\r\n```\r\n\r\n\u003e 3.x 版本支持 PHP \u003e= 5.5，持续迭代维护中\r\n\r\n\u003e 2.x 版本支持 PHP \u003e= 5.4，支持长期 BUG 维护，保证稳定可用，停止功能性更新\r\n\r\n然后执行`composer update`命令。\r\n\r\n## 代码示例\r\n\r\n### 支付宝即时到账\r\n\r\n```php\r\n// SDK实例化，传入公共配置\r\n$pay = new \\Yurun\\PaySDK\\Alipay\\SDK($params);\r\n\r\n// 支付接口\r\n$request = new \\Yurun\\PaySDK\\Alipay\\Params\\Pay\\Request;\r\n$request-\u003enotify_url = ''; // 支付后通知地址（作为支付成功回调，这个可靠）\r\n$request-\u003ereturn_url = ''; // 支付后跳转返回地址\r\n$request-\u003ebusinessParams-\u003eseller_id = $GLOBALS['PAY_CONFIG']['appid']; // 卖家支付宝用户号\r\n$request-\u003ebusinessParams-\u003eout_trade_no = 'test' . mt_rand(10000000,99999999); // 商户订单号\r\n$request-\u003ebusinessParams-\u003etotal_fee = 0.01; // 价格\r\n$request-\u003ebusinessParams-\u003esubject = '测试商品'; // 商品标题\r\n\r\n// 跳转到支付页面\r\n// $pay-\u003eredirectExecute($request);\r\n\r\n// 获取跳转url\r\n$pay-\u003eprepareExecute($request, $url);\r\nvar_dump($url);\r\n```\r\n\r\n### 支付宝手机网站支付\r\n\r\n```php\r\n// SDK实例化，传入公共配置\r\n$pay = new \\Yurun\\PaySDK\\AlipayApp\\SDK($params);\r\n\r\n// 支付接口\r\n$request = new \\Yurun\\PaySDK\\AlipayApp\\Wap\\Params\\Pay\\Request;\r\n$request-\u003enotify_url = ''; // 支付后通知地址（作为支付成功回调，这个可靠）\r\n$request-\u003ereturn_url = ''; // 支付后跳转返回地址\r\n$request-\u003ebusinessParams-\u003eout_trade_no = 'test' . mt_rand(10000000,99999999); // 商户订单号\r\n$request-\u003ebusinessParams-\u003etotal_amount = 0.01; // 价格\r\n$request-\u003ebusinessParams-\u003esubject = '小米手机9黑色陶瓷尊享版'; // 商品标题\r\n\r\n// 跳转到支付页面\r\n// $pay-\u003eredirectExecute($request);\r\n\r\n// 获取跳转url\r\n$pay-\u003eprepareExecute($request, $url);\r\nvar_dump($url);\r\n```\r\n\r\n### 微信H5支付\r\n\r\n```php\r\n// SDK实例化，传入公共配置\r\n$pay = new \\Yurun\\PaySDK\\Weixin\\SDK($params);\r\n\r\n// 支付接口\r\n$request = new \\Yurun\\PaySDK\\Weixin\\H5\\Params\\Pay\\Request;\r\n$request-\u003ebody = 'test'; // 商品描述\r\n$request-\u003eout_trade_no = 'test' . mt_rand(10000000,99999999); // 订单号\r\n$request-\u003etotal_fee = 1; // 订单总金额，单位为：分\r\n$request-\u003espbill_create_ip = '127.0.0.1'; // 客户端ip\r\n$request-\u003enotify_url = ''; // 异步通知地址\r\n\r\n// 调用接口\r\n$result = $pay-\u003eexecute($request);\r\nif($pay-\u003echeckResult())\r\n{\r\n    // 跳转支付界面\r\n    header('Location: ' . $result['mweb_url']);\r\n}\r\nelse\r\n{\r\n    var_dump($pay-\u003egetErrorCode() . ':' . $pay-\u003egetError());\r\n}\r\nexit;\r\n```\r\n\r\n### Swoole 协程环境支持\r\n\r\n在支付、退款异步通知中，需要赋值 `Swoole` 的 `Request` 和 `Response` 对象，或者遵循 PSR-7 标准的对象即可。\r\n\r\n主流框架的 `Request` 和 `Response` 对象，一般都遵循 PSR-7 标准，可以直接使用。\r\n\r\n#### imi 框架中使用\r\n\r\nimi 是基于 PHP Swoole 的高性能协程应用开发框架，它支持 HttpApi、WebSocket、TCP、UDP 服务的开发。\r\n\r\n在 Swoole 的加持下，相比 php-fpm 请求响应能力，I/O密集型场景处理能力，有着本质上的提升。\r\n\r\nimi 框架拥有丰富的功能组件，可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网（IOT）、车联网、智能家居等领域。可以使企业 IT 研发团队的效率大大提升，更加专注于开发创新产品。\r\n\r\n\u003chttps://www.imiphp.com/\u003e\r\n\r\n```php\r\n/**\r\n * 这是一个在控制器中的动作方法\r\n * @Action\r\n */\r\npublic function test()\r\n{\r\n    $payNotify = new class extends \\Yurun\\PaySDK\\Weixin\\Notify\\Pay\r\n    {\r\n        /**\r\n         * 后续执行操作\r\n         * @return void\r\n         */\r\n        protected function __exec()\r\n        {\r\n\r\n        }\r\n    };\r\n    $context = RequestContext::getContext();\r\n    // 下面两行很关键\r\n    $payNotify-\u003eswooleRequest = $context['request'];\r\n    $payNotify-\u003eswooleResponse = $context['response'];\r\n\r\n    $sdk-\u003enotify($payNotify);\r\n\r\n    // 这句话必须填写\r\n    return $payNotify-\u003eswooleResponse;\r\n}\r\n```\r\n\r\n#### 其它框架（Swoole 对象）\r\n\r\n```php\r\n$payNotify = new class extends \\Yurun\\PaySDK\\Weixin\\Notify\\Pay\r\n{\r\n    /**\r\n     * 后续执行操作\r\n     * @return void\r\n     */\r\n    protected function __exec()\r\n    {\r\n\r\n    }\r\n};\r\n// 下面两行很关键，$request、$response 从 request 中获取\r\n// 或者查阅如何从你使用的框架中获取\r\n$payNotify-\u003eswooleRequest = $request;\r\n$payNotify-\u003eswooleResponse = $response;\r\n\r\n$sdk-\u003enotify($payNotify);\r\n```\r\n\r\n#### 其它框架（PSR-7 对象）\r\n\r\n```php\r\n$payNotify = new class extends \\Yurun\\PaySDK\\Weixin\\Notify\\Pay\r\n{\r\n    /**\r\n     * 后续执行操作\r\n     * @return void\r\n     */\r\n    protected function __exec()\r\n    {\r\n\r\n    }\r\n};\r\n// 目前主流 Swoole 基本都支持 PSR-7 标准的对象\r\n// 所以可以直接传入，如何获取请查阅对应框架的文档\r\n$payNotify-\u003eswooleRequest = $request;\r\n$payNotify-\u003eswooleResponse = $response;\r\n\r\n$sdk-\u003enotify($payNotify);\r\n\r\n// 处理完成后需要将 $response 从控制器返回或者赋值给上下文\r\n// 不同框架的操作不同，请自行查阅对应框架的文档\r\nreturn $payNotify-\u003eswooleResponse;\r\n```\r\n\r\n## 商业服务\r\n\r\n**服务内容：**\r\n\r\n* 低费率开户（仅合法商户）\r\n* 问题排查及咨询\r\n* 代接支付\r\n* 其它合作\r\n\r\n如有需要加QQ：`369124067` 微信：`wx_zhangrunyu`（注明来意）\r\n\r\n## 捐赠\r\n\r\n\u003cimg src=\"https://raw.githubusercontent.com/Yurunsoft/PaySDK/master/res/pay.png\"/\u003e\r\n\r\n开源不求盈利，多少都是心意，生活不易，随缘随缘……\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYurunsoft%2FPaySDK","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FYurunsoft%2FPaySDK","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYurunsoft%2FPaySDK/lists"}