{"id":23160854,"url":"https://github.com/isnott/tiny-pay-system","last_synced_at":"2025-10-14T04:12:27.036Z","repository":{"id":238605359,"uuid":"796972678","full_name":"IsNott/tiny-pay-system","owner":"IsNott","description":"自搭建的小型支付系统，集成支付宝、微信等支付能力。","archived":false,"fork":false,"pushed_at":"2024-05-22T14:15:03.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-23T04:51:20.584Z","etag":null,"topics":["alipay"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IsNott.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":"2024-05-07T00:54:35.000Z","updated_at":"2024-05-27T12:38:15.852Z","dependencies_parsed_at":"2024-05-07T02:26:15.496Z","dependency_job_id":"ccf32b1d-5d2b-4211-bc40-5275f0148cf4","html_url":"https://github.com/IsNott/tiny-pay-system","commit_stats":null,"previous_names":["isnott/tiny-pay-system"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsNott%2Ftiny-pay-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsNott%2Ftiny-pay-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsNott%2Ftiny-pay-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsNott%2Ftiny-pay-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IsNott","download_url":"https://codeload.github.com/IsNott/tiny-pay-system/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247236724,"owners_count":20906181,"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"],"created_at":"2024-12-17T23:12:21.282Z","updated_at":"2025-10-14T04:12:21.987Z","avatar_url":"https://github.com/IsNott.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 简单的支付系统\n\n自搭建的简单个人支付系统，预集成支付宝、微信等支付方式。\n\n## 依赖\n\n| name           |version|\n|----------------|---|\n| Java           |17|\n| springboot-web |3.2.1|\n| mysql          |8+|\n| mybatis-plus   |3.5.5|\n\n## 数据表\n| 名称                   | 作用     |\n|----------------------|--------|\n| pay_order_info       | 内部订单记录 |\n| pay_payment_type     | 定义的支付方式|\n| pay_transaction_info | 外部交易记录|\n\n## 使用\n目前支持支付宝H5、JSAPI、二维码、APP业务。(二维码退款无业务通知，后续需要增加补偿查询机制)\n\n- 交易\n\n以支付宝H5为例，支付时调用交易网关接口\n```\npath: /transaction/gateway\nmethod: POST\nbody: {\n    \"paymentCode\":\"alipay\",\n    \"paymentType\":\"h5\",\n    \"subjectName\":\"cs\",\n    \"amount\":\"0.01\",\n    # 当JSAPI时需要传入\n    \"buyerId\":\"\"\n}\n# 返回内容以code=200为成功\nresponse: {\n    \"code\": 200,\n    \"msg\": \"success\",\n    \"obj\": {\n        \"orderNo\": \"1243230959621373952\",\n         # 支付宝H5支付连接\n        \"pageData\": \"https://openapi-sandbox.dl.alipaydev.com/gateway.do?alipay_sdk=alipay-sdk-java-4.39.60.ALL\u0026app_id=9021000122696227\u0026biz_content=%7B%22out_trade_no%22%3A%2220240523100011243230961986961408%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%22cs%22%2C%22product_code%22%3A%22QUICK_WAP_WAY%22%7D\u0026charset=UTF-8\u0026format=json\u0026method=alipay.trade.wap.pay\u0026notify_url=http%3A%2F%2Fqvi7gj.natappfree.cc%2Fnotify%2Falipay\u0026sign=RQSWnvFBgtaRMt7HZKfVAu8xUYDld%2Flj%W9xP5xGDOHNyExPfhJY%2FZ2Z8At2Pf1PN9qpekJEbCRmBrLS2x8poeVoAlsL3qkDi0jrrAMSUuo5XlSnKqK4Fsd%2ByTy9y7Nak7eLFVUGSU77vlsCFQ7xkbuI%2BcWUsbF4pD3c4Z7dbZXB5lN%2FHeFdhtJsi3LP5mVPgJUkt0iDeiBYeEnHSlro3yqm6eD4Xb5ANKxg%2FMyz%2BLkRrvABWaunKTwJEaSlIm9mZBbxtyv3CGqPlMm7q4CExlaX9deZCyLI4kQ%3D%3D\u0026sign_type=RSA2\u0026timestamp=2024-05-23+15%3A55%3A59\u0026version=1.0\"\n    }\n}\n```\n\n- 查单（目前为本地查询，当回调失败后会出现数据不对的情况）\n```\npath: /transaction/query/{orderNo}\nmethod: GET\nresponse: {\n    \"code\": 200,\n    \"msg\": \"success\",\n    \"obj\": {\n        # 传入的订单号，原样返回\n        \"orderNo\": \"1243335144400486400\",\n        # 订单类型 1-支付 2-退款\n        \"orderType\": 1,\n        # 支付业务代码\n        \"paymentCode\": \"alipay\",\n        # 支付业务方式\n        \"paymentType\": \"h5\",\n        # 状态 0-初始 1-请求中 2-业务完成 3-失败 4-支付订单退款中 5-支付订单退款完成\n        \"payStatus\": 5,\n        # 对应的退款订单号\n        \"refundOrderNo\": \"1243335512450662400\"\n    }\n}\n```\n\n- 退款\n```\npath: /transaction/refund\nmethod: POST\nbody: {\n    \"payOrderNo\":1243335144400486400\n}\nresponse: {\n    \"code\": 200,\n    \"msg\": \"success\",\n    \"obj\": {\n        # 是否请求成功\n        \"requestSuccess\": true,\n        # 支付订单号\n        \"orgOrderNo\": \"1243335144400486400\",\n        # 退款订单号\n        \"refundOrderNo\": \"1243335512450662400\"\n    }\n}\n```\n\n## 目录结构\n\n```\n├─Application.java # 项目启动类\n├─vo # vo对象\n| └PayOrderInfoVo.java # 支付订单vo\n├─service # 系统内部服务类\n|    ├─H5PayService.java # 标识H5支付接口\n|    ├─TransactionService.java # 标识交易接口\n|    ├─impl # 服务实现类\n|    |  ├─OrderService.java # 订单服务类\n|    |  ├─PaymentService.java # 支付方式服务类\n|    |  └TransactionService.java # 外部交易服务类\n├─result # 交互结果类\n|   ├─PayResult.java # 支付交互结果基类\n|   ├─RefundResult.java # 退款交互结果基类\n|   ├─alipay \n|   |   └AlipayH5Result.java # 支付宝H5支付交互结果\n├─payment # 第三方支付实现类\n|    ├─alipay\n|    |   └AlipayService.java # 支付宝支付实现类\n├─mapper # 数据访问层\n|   ├─CommonMapper.java\n|   ├─PayOrderInfoMapper.java\n|   ├─PayPaymentTypeMapper.java\n|   └PayTransactionInfoMapper.java\n├─id # 流水号、id生成器\n| ├─CustomIdGenerator.java # 自定义id生成，实现mybatisplus id生成接口\n| ├─SnowflakeIdWorker.java # 雪花id生成器\n| └TransactionNoFactory.java # 交易流水号生成器\n├─exception # 异常包\n|     ├─GlobalExceptionController.java  # 全局异常处理\n|     └PayException.java # 自定义支付异常\n├─enums # 枚举\n|   ├─OrderTypeEnum.java # 订单类型枚举\n|   ├─PayBusinessEnum.java # 支付业务枚举\n|   └StatusEnum.java # 订单\u0026交易状态枚举\n├─entity # 实体\n|   ├─PayOrderInfo.java # 订单对象\n|   ├─PayPaymentType.java # 支付方式对象\n|   └PayTransactionInfo.java # 外部交易对象\n├─dto # 数据传输对象\n|  ├─CreateOrderDTO.java # 创建订单dto\n|  ├─PayOrderDTO.java # 支付订单dto\n|  └RefundOrderDTO.java # 退款dto\n├─controller # 控制层\n|     ├─NotifyController.java # 交易通知\n|     └TransactionController.java # 交易入口\n├─config # 自定义配置包\n|   ├─AlipayConfig.java # 支付宝配置\n|   ├─AutoFillConfig.java # 自动填充字段配置\n|   └WxPayConfig.java # 微信配置\n├─common # 通用包（工具、统一结果类）\n|   ├─CodeGenerator.java\n|   ├─CommonUtils.java\n|   ├─JacksonMapperBuilder.java\n|   ├─R.java\n|   ├─ReflectUtils.java\n|   ├─SpringContextUtils.java\n|   └ThreadPoolContext.java\n├─aop # aop编程包\n|  └LogAspect.java # aop环绕打印日志\n├─annotations # 注解\n|      ├─Payment.java # 标识第三方支付实现类注解\n|      └PaymentType.java # 标识支付类型注解\n```\n\n## 帮助\n如果您恰巧熟悉支付系统，有更好的项目实践，\n有兴趣想要作为项目贡献者，请提供PR，谢谢。\n\n## Support\nIf you happen to be familiar with payment systems, \nhave better project practices, and are interested in being a project contributor, please provide PR, thanks.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisnott%2Ftiny-pay-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisnott%2Ftiny-pay-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisnott%2Ftiny-pay-system/lists"}