AlipayNoticeAbstract.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace common\expand\alipay\order\notice;
  3. use addons\AlipayMchCoupon\common\models\AddonsAlipayMchAlipayNoticeModel;
  4. use AlibabaCloud\Tea\Exception\TeaError;
  5. use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
  6. use AlibabaCloud\Tea\FileForm\FileForm;
  7. use AlibabaCloud\Tea\FileForm\FileForm\FileField;
  8. use AlibabaCloud\Tea\Request;
  9. use AlibabaCloud\Tea\Tea;
  10. use Alipay\EasySDK\Kernel\CertEnvironment;
  11. use Alipay\EasySDK\Kernel\Config;
  12. use Alipay\EasySDK\Kernel\EasySDKKernel;
  13. use Alipay\EasySDK\Kernel\Factory;
  14. use common\expand\alipay\AlipayFactory;
  15. use common\models\order\Order;
  16. use GuzzleHttp\Psr7\Stream;
  17. use Yii;
  18. abstract class AlipayNoticeAbstract
  19. {
  20. protected $data = [];
  21. protected $config = [];
  22. /**
  23. * @var AlipayFactory
  24. */
  25. protected $alipayFactory;
  26. public function __construct(array $data)
  27. {
  28. $this->data = $data;
  29. $this->config = \Yii::$app->services->setting->mall->get($data['mall_id'], 'alipay_mini');
  30. $this->alipayFactory = AlipayFactory::setOptions($this->getOptions());
  31. }
  32. /**
  33. * @return Config
  34. */
  35. private function getOptions(): Config
  36. {
  37. $options = new Config();
  38. $options->protocol = 'https';
  39. $options->gatewayHost = 'openapi.alipay.com';
  40. // $options->gatewayHost = 'openapi.alipaydev.com'; // 测试环境
  41. $options->signType = 'RSA2';
  42. $options->appId = $this->config['app_id'];
  43. // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中
  44. $options->merchantPrivateKey = $this->config['merchantPrivateKey'];
  45. //$options->alipayCertPath = dirname(Yii::$app->basePath).'/'.$this->config['alipayCertPath'];
  46. //$options->alipayRootCertPath = dirname(Yii::$app->basePath).'/'.$this->config['alipayCertPath'];
  47. //$options->merchantCertPath = dirname(Yii::$app->basePath).'/'.$this->config['merchantCertPath'];
  48. //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可
  49. $options->alipayPublicKey = file_get_contents(dirname(Yii::$app->basePath).'/'.$this->config['alipayCertPath']);
  50. //可设置异步通知接收服务地址(可选)
  51. $options->notifyUrl = '';
  52. //可设置AES密钥,调用AES加解密相关接口时需要(可选)
  53. $options->encryptKey = $this->config['encryptKey'];
  54. return $options;
  55. }
  56. }