Pay.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 个人信息
  7. */
  8. namespace app\ais\controller\api\v1;
  9. use app\ais\controller\api\Base;
  10. use app\ais\model\AisBill;
  11. use app\ais\model\AisBank;
  12. use app\ais\model\AisBankCash;
  13. use app\ais\model\AisCouponUser;
  14. use app\ais\model\AisConfig;
  15. use app\ais\model\AisVip;
  16. use app\ais\model\AisVipUser;
  17. use app\ais\model\AisStore;
  18. use app\ais\model\AisVipOrder;
  19. use app\common\facade\WechatPay;
  20. use app\common\model\SystemUserLevel;
  21. use think\helper\Time;
  22. class Pay extends Base{
  23. /**
  24. * 微信支付开通会员
  25. * @param string $no
  26. * @return void
  27. */
  28. public function regVip(){
  29. if (request()->isPost()) {
  30. $param['vip_id'] = $this->request->param('vip_id/d');
  31. $this->apiSign($param);
  32. $vip = AisVip::where(['member_miniapp_id' => $this->member_miniapp_id,'id' => $param['vip_id']])->find();
  33. if(empty($vip)){
  34. return enjson(403,'未找到相关会员等级');
  35. }
  36. //用户VIP
  37. $vipUser = AisVipUser::where(['uid' => $this->user->id,'vip_id' => $vip->id])->find();
  38. if($vipUser){
  39. return enjson(403,'已开通当前会员');
  40. }
  41. //创建订单
  42. $order_no = order_no($this->user->invite_code);
  43. //唤醒微信支付参数
  44. $payparm = [
  45. 'openid' => $this->user->miniapp_uid,
  46. 'miniapp_id' => $this->member_miniapp_id,
  47. 'name' => $vip->name,
  48. 'order_no' => $order_no,
  49. 'total_fee' => $vip->price * 100,
  50. 'notify_url' => api(1,'ais/notify/vippay',$this->miniapp_id),
  51. ];
  52. //读取配置
  53. if($this->member_miniapp->is_psp){
  54. $setting = AisConfig::getConfig($this->miniapp_id);
  55. if (empty($setting->mchid)) {
  56. return enjson(403,'服务商模式下,必须配置默认商户号');
  57. }
  58. $payparm['mchid'] = $setting->mchid;
  59. }
  60. $ispay = WechatPay::orderPay($payparm);
  61. if($ispay['code'] == 0){
  62. return enjson(403,$ispay['msg']);
  63. }
  64. //添加订单记录
  65. $data['order_no'] = $order_no;
  66. $data['uid'] = $this->user->id;
  67. $data['member_miniapp_id'] = $this->member_miniapp_id;
  68. $data['vip_id'] = $vip->id;
  69. $data['amount'] = $vip->price; //实际金额
  70. $data['state'] = 0;
  71. $data['create_time'] = time();
  72. $rel = AisVipOrder::create($data);
  73. if(!$rel){
  74. return enjson(403,'订单创建失败');
  75. }
  76. return enjson(200,$ispay['data']);
  77. }
  78. }
  79. }