RenewController.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace open\controllers;
  3. use biz\saas\services\RenewService;
  4. use biz\saas\services\SetMealService;
  5. use common\components\configDict;
  6. use common\components\stringUtil;
  7. use common\components\util;
  8. use Yii;
  9. class RenewController extends BaseController
  10. {
  11. //微信支付 shish 2019.12.23
  12. public function actionWxPay()
  13. {
  14. ini_set('date.timezone', 'Asia/Shanghai');
  15. $setId = Yii::$app->request->get('setId', 1);
  16. $set = SetMealService::getById($setId);
  17. if (empty($set)) {
  18. util::fail('没有找到套餐');
  19. }
  20. $post['userId'] = $this->userId;
  21. $price = $set['price'];
  22. $post['prePrice'] = $price;
  23. $post['actPrice'] = $price;
  24. $post['payWay'] = 0;
  25. $post['orderSn'] = 'RE'.stringUtil::buildOrderNo();
  26. $now = time();
  27. $expireTime = $now + 300;//订单5分钟后过期
  28. $post['createTime'] = date("Y-m-d H:i:s", $now);
  29. $post['deadline'] = $expireTime;
  30. $renew = RenewService::add($post);
  31. $orderId = $renew['orderSn'];
  32. $name = $set['name'] . '购买续费';
  33. $totalFee = $price;
  34. $user = $this->user;
  35. $openId = $user['openId'];
  36. $typeList = configDict::getConfig('capitalType');
  37. $capitalType = $typeList['xhOrder']['id'];
  38. $attach = 'capitalType=' . $capitalType . '&couponId=0';//将流水类型、优惠卷传过去
  39. $wx = Yii::getAlias("@vendor/weixin");
  40. require_once($wx . '/lib/WxPay.Api.php');
  41. require_once($wx . '/example/WxPay.JsApiPay.php');
  42. $input = new \WxPayUnifiedOrder();
  43. $input->SetBody($name);
  44. $input->SetOut_trade_no($orderId);
  45. $input->SetTotal_fee($totalFee * 100);
  46. $input->SetTime_start(date("YmdHis", $now));
  47. $input->SetAttach($attach);
  48. $input->SetTime_expire(date("YmdHis", $expireTime));//设置订单有效期5分钟
  49. $input->SetNotify_url($this->frontUrl . '/notice/weixin-callback/');
  50. $input->SetTrade_type("JSAPI");
  51. //花卉宝代为申请的微信支付
  52. $merchantExtend = $this->merchantExtend;
  53. if ($merchantExtend['generalMerchant'] == 1) {
  54. $input->SetSub_openid($openId);
  55. } else {
  56. $input->SetOpenid($openId);
  57. }
  58. $wxOrder = \WxPayApi::unifiedOrder($input, 6, $merchantExtend);
  59. $tools = new \JsApiPay();
  60. $jsApiParameters = $tools->GetJsApiParameters($wxOrder, $merchantExtend);
  61. $newParams = json_decode($jsApiParameters, true);
  62. $newParams['orderId'] = $orderId;
  63. util::success($newParams);
  64. }
  65. }