123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2020-09-11
- * Time: 16:28
- */
-
- namespace api\js\controller;
-
-
- use Aliyun\DySDKLite\SignatureHelper;
- use api\js\model\GoodsOrderModel;
- use api\js\model\JsCourseOrderModel;
- use api\js\model\JsModel;
- use api\js\model\JsOrderAddtimeModel;
- use api\js\model\JsOrderModel;
- use api\js\model\JsProjectModel;
- use api\js\model\UserModel;
- use cmf\controller\RestBaseController;
- use think\Db;
- class PaynotifyController extends RestBaseController
- {
- /**
- * 微信支付回调
- */
- public function wx()
- {
- $xmlstr= file_get_contents("php://input");
-
-
- $array = xml_toarray($xmlstr);
-
- $wxpay = cmf_get_option('wxpay');
- if($array['result_code'] == 'SUCCESS' && $array['return_code'] == 'SUCCESS'){
-
- $type = $this->request->param('type');
-
- $order_sn = $array['out_trade_no'];
- $model = '';
- switch ($type){
- case 1:
- $info['key'] = $wxpay['js_key'];
- $model = new JsCourseOrderModel();
- break;
- case 2:
- $info['key'] = $wxpay['js_key'];
- $model = new GoodsOrderModel();
- break;
- case 3:
- $info['key'] = $wxpay['key'];
- $model = new JsOrderModel();
- $order_info = $model::where('order_sn',$order_sn)->find();
- if($order_info['user_discount_id']){
- $userDiscountInfo = Db::name('user_discount')->where('id',$order_info['user_discount_id'])->find();
-
- if($userDiscountInfo['project_id'] != 0){
- if($userDiscountInfo['project_id'] == $order_info['project_id']){
- if($userDiscountInfo['past_time'] >= time()){
- Db::name('user_discount')->where('id',$order_info['user_discount_id'])->update(['hours_time'=>time(),'status'=>1]);
-
- }
- }
- }else{
- if($userDiscountInfo['past_time'] >= time()){
- Db::name('user_discount')->where('id',$order_info['user_discount_id'])->update(['hours_time'=>time(),'status'=>1]);
-
- }
- }
- }
- break;
- }
- $sign = $array['sign'];
- unset($array['sign']);
- ksort($array);
- $str='';
- foreach($array as $k=>$v) {
- $str.=$k.'='.$v.'&';
- }
- $str.='key='.$info['key'];
- $new_sign=strtoupper(md5($str));//加密
- if($sign == $new_sign){
-
- $info = $model::where('order_sn',$order_sn)->find();
-
-
- if($info['status'] == 0){
- $data['status'] = 1;
- $data['pay_time'] = time();
- $data['pay_type'] = '微信支付';
- $model->allowField(true)->isUpdate(true)->save($data,['id'=>$info['id']]);
- if($type == 100){
-
- $JsOrderModel = new JsOrderModel();
- $order_info = $JsOrderModel::get($info['order_id']);
- $order_data['price'] = $order_info['price'] + $info['price'];
- $order_data['pay_price'] = $order_info['price'] + $info['price'];
- $order_data['minute'] = $order_info['minute'] + $info['minute'];
- $order_data['order_price'] = $order_info['order_price'] + $info['order_price'];
-
- $JsOrderModel->allowField(true)->isUpdate(true)->save($order_data,['id'=>$info['order_id']]);
- Db::name('js_project')->where('id', $info['project_id'])->setInc('sales_num', 1);
- }
- if($type == 2){
- $log1['admin_id'] = $info['user_id'];
- $log1['action_time'] = date('Y-m-d H:i:s');
- $log1['obj_id'] = $info['id'];
- $log1['remark'] = '订单支付';
- Db::name('goods_order_action_log')->insert($log1);
- }
-
- if($type == 3){
-
- if($info['jiedan_js_id']){
-
- $helper = new SignatureHelper();
- $alisms = cmf_get_option('alisms');
- $security = false;
- $accessKeyId = $alisms['access_key_id'];
- $accessKeySecret = $alisms['access_key_secret'];
- $js_mobile = UserModel::get(JsModel::get($info['jiedan_js_id'])['user_id'])['mobile'];
- $params["PhoneNumbers"] = $js_mobile;
- $params["SignName"] = '嘀咚点到';
- $user_nickname = UserModel::get($info['user_id'])['user_nickname'];
-
- if($info['type'] == 1){
- $params["TemplateCode"] = 'SMS_204986367';
- $params['TemplateParam'] = Array (
- "product" => JsProjectModel::get($info['project_id'])['name'],
- );
- }else{
- $params["TemplateCode"] = 'SMS_204986363';
- $params['TemplateParam'] = Array (
- "time" => date('H:i',$info['appoint_time']),
- );
- }
- if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
- $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
- }
- $content = $helper->request(
- $accessKeyId,
- $accessKeySecret,
- "dysmsapi.aliyuncs.com",
- array_merge($params, array(
- "RegionId" => "cn-hangzhou",
- "Action" => "SendSms",
- "Version" => "2017-05-25",
- )),
- $security
- );
- }
- Db::name('js_project')->where('id',$info['project_id'])->setInc('sales_num',1);
- }
- return 'SUCCESS';
- }else{
- return 'SUCCESS';
- }
- }
- }
- }
-
- /**
- * 阿里云支付回调
- */
- public function aliy()
- {
- $type = $this->request->param('type');
- $alipay = cmf_get_option('alipay');
- @file_put_contents('1232211.txt',json_encode($_POST),FILE_APPEND);
- $aop = new \AopCertClient();
- $alipayCertPath = cmf_get_file_download_url($alipay['Pay_alipay_Public_key_certificate']);
- switch ($type){
- case 1:
-
- $alipayCertPath = cmf_get_file_download_url($alipay['js_Pay_alipay_Public_key_certificate']);
- break;
- case 2:
- $alipayCertPath = cmf_get_file_download_url($alipay['js_Pay_alipay_Public_key_certificate']);
- break;
- }
-
- $rsaPublicKey = $aop->getPublicKey($alipayCertPath);
- $aop->alipayrsaPublicKey = $rsaPublicKey;
-
- $bool = $aop->rsaCheckV1($_POST,$aop->alipayrsaPublicKey,'RSA2');
- if($bool && $_POST['trade_status'] == 'TRADE_SUCCESS'){
- $order_sn = $_POST['out_trade_no'];
- switch ($type){
- case 1: //购买课程
- $model = new JsCourseOrderModel();
- break;
- case 2: //开通超级商人
- $model = new GoodsOrderModel();
- break;
- case 3: //呼叫服务
- $model = new JsOrderModel();
- $order_info = $model::where('order_sn',$order_sn)->find();
- if($order_info['user_discount_id']){
- $userDiscountInfo = Db::name('user_discount')->where('id',$order_info['user_discount_id'])->find();
- if($userDiscountInfo['project_id'] != 0){
- if($userDiscountInfo['project_id'] == $order_info['project_id']){
- if($userDiscountInfo['past_time'] >= time()){
- Db::name('user_discount')->where('id',$order_info['user_discount_id'])->update(['hours_time'=>time(),'status'=>1]);
-
- }
- }
- }else{
- if($userDiscountInfo['past_time'] >= time()){
- Db::name('user_discount')->where('id',$order_info['user_discount_id'])->update(['hours_time'=>time(),'status'=>1]);
-
- }
- }
- }
- break;
-
- case 100:
- $model = new JsOrderAddtimeModel();
- break;
-
- }
- $info = $model::where('order_sn',$order_sn)->find();
- if($info['status'] == 0){
- $up['pay_type'] = '支付宝';
- $up['pay_time'] = time();
- $up['status'] = 1;
- $model->allowField(true)->isUpdate(true)->save($up,['id'=>$info['id']]);
- if($type == 100){
-
- $JsOrderModel = new JsOrderModel();
- $order_info = $JsOrderModel::get($info['order_id']);
- $order_data['price'] = $order_info['price'] + $info['price'];
- $order_data['pay_price'] = $order_info['price'] + $info['price'];
- $order_data['minute'] = $order_info['minute'] + $info['minute'];
- $order_data['order_price'] = $order_info['order_price'] + $info['order_price'];
-
- $JsOrderModel->allowField(true)->isUpdate(true)->save($order_data,['id'=>$info['order_id']]);
- Db::name('js_project')->where('id', $info['project_id'])->setInc('sales_num', 1);
- }
-
- if($type == 2){
- // $model->allowField(true)->isUpdate(true)->save($up,['id'=>$info['id']]);
- $log1['admin_id'] = $info['user_id'];
- $log1['action_time'] = date('Y-m-d H:i:s');
- $log1['obj_id'] = $info['id'];
- $log1['remark'] = '订单支付';
- Db::name('goods_order_action_log')->insert($log1);
- }
- if($type == 3){
- if($info['jiedan_js_id']){
- $helper = new SignatureHelper();
- $alisms = cmf_get_option('alisms');
- $security = false;
- $accessKeyId = $alisms['access_key_id'];
- $accessKeySecret = $alisms['access_key_secret'];
- $js_mobile = UserModel::get(JsModel::get($info['jiedan_js_id'])['user_id'])['mobile'];
- $params["PhoneNumbers"] = $js_mobile;
- $params["SignName"] = '嘀咚点到';
- $user_nickname = UserModel::get($info['user_id'])['user_nickname'];
- if($info['type'] == 1){
- $params["TemplateCode"] = 'SMS_204986367';
- $params['TemplateParam'] = Array (
- "product" => JsProjectModel::get($info['project_id'])['name'],
- );
- }else{
- $params["TemplateCode"] = 'SMS_204971115';
- $params['TemplateParam'] = Array (
- "consignee" => $user_nickname,
- "number" => $info['mobile'],
- "time" => date('H:i',$info['appoint_time']),
- );
- }
- if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
- $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
- }
- $content = $helper->request(
- $accessKeyId,
- $accessKeySecret,
- "dysmsapi.aliyuncs.com",
- array_merge($params, array(
- "RegionId" => "cn-hangzhou",
- "Action" => "SendSms",
- "Version" => "2017-05-25",
- )),
- $security
- );
- file_put_contents('12322.txt',$content->Message );
- if($content->Message == 'OK' && $content->Code == 'OK'){
- file_put_contents('12322.txt',$content->Message );
- }
-
- }
- Db::name('js_project')->where('id',$info['project_id'])->setInc('sales_num',1);
- }
- echo 'SUCCESS';
- }
- }
- }
- }
|