We.php 6.4 KB

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