AlipayFactory.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace common\expand\alipay;
  3. use Alipay\EasySDK\Kernel\CertEnvironment;
  4. use Alipay\EasySDK\Kernel\EasySDKKernel;
  5. use Alipay\EasySDK\Kernel\Factory;
  6. use Alipay\EasySDK\Util\Generic\Client as genericClient;
  7. use Alipay\EasySDK\Kernel\Util;
  8. class AlipayFactory
  9. {
  10. private static $instances;
  11. protected static $notice;
  12. protected static $util;
  13. private function __construct($config)
  14. {
  15. if (!empty($config->alipayCertPath)) {
  16. $certEnvironment = new CertEnvironment();
  17. $certEnvironment->certEnvironment(
  18. $config->merchantCertPath,
  19. $config->alipayCertPath,
  20. $config->alipayRootCertPath
  21. );
  22. $config->merchantCertSN = $certEnvironment->getMerchantCertSN();
  23. $config->alipayRootCertSN = $certEnvironment->getRootCertSN();
  24. // 文档地址 https://opendocs.alipay.com/support/01ravs
  25. // $config->alipayRootCertSN = '687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6';
  26. $config->alipayPublicKey = $certEnvironment->getCachedAlipayPublicKey();
  27. }
  28. $kernel = new EasySDKKernel($config);
  29. self::$notice = new NoticeClient($kernel);
  30. self::$util = new genericClient($kernel);
  31. }
  32. public static function setOptions($config): AlipayFactory
  33. {
  34. // 因为有多少配置,但是队列里面这段代码是永驻的,所以必须每次重新实例化一个新的对象
  35. // if (empty(self::$instances[$config->appId]) || !(self::$instances[$config->appId] instanceof self)) {
  36. // self::$instances[$config->appId] = new self($config);
  37. // }
  38. // return self::$instances[$config->appId];
  39. return new self($config);
  40. }
  41. private function __clone()
  42. {
  43. }
  44. public static function notice(): NoticeClient
  45. {
  46. return self::$notice;
  47. }
  48. public function util(): genericClient
  49. {
  50. return self::$util;
  51. }
  52. }