Pay.Class.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. /**
  3. * 通用支付接口
  4. * Created by PhpStorm.
  5. * User: phperstar
  6. * Date: 2019/11/28
  7. * Time: 3:48 PM
  8. */
  9. namespace JinDouYun\Controller\Common;
  10. use Mall\Framework\Core\ResultWrapper;
  11. use Mall\Framework\Core\ErrorCode;
  12. use Mall\Framework\Core\StatusCode;
  13. use JinDouYun\Cache\SystemCache;
  14. use JinDouYun\Controller\BaseController;
  15. use JinDouYun\Model\System\MPaymentSetting;
  16. use Util\WeiXin\Pay as wxPay;
  17. class Pay extends BaseController
  18. {
  19. public function __construct($isCheckAcl = false, $isMustLogin = true, $checkToken = true)
  20. {
  21. parent::__construct($isCheckAcl, $isMustLogin, $checkToken);
  22. }
  23. public function micropay()
  24. {
  25. $params = $this->request->getRawJson();
  26. if(empty($params)){
  27. return ResultWrapper::fail('参数为空', ErrorCode::$paramError);
  28. }
  29. $payData = [
  30. 'out_trade_no' => getArrayItem($params, 'out_trade_no'),
  31. 'total_fee' => getArrayItem($params, 'total_fee'),
  32. 'ip' => $this->request->get_onlineip(),
  33. 'shopName' => getArrayItem($params, 'shopName'),
  34. 'auth_code' => getArrayItem($params, 'auth_code')
  35. ];
  36. foreach ($payData as $key => $value) {
  37. if (empty($value) && $value !== 0) {
  38. parent::sendOutput($key . '参数错误', ErrorCode::$paramError);
  39. }
  40. }
  41. // 获取当前登录企业的小程序配置
  42. $objSystemCache = new SystemCache();
  43. $miniprogramSetting = $objSystemCache->getAppIdByEnterpriseId($this->onlineEnterpriseId);
  44. if (empty($miniprogramSetting)) {
  45. return ResultWrapper::fail('后台小程序配置项为空', ErrorCode::$configEroor);
  46. }
  47. $miniprogramSetting = json_decode($miniprogramSetting, true);//获取小程序appid
  48. //获取支付配置
  49. $objMPaymentSetting = new MPaymentSetting($this->onlineUserId, $this->onlineEnterpriseId);
  50. $result = $objMPaymentSetting->getPayData(StatusCode::$payType['wxPay']);
  51. if (!$result->isSuccess() || empty($result->getData())) {
  52. return ResultWrapper::fail('获取微信配置错误', ErrorCode::$configEroor);
  53. }
  54. $payment = $result->getData();
  55. unset($result);
  56. $objwxPay = new wxPay($miniprogramSetting['appid'], $payment['mchId'], $payment['apiPartnerKey']);
  57. $result = $objwxPay->micropay($payData['out_trade_no'], $payData['total_fee'], $payData['ip'], $payData['shopName'], $payData['auth_code']);
  58. if(!$result->isSuccess()){
  59. parent::sendOutput($result->getData(), $result->getErrorCode());
  60. }
  61. parent::sendOutput($result->getData());
  62. }
  63. public function orderquery()
  64. {
  65. $params = $this->request->getRawJson();
  66. if(empty($params)){
  67. return ResultWrapper::fail('参数为空', ErrorCode::$paramError);
  68. }
  69. // 获取当前登录企业的小程序配置
  70. $objSystemCache = new SystemCache();
  71. $miniprogramSetting = $objSystemCache->getAppIdByEnterpriseId($this->onlineEnterpriseId);
  72. if (empty($miniprogramSetting)) {
  73. return ResultWrapper::fail('后台小程序配置项为空', ErrorCode::$configEroor);
  74. }
  75. $miniprogramSetting = json_decode($miniprogramSetting, true);//获取小程序appid
  76. //获取支付配置
  77. $objMPaymentSetting = new MPaymentSetting($this->onlineUserId, $this->onlineEnterpriseId);
  78. $result = $objMPaymentSetting->getPayData(StatusCode::$payType['wxPay']);
  79. if (!$result->isSuccess() || empty($result->getData())) {
  80. return ResultWrapper::fail('获取微信配置错误', ErrorCode::$configEroor);
  81. }
  82. $payment = $result->getData();
  83. unset($result);
  84. $objwxPay = new wxPay($miniprogramSetting['appid'], $payment['mchId'], $payment['apiPartnerKey']);
  85. $result = $objwxPay->orderquery($params['out_trade_no']);
  86. if(!$result->isSuccess()){
  87. parent::sendOutput($result->getData(), $result->getErrorCode());
  88. }
  89. parent::sendOutput($result->getData());
  90. }
  91. // 微信付款到个人
  92. public function transfers()
  93. {
  94. $params = $this->request->getRawJson();
  95. if(empty($params)){
  96. return ResultWrapper::fail('参数为空', ErrorCode::$paramError);
  97. }
  98. // 获取当前登录企业的小程序配置
  99. $objSystemCache = new SystemCache();
  100. $miniprogramSetting = $objSystemCache->getAppIdByEnterpriseId($this->onlineEnterpriseId);
  101. if (empty($miniprogramSetting)) {
  102. return ResultWrapper::fail('后台小程序配置项为空', ErrorCode::$configEroor);
  103. }
  104. $miniprogramSetting = json_decode($miniprogramSetting, true);//获取小程序appid
  105. //获取支付配置
  106. $objMPaymentSetting = new MPaymentSetting($this->onlineUserId, $this->onlineEnterpriseId);
  107. $result = $objMPaymentSetting->getPayData(StatusCode::$payType['wxPay']);
  108. if (!$result->isSuccess() || empty($result->getData())) {
  109. return ResultWrapper::fail('获取微信配置错误', ErrorCode::$configEroor);
  110. }
  111. $payment = $result->getData();
  112. unset($result);
  113. $objwxPay = new wxPay($miniprogramSetting['appid'], $payment['mchId'], $payment['apiPartnerKey']);
  114. $result = $objwxPay->transfers($params['out_trade_no'], $params['openid'], $params['amount']);
  115. if(!$result->isSuccess()){
  116. parent::sendOutput($result->getData(), $result->getErrorCode());
  117. }
  118. parent::sendOutput($result->getData());
  119. }
  120. }