We.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | WeChatDeveloper
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2014~2023 ThinkAdmin [ thinkadmin.top ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: https://thinkadmin.top
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( https://mit-license.org )
  10. // | 免责声明 ( https://thinkadmin.top/disclaimer )
  11. // +----------------------------------------------------------------------
  12. // | gitee 代码仓库:https://gitee.com/zoujingli/WeChatDeveloper
  13. // | github 代码仓库:https://github.com/zoujingli/WeChatDeveloper
  14. // +----------------------------------------------------------------------
  15. use WeChat\Contracts\DataArray;
  16. use WeChat\Exceptions\InvalidInstanceException;
  17. /**
  18. * 加载缓存器
  19. *
  20. * Class We
  21. * @library WeChatDeveloper
  22. * @author Anyon<zoujingli@qq.com>
  23. * @date 2018/05/24 13:23
  24. *
  25. * ----- AliPay ----
  26. * @method \AliPay\App AliPayApp($options) static 支付宝App支付网关
  27. * @method \AliPay\Bill AliPayBill($options) static 支付宝电子面单下载
  28. * @method \AliPay\Pos AliPayPos($options) static 支付宝刷卡支付
  29. * @method \AliPay\Scan AliPayScan($options) static 支付宝扫码支付
  30. * @method \AliPay\Trade AliPayTrade($options) static 支付宝标准接口
  31. * @method \AliPay\Transfer AliPayTransfer($options) static 支付宝转账到账户
  32. * @method \AliPay\Wap AliPayWap($options) static 支付宝手机网站支付
  33. * @method \AliPay\Web AliPayWeb($options) static 支付宝网站支付
  34. *
  35. * ----- WeChat -----
  36. * @method \WeChat\Card WeChatCard($options = []) static 微信卡券管理
  37. * @method \WeChat\Custom WeChatCustom($options = []) static 微信客服消息
  38. * @method \WeChat\Limit WeChatLimit($options = []) static 接口调用频次限制
  39. * @method \WeChat\Media WeChatMedia($options = []) static 微信素材管理
  40. * @method \WeChat\Menu WeChatMenu($options = []) static 微信菜单管理
  41. * @method \WeChat\Oauth WeChatOauth($options = []) static 微信网页授权
  42. * @method \WeChat\Pay WeChatPay($options = []) static 微信支付商户
  43. * @method \WeChat\Product WeChatProduct($options = []) static 微信商店管理
  44. * @method \WeChat\Qrcode WeChatQrcode($options = []) static 微信二维码管理
  45. * @method \WeChat\Receive WeChatReceive($options = []) static 微信推送管理
  46. * @method \WeChat\Scan WeChatScan($options = []) static 微信扫一扫接入管理
  47. * @method \WeChat\Script WeChatScript($options = []) static 微信前端支持
  48. * @method \WeChat\Shake WeChatShake($options = []) static 微信揺一揺周边
  49. * @method \WeChat\Tags WeChatTags($options = []) static 微信用户标签管理
  50. * @method \WeChat\Template WeChatTemplate($options = []) static 微信模板消息
  51. * @method \WeChat\User WeChatUser($options = []) static 微信粉丝管理
  52. * @method \WeChat\Wifi WeChatWifi($options = []) static 微信门店WIFI管理
  53. * @method \WeChat\Draft WeChatDraft($options = []) static 微信草稿箱
  54. * @method \WeChat\Freepublish WeChatFreepublish($options = []) static 微信发布能力
  55. *
  56. * ----- WeMini -----
  57. * @method \WeMini\Crypt WeMiniCrypt($options = []) static 小程序数据加密处理
  58. * @method \WeMini\Delivery WeMiniDelivery($options = []) static 小程序即时配送
  59. * @method \WeMini\Guide WeMiniGuide($options = []) static 小程序导购助手
  60. * @method \WeMini\Image WeMiniImage($options = []) static 小程序图像处理
  61. * @method \WeMini\Live WeMiniLive($options = []) static 小程序直播接口
  62. * @method \WeMini\Logistics WeMiniLogistics($options = []) static 小程序物流助手
  63. * @method \WeMini\Message WeMiniMessage($options = []) static 小程序动态消息
  64. * @method \WeMini\Newtmpl WeMiniNewtmpl($options = []) static 小程序订阅消息
  65. * @method \WeMini\Ocr WeMiniOcr($options = []) static 小程序ORC服务
  66. * @method \WeMini\Operation WeMiniOperation($options = []) static 小程序运维中心
  67. * @method \WeMini\Plugs WeMiniPlugs($options = []) static 小程序插件管理
  68. * @method \WeMini\Poi WeMiniPoi($options = []) static 小程序地址管理
  69. * @method \WeMini\Qrcode WeMiniQrcode($options = []) static 小程序二维码管理
  70. * @method \WeMini\Scheme WeMiniScheme($options = []) static 小程序 URL-Scheme
  71. * @method \WeMini\Search WeMiniSearch($options = []) static 小程序搜索
  72. * @method \WeMini\Security WeMiniSecurity($options = []) static 小程序内容安全
  73. * @method \WeMini\Soter WeMiniSoter($options = []) static 小程序生物认证
  74. * @method \WeMini\Template WeMiniTemplate($options = []) static 小程序模板消息支持
  75. * @method \WeMini\Total WeMiniTotal($options = []) static 小程序数据接口
  76. *
  77. * ----- WePay -----
  78. * @method \WePay\Bill WePayBill($options = []) static 微信商户账单及评论
  79. * @method \WePay\Order WePayOrder($options = []) static 微信商户订单
  80. * @method \WePay\Coupon WePayCoupon($options = []) static 微信商户代金券
  81. * @method \WePay\Custom WePayCustom($options = []) static 微信商户海关
  82. * @method \WePay\Refund WePayRefund($options = []) static 微信商户退款
  83. * @method \WePay\Redpack WePayRedpack($options = []) static 微信红包支持
  84. * @method \WePay\Transfers WePayTransfers($options = []) static 微信商户打款到零钱
  85. * @method \WePay\TransfersBank WePayTransfersBank($options = []) static 微信商户打款到银行卡
  86. */
  87. class We
  88. {
  89. /**
  90. * 定义当前版本
  91. * @var string
  92. */
  93. const VERSION = '1.2.48';
  94. /**
  95. * 静态配置
  96. * @var DataArray
  97. */
  98. private static $config;
  99. /**
  100. * 设置及获取参数
  101. * @param array $option
  102. * @return array
  103. */
  104. public static function config($option = null)
  105. {
  106. if (is_array($option)) {
  107. self::$config = new DataArray($option);
  108. }
  109. if (self::$config instanceof DataArray) {
  110. return self::$config->get();
  111. }
  112. return [];
  113. }
  114. /**
  115. * 静态魔术加载方法
  116. * @param string $name 静态类名
  117. * @param array $arguments 参数集合
  118. * @return mixed
  119. * @throws InvalidInstanceException
  120. */
  121. public static function __callStatic($name, $arguments)
  122. {
  123. if (substr($name, 0, 6) === 'WeChat') {
  124. $class = 'WeChat\\' . substr($name, 6);
  125. } elseif (substr($name, 0, 6) === 'WeMini') {
  126. $class = 'WeMini\\' . substr($name, 6);
  127. } elseif (substr($name, 0, 6) === 'AliPay') {
  128. $class = 'AliPay\\' . substr($name, 6);
  129. } elseif (substr($name, 0, 7) === 'WePayV3') {
  130. $class = 'WePayV3\\' . substr($name, 7);
  131. } elseif (substr($name, 0, 5) === 'WePay') {
  132. $class = 'WePay\\' . substr($name, 5);
  133. }
  134. if (!empty($class) && class_exists($class)) {
  135. $option = array_shift($arguments);
  136. $config = is_array($option) ? $option : self::$config->get();
  137. return new $class($config);
  138. }
  139. throw new InvalidInstanceException("class {$name} not found");
  140. }
  141. }