{"id":37022817,"url":"https://github.com/gaols/unipay","last_synced_at":"2026-01-14T02:43:47.611Z","repository":{"id":44671439,"uuid":"173062813","full_name":"gaols/unipay","owner":"gaols","description":"统一支付宝和微信扫码支付接口，让网站轻松接入微信和支付宝扫码支付。","archived":true,"fork":false,"pushed_at":"2022-10-22T03:15:46.000Z","size":101,"stargazers_count":8,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-05-25T06:26:47.932Z","etag":null,"topics":["alipay","pay","pay-sdk","weixin-pay","wxpay"],"latest_commit_sha":null,"homepage":"","language":"Java","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/gaols.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}},"created_at":"2019-02-28T07:25:09.000Z","updated_at":"2023-04-05T07:26:37.000Z","dependencies_parsed_at":"2022-08-26T11:00:25.808Z","dependency_job_id":null,"html_url":"https://github.com/gaols/unipay","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/gaols/unipay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaols%2Funipay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaols%2Funipay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaols%2Funipay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaols%2Funipay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gaols","download_url":"https://codeload.github.com/gaols/unipay/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaols%2Funipay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","pay","pay-sdk","weixin-pay","wxpay"],"created_at":"2026-01-14T02:43:46.863Z","updated_at":"2026-01-14T02:43:47.603Z","avatar_url":"https://github.com/gaols.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 停止维护\n\n由于时间问题，本项目停止维护，如有需要可以使用 [isaltyfish 的 fork 版本：https://github.com/isaltyfish/unipay](https://github.com/isaltyfish/unipay)。\n\n# 扫码支付sdk\n\n网站需要同时接入支付宝扫码支付和微信扫码支付？微信支付和支付宝扫码支付接口不同，写起来有没有很坑？本sdk的目标是统一这两家的扫码\n支付接口，让接入变得简单。\n\n## 使用方法\n\n### 引入依赖\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.gaols.unipay\u003c/groupId\u003e\n    \u003cartifactId\u003eunipay-pc\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### 代码示例\n\n```java\nUnipayService service = UniPayServiceFactory.getUnipayService(PayType.alipay); // 微信支付使用PayType.wx\n\nOrder order = new Order();\norder.setSubject(\"腾讯充值中心-企鹅币充值\"); // 商品\norder.setOutTradeNo(\"Q12345678923\"); // 订单号\norder.setTotalFee(100);  // 支付金额，单位为**分**\n\nOrderContext context = new OrderContext();\ncontext.setNotifyUrl(\"http://www.youdomain/pay/notify/callback\"); // 接收支付回调的url\n\n// 如果是微信支付，那么使用MchInfo.create(PayType.wx, \"wx.properties\")\nPushOrderResult result = service.unifyOrder(context, order, MchInfo.create(PayType.alipay, \"zfb_test.properties\"));\nif (result.isOk()) {\n    // 将这个字符串传到网页上，使用一个二维码生成js库生成二维码就可以了。\n    String qrcodeContent = result.getQrCodeContent();\n}\n```\n\n**10行代码**就生成了二维码内容（字符串），将这个字符串传到网站页面，使用一个二维码js库就可以生成\n一个支付二维码。\n\n\u003e 不知道二维码js库？[戳这里看看！](https://github.com/davidshimjs/qrcodejs)\n\u003e 统一接口，用起来是不是方便，而且只需要短短的10来行代码！是很真的吗？先看完魔鬼细节再说吧！\n\n## 配置细节\n\n`MchInfo.create(...)`是为了简化配置而写的工具类，内部实现会根据支付方式的不同自动创建不同的账户配置实例：\n\n* 支付宝对应的是：[AlipayMchInfo](https://github.com/gaols/unipay/blob/master/src/main/java/com/github/gaols/unipay/alipay/AlipayMchInfo.java)；\n* 微信对应的是：[WxpayMchInfo](https://github.com/gaols/unipay/blob/master/src/main/java/com/github/gaols/unipay/wxpay/WxpayMchInfo.java)。\n\n`MchInfo.create(...)`第二个参数是用来接收收款账户的配置信息。支付宝和微信需要的配置文件是不同，为了简便起见，推荐直接拷贝本项目目录下\n*sample*子目录下的配置文件，将里面的配置信息改成实际的值，放到项目的**src/main/resources**目录下。\n\n\u003e `MchInfo.create(...)`工具类只是为了简化配置，如有必要，可以根据支付类型的不同手动实例化不同的配置实例。\n\n## 处理支付回调\n\n支付回调是支付宝或者微信在用户支付成功后，给商户服务器异步推送的支付通知，告知商户支付结果。商户应以支付结果为依据，正确的处理业务逻辑，同时\n按照支付宝和微信要求的回复格式进行应答。由于网络原因或者其他未知原因，支付通知**可能会多次推送**，商户应该能够正确处理。\n\n这里有几点需要注意：\n\n* 商户服务器应该能够正确的处理重复通知；\n* 应该按照支付宝和微信要求的格式正确应答；\n* 为了防止虚假支付通知，应该能够校验支付通知的真伪。\n\n为了屏蔽处理的复杂性，本项目同样提供了工具类让开发者专注于业务逻辑的开发：\n\n```java\n@RequestMapping(\"/pay/notify\")\n@Controller\nclass NotifyController {\n    @RequestMapping(\"/callback\")\n    @ResponseBody\n    public String handleNotify(HttpServletRequest request) {\n        PayNotifyHandler h = NotifyHandlerFactory.getNotifyHandler(PayType.wx); // 如果是支付宝支付回调使用PayType.alipay\n        return h.handle(request, mchInfo, new PayNotifyCallback() {\n            void onPaySuccess(String outTradeNo, Map\u003cString, String\u003e notifyParas) {\n                // 这里处理支付成功的业务逻辑，能够进入这里也表明支付校验已经通过。\n            }\n            boolean isNotifyHandled(String outTradeNo) {\n                // 这里处理重复通知，如果已经处理过了，返回true，否则返回false。\n                // 如果这里返回了true，那么onPaySuccess不会执行。\n            }\n        });\n    }\n}\n```\n\n## 依赖说明\n\n如果要支持支付宝支付，需要引入`alipay-sdk-java`。\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.alipay.sdk\u003c/groupId\u003e\n    \u003cartifactId\u003ealipay-sdk-java\u003c/artifactId\u003e\n    \u003cversion\u003e3.6.0.ALL\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n如果要支持微信支付，需要引入`weixin-java-pay`或者`weixin-popular`。二选一即可！\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liyiorg\u003c/groupId\u003e\n    \u003cartifactId\u003eweixin-popular\u003c/artifactId\u003e\n    \u003cversion\u003e2.8.27\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003c!-- 或者 --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.binarywang\u003c/groupId\u003e\n    \u003cartifactId\u003eweixin-java-pay\u003c/artifactId\u003e\n    \u003cversion\u003e3.4.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaols%2Funipay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaols%2Funipay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaols%2Funipay/lists"}