{"id":13459438,"url":"https://github.com/zoujingli/WeChatDeveloper","last_synced_at":"2025-03-24T16:31:55.411Z","repository":{"id":40609202,"uuid":"119039392","full_name":"zoujingli/WeChatDeveloper","owner":"zoujingli","description":"【新】微信服务号+微信小程序+微信支付+支付宝支付","archived":false,"fork":false,"pushed_at":"2025-03-18T03:51:30.000Z","size":711,"stargazers_count":1555,"open_issues_count":10,"forks_count":450,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-03-18T21:11:17.944Z","etag":null,"topics":["developer","phpsdk","wechat","wxpay","wxsdk"],"latest_commit_sha":null,"homepage":"https://www.kancloud.cn/zoujingli/wechat-developer/content","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/zoujingli.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":"2018-01-26T10:34:51.000Z","updated_at":"2025-03-18T08:18:08.000Z","dependencies_parsed_at":"2024-01-16T16:20:45.979Z","dependency_job_id":"372a4960-5b4d-4afe-8d6b-6b613fbc65ce","html_url":"https://github.com/zoujingli/WeChatDeveloper","commit_stats":{"total_commits":466,"total_committers":18,"mean_commits":25.88888888888889,"dds":0.05579399141630903,"last_synced_commit":"6e349d997d9037de60744529f28ba686b08c3cf1"},"previous_names":[],"tags_count":83,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoujingli%2FWeChatDeveloper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoujingli%2FWeChatDeveloper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoujingli%2FWeChatDeveloper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoujingli%2FWeChatDeveloper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zoujingli","download_url":"https://codeload.github.com/zoujingli/WeChatDeveloper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245308730,"owners_count":20594298,"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":["developer","phpsdk","wechat","wxpay","wxsdk"],"created_at":"2024-07-31T09:01:22.356Z","updated_at":"2025-03-24T16:31:50.401Z","avatar_url":"https://github.com/zoujingli.png","language":"PHP","funding_links":[],"categories":["PHP","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# WeChatDeveloper for PHP\n\n[![Latest Stable Version](https://poser.pugx.org/zoujingli/wechat-developer/v/stable)](https://packagist.org/packages/zoujingli/wechat-developer)\n[![Total Downloads](https://poser.pugx.org/zoujingli/wechat-developer/downloads)](https://packagist.org/packages/zoujingli/wechat-developer)\n[![Monthly Downloads](https://poser.pugx.org/zoujingli/wechat-developer/d/monthly)](https://packagist.org/packages/zoujingli/wechat-developer)\n[![Daily Downloads](https://poser.pugx.org/zoujingli/wechat-developer/d/daily)](https://packagist.org/packages/zoujingli/wechat-developer)\n[![PHP Version Require](http://poser.pugx.org/zoujingli/wechat-developer/require/php)](https://packagist.org/packages/wechat-developer)\n[![License](https://poser.pugx.org/zoujingli/wechat-developer/license)](https://packagist.org/packages/zoujingli/wechat-developer)\n\n* WeChatDeveloper 是基于 [wechat-php-sdk](https://github.com/zoujingli/wechat-php-sdk) 重构，优化并完善；\n* 运行最底要求 PHP 版本 5.4 , 建议在 PHP7 上运行以获取最佳性能；\n* 目前 WeChatDeveloper 针对 access_token 失效增加了自动刷新机制；\n* 微信的部分接口需要缓存数据在本地，因此配置目录并需要对目录有写权限；\n* 我们鼓励大家使用 composer 来管理您的第三方库，方便后期更新操作；\n* WeChatDeveloper 已历经数个线上项目考验，欢迎 fork 或 star 此项目。\n* 微信商户已经支持 v2 和 v3 接口，未加入的接口可以使用通用方式调用。\n\n功能描述\n----\n\n* 微信小程序，服务端接口支持\n* 微信认证服务号，服务端接口支持\n* 微信支付（账单、卡券、红包、退款、转账、App支付、JSAPI支付、Web支付、扫码支付等）\n* 支付宝支付（账单、转账、App支付、刷卡支付、扫码支付、Web支付、Wap支付等）\n\n技术帮助\n----\nPHP开发技术交流（QQ群 513350915）\n\n[![PHP微信开发群 (SDK)](http://pub.idqqimg.com/wpa/images/group.png)](http://shang.qq.com/wpa/qunwpa?idkey=ae25cf789dafbef62e50a980ffc31242f150bc61a61164458216dd98c411832a)\n\nWeChatDeveloper 是基于官方接口封装，在做微信开发前，必需先阅读微信官方文档。\n\n* 微信官方文档：https://mp.weixin.qq.com/wiki\n* 商户支付文档：https://pay.weixin.qq.com/wiki/doc/api/index.html\n\n针对 WeChatDeveloper 也有一准备了帮助资料可供参考。\n\n* ThinkAdmin：https://github.com/zoujingli/ThinkAdmin\n* WeChatDeveloper：https://www.kancloud.cn/zoujingli/wechat-developer\n\n代码仓库\n----\nWeChatDeveloper 为开源项目，允许把它用于任何地方，不受任何约束，欢迎 fork 项目。\n\n我们的代码仓库已移至 **Github**，而 **Gitee** 和 **Gitcode** 则仅作为国内镜像仓库，方便广大开发者获取和使用。若想提交 **PR** 或 **ISSUE** 请在 [WeChatDeveloper](https://github.com/zoujingli/WeChatDeveloper) 仓库进行操作，如果在其他仓库操作或提交问题将无法处理！\n\n* Gitee 仓库地址：https://gitee.com/zoujingli/WeChatDeveloper\n* GitHub 仓库地址：https://github.com/zoujingli/WeChatDeveloper\n* GitCode 仓库地址：https://gitcode.com/ThinkAdmin/WeChatDeveloper\n\n文件说明（后续会根据官方文档增加文件）\n----\n\n| 文件名               | 类名                  | 描述           | 类型    | 加载 ①                      |\n|-------------------|---------------------|--------------|-------|---------------------------|\n| App.php           | AliPay\\App          | 支付宝App支付     | 支付宝支付 | \\We::AliPayApp()          |\n| Bill.php          | AliPay\\Bill         | 支付宝账单下载      | 支付宝支付 | \\We::AliPayBill()         |\n| Pos.php           | AliPay\\Pos          | 支付宝刷卡支付      | 支付宝支付 | \\We::AliPayPos()          |\n| Scan.php          | AliPay\\Scan         | 支付宝扫码支付      | 支付宝支付 | \\We::AliPayScan()         |\n| Transfer.php      | AliPay\\Transfer     | 支付宝转账        | 支付宝支付 | \\We::AliPayTransfer()     |\n| Wap.php           | AliPay\\Wap          | 支付宝Wap支付     | 支付宝支付 | \\We::AliPayWap()          |\n| Web.php           | AliPay\\Web          | 支付宝Web支付     | 支付宝支付 | \\We::AliPayWeb()          |\n| Card.php          | WeChat\\Card         | 微信卡券接口支持     | 认证服务号 | \\We::WeChatCard()         |\n| Custom.php        | WeChat\\Custom       | 微信客服消息接口支持   | 认证服务号 | \\We::WeChatCustom()       |\n| Media.php         | WeChat\\Media        | 微信媒体素材接口支持   | 认证服务号 | \\We::WeChatMedia()        |\n| Oauth.php         | WeChat\\Oauth        | 微信网页授权消息类接口  | 认证服务号 | \\We::WeChatOauth()        |\n| Pay.php           | WeChat\\Pay          | 微信支付类接口      | 认证服务号 | \\We::WeChatPay()          |\n| Product.php       | WeChat\\Product      | 微信商店类接口      | 认证服务号 | \\We::WeChatProduct()      |\n| Qrcode.php        | WeChat\\Qrcode       | 微信二维码接口支持    | 认证服务号 | \\We::WeChatQrcode()       |\n| Receive.php       | WeChat\\Receive      | 微信推送事件消息处理支持 | 认证服务号 | \\We::WeChatReceive()      |\n| Scan.php          | WeChat\\Scan         | 微信扫一扫接口支持    | 认证服务号 | \\We::WeChatScan()         |\n| Script.php        | WeChat\\Script       | 微信前端JSSDK支持  | 认证服务号 | \\We::WeChatScript()       |\n| Shake.php         | WeChat\\Shake        | 微信蓝牙设备揺一揺接口  | 认证服务号 | \\We::WeChatShake()        |\n| Tags.php          | WeChat\\Tags         | 微信粉丝标签接口支持   | 认证服务号 | \\We::WeChatTags()         |\n| Template.php      | WeChat\\Template     | 微信模板消息接口支持   | 认证服务号 | \\We::WeChatTemplate()     |\n| User.php          | WeChat\\User         | 微信粉丝管理接口支持   | 认证服务号 | \\We::WeChatCard()         |\n| Wifi.php          | WeChat\\Wifi         | 微信门店WIFI管理支持 | 认证服务号 | \\We::WeChatWifi()         |\n| Draft.php         | WeChat\\Draft        | 微信草稿箱        | 认证服务号 | \\We::WeChatDraft()        |\n| Freepublish.php   | WeChat\\Freepublish  | 微信发布能力       | 认证服务号 | \\We::WeChatFreepublish()  |\n| Bill.php          | WePay\\Bill          | 微信商户账单及评论    | 微信支付  | \\We::WePayBill()          |\n| Coupon.php        | WePay\\Coupon        | 微信商户代金券      | 微信支付  | \\We::WePayCoupon()        |\n| Order.php         | WePay\\Order         | 微信商户订单       | 微信支付  | \\We::WePayOrder()         |\n| Redpack.php       | WePay\\Redpack       | 微信红包支持       | 微信支付  | \\We::WePayRedpack()       |\n| Refund.php        | WePay\\Refund        | 微信商户退款       | 微信支付  | \\We::WePayRefund()        |\n| Transfers.php     | WePay\\Transfers     | 微信商户打款到零钱    | 微信支付  | \\We::WePayTransfers()     |\n| TransfersBank.php | WePay\\TransfersBank | 微信商户打款到银行卡   | 微信支付  | \\We::WePayTransfersBank() |\n| Crypt.php         | WeMini\\Crypt        | 微信小程序数据加密处理  | 微信小程序 | \\We::WeMiniCrypt()        |\n| Plugs.php         | WeMini\\Plugs        | 微信小程序插件管理    | 微信小程序 | \\We::WeMiniPlugs()        |\n| Poi.php           | WeMini\\Poi          | 微信小程序地址管理    | 微信小程序 | \\We::WeMiniPoi()          |\n| Qrcode.php        | WeMini\\Qrcode       | 微信小程序二维码管理   | 微信小程序 | \\We::WeMiniCrypt()        |\n| Template.php      | WeMini\\Template     | 微信小程序模板消息支持  | 微信小程序 | \\We::WeMiniTemplate()     |\n| Total.php         | WeMini\\Total        | 微信小程序数据接口    | 微信小程序 | \\We::WeMiniTotal()        |\n\n安装使用\n----\n1.1 通过 Composer 来管理安装\n\n```shell\n# 首次安装 线上版本（稳定）\ncomposer require zoujingli/wechat-developer\n\n# 首次安装 开发版本（开发）\ncomposer require zoujingli/wechat-developer dev-master\n\n# 更新 WeChatDeveloper\ncomposer update zoujingli/wechat-developer\n```\n\n1.2 如果不使用 Composer， 可以下载 WeChatDeveloper 并解压到项目中\n\n```php\n# 在项目中加载初始化文件\ninclude \"您的目录/WeChatDeveloper/include.php\";\n```\n\n2.1 接口实例所需参数\n\n```php\n// =====================================================\n// 配置缓存处理函数 ( 适配其他环境 )\n// -----------------------------------------------------\n// 数据缓存 (set|get|del) 操作可以将缓存写到任意位置或Redis\n// 文件缓存 (put) 只能写在本地服务器，还需要返回可读的文件路径\n// 未配置自定义缓存处理机制时，默认在 cache_path 写入文件缓存\n// // =====================================================\n// \\WeChat\\Contracts\\Tools::$cache_callable = [\n//    'set' =\u003e function ($name, $value, $expired = 360) {\n//        var_dump(func_get_args());\n//         return $value;\n//    },\n//    'get' =\u003e function ($name) {\n//        var_dump(func_get_args());\n//        return $value;\n//    },\n//    'del' =\u003e function ($name) {\n//        var_dump(func_get_args());\n//        return true;\n//    },\n//    'put' =\u003e function ($name) {\n//        var_dump(func_get_args());\n//        return $filePath;\n//    },\n// ];\n\n$config = [\n    'token'          =\u003e 'test',\n    'appid'          =\u003e 'wx60a43dd8161666d4',\n    'appsecret'      =\u003e '71308e96a204296c57d7cd4b21b883e8',\n    'encodingaeskey' =\u003e 'BJIUzE0gqlWy0GxfPp4J1oPTBmOrNDIGPNav1YFH5Z5',\n    // 配置商户支付参数（可选，在使用支付功能时需要）\n    'mch_id'         =\u003e \"1235704602\",\n    'mch_key'        =\u003e 'IKI4kpHjU94ji3oqre5zYaQMwLHuZPmj',\n    // 配置商户支付双向证书目录（可选，在使用退款|打款|红包时需要）\n    'ssl_key'        =\u003e '',\n    'ssl_cer'        =\u003e '',\n    // 缓存目录配置（可选，需拥有读写权限）\n    'cache_path'     =\u003e '',\n];\n```\n\n3.1 实例指定接口\n\n```php\ntry {\n\n    // 实例对应的接口对象\n    $user = new \\WeChat\\User($config);\n    \n    // 调用接口对象方法\n    $list = $user-\u003egetUserList();\n    \n    // 处理返回的结果\n    echo '\u003cpre\u003e';\n    var_export($list);\n    \n} catch (Exception $e) {\n\n    // 出错啦，处理下吧\n    echo $e-\u003egetMessage() . PHP_EOL;\n    \n}\n```\n\n微信支付\n---\n\n```php\n  // 创建接口实例\n  $wechat = new \\WeChat\\Pay($config);\n  \n  // 组装参数，可以参考官方商户文档\n  $options = [\n      'body'             =\u003e '测试商品',\n      'out_trade_no'     =\u003e time(),\n      'total_fee'        =\u003e '1',\n      'openid'           =\u003e 'o38gpszoJoC9oJYz3UHHf6bEp0Lo',\n      'trade_type'       =\u003e 'JSAPI',\n      'notify_url'       =\u003e 'http://a.com/text.html',\n      'spbill_create_ip' =\u003e '127.0.0.1',\n  ];\n    \ntry {\n\n    // 生成预支付码\n    $result = $wechat-\u003ecreateOrder($options);\n    \n    // 创建JSAPI参数签名\n    $options = $wechat-\u003ecreateParamsForJsApi($result['prepay_id']);\n    \n    // @todo 把 $options 传到前端用js发起支付就可以了\n    \n} catch (Exception $e) {\n\n    // 出错啦，处理下吧\n    echo $e-\u003egetMessage() . PHP_EOL;\n    \n}\n```\n\n* 更多功能请阅读测试代码或SDK封装源码\n\n支付宝支付\n----\n\n* 支付参数配置（可用沙箱模式）\n\n```php\n$config = [\n    // 沙箱模式\n    'debug'            =\u003e true,\n    // 签名类型 ( RSA|RSA2 )\n    'sign_type'        =\u003e 'RSA2',\n    // 应用ID\n    'appid'            =\u003e '2021000122667306',\n    // 应用私钥内容 ( 需1行填写，特别注意：这里的应用私钥通常由支付宝密钥管理工具生成 )\n    'private_key'      =\u003e 'MIIEowIBAAKCAQEAn...',\n    // 公钥模式，支付宝公钥内容 ( 需1行填写，特别注意：这里不是应用公钥而是支付宝公钥，通常是上传应用公钥换取支付宝公钥，在网页可以复制 )\n    'public_key'       =\u003e '',\n    // 证书模式，应用公钥证书路径 ( 新版资金类接口转 app_cert_sn，如文件 appCertPublicKey.crt )\n    'app_cert_path'    =\u003e __DIR__ . '/alipay/appPublicCert.crt', // 'app_cert' =\u003e '证书内容',\n    // 证书模式，支付宝根证书路径 ( 新版资金类接口转 alipay_root_cert_sn，如文件 alipayRootCert.crt )\n    'alipay_root_path' =\u003e __DIR__ . '/alipay/alipayRootCert.crt', // 'root_cert' =\u003e '证书内容',\n    // 证书模式，支付宝公钥证书路径 ( 未填写 public_key 时启用此参数，如文件 alipayPublicCert.crt )\n    'alipay_cert_path' =\u003e __DIR__ . '/alipay/alipayPublicCert.crt', // 'public_key' =\u003e '证书内容'\n    // 支付成功通知地址\n    'notify_url'       =\u003e '',\n    // 网页支付回跳地址\n    'return_url'       =\u003e '',\n];\n```\n\n* 支付宝发起PC网站支付\n\n```php\n// 参考公共参数  https://docs.open.alipay.com/203/107090/\n$config['notify_url'] = 'http://pay.thinkadmin.top/test/alipay-notify.php';\n$config['return_url'] = 'http://pay.thinkadmin.top/test/alipay-success.php';\n\ntry {\n    \n    // 实例支付对象\n    $pay = We::AliPayWeb($config);\n    // $pay = new \\AliPay\\Web($config);\n    \n    // 参考链接：https://docs.open.alipay.com/api_1/alipay.trade.page.pay\n    $result = $pay-\u003eapply([\n        'out_trade_no' =\u003e time(), // 商户订单号\n        'total_amount' =\u003e '1',    // 支付金额\n        'subject'      =\u003e '支付订单描述', // 支付订单描述\n    ]);\n    \n    echo $result; // 直接输出HTML（提交表单跳转)\n    \n} catch (Exception $e) {\n\n    // 异常处理\n    echo $e-\u003egetMessage();\n    \n}\n```\n\n* 支付宝发起手机网站支付\n\n```php\n// 参考公共参数  https://docs.open.alipay.com/203/107090/\n$config['notify_url'] = 'http://pay.thinkadmin.top/test/alipay-notify.php';\n$config['return_url'] = 'http://pay.thinkadmin.top/test/alipay-success.php';\n\ntry {\n\n    // 实例支付对象\n    $pay = We::AliPayWap($config);\n    // $pay = new \\AliPay\\Wap($config);\n\n    // 参考链接：https://docs.open.alipay.com/api_1/alipay.trade.wap.pay\n    $result = $pay-\u003eapply([\n        'out_trade_no' =\u003e time(), // 商户订单号\n        'total_amount' =\u003e '1',    // 支付金额\n        'subject'      =\u003e '支付订单描述', // 支付订单描述\n    ]);\n\n    echo $result; // 直接输出HTML（提交表单跳转)\n\n} catch (Exception $e) {\n\n    // 异常处理\n    echo $e-\u003egetMessage();\n\n}\n```\n\n* 更多功能请阅读测试代码或SDK封装源码\n\n## 版权说明\n\n**WeChatDeveloper** 遵循 **MIT** 开源协议发布，并免费提供使用。\n\n本项目包含的第三方源码和二进制文件的版权信息将另行标注，请在对应文件查看。\n\n版权所有 Copyright © 2014-2023 by ThinkAdmin (https://thinkadmin.top) All rights reserved。\n\n## 赞助打赏，请作者喝杯茶 ~\n\n![赞助](https://doc.thinkadmin.top/static/img/pay.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoujingli%2FWeChatDeveloper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzoujingli%2FWeChatDeveloper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoujingli%2FWeChatDeveloper/lists"}