<?php namespace common\services; use common\models\AdminWechatUser; use common\models\weixinpay\Wxpay; use Yii; class AdminWechatUserService extends AdminWechatUser{ public function actionNotify(){ $Wxpay = new Wxpay(); $verify_result = $Wxpay->verifyNotify(); if (isset($verify_result['result_code']) && $verify_result['result_code']=='SUCCESS') { $requestReturnData = file_get_contents("php://input"); //商户订单号 $out_trade_no = $verify_result['out_trade_no']; //交易号 $trade_no = $verify_result['transaction_id']; //交易状态 $trade_status = $verify_result['result_code']; //支付金额 $total_fee = $verify_result['total_fee']/100; //支付过期时间 $pay_date = $verify_result['time_end']; //IP $pay_ip = $verify_result['attach']; /* @todo 1.更改订单状态为已支付。(需自己完善) 2.添加付款信息到数据库,方便对账。(需自己完善) */ $pay_arr = array( 'pay_type' => isset($_REQUEST['pay_type']) ? $_REQUEST['pay_type'] : '', 'action' => 'notify', 'domain_type' => isset($_REQUEST['domain_type']) ? $_REQUEST['domain_type'] : '', 'out_trade_no' => $out_trade_no, 'trade_no' => $trade_no, 'trade_status' => $trade_status, 'trade_return_data' => $requestReturnData, 'create_ip' => $pay_ip, ); //处理后同步返回给微信 return '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; } return '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[ERROR]]></return_msg></xml>'; } //接口输出 private function echoResult($errorCode = 0, $errorMsg = 'success', $responseData = array()) { $arr = array( 'errorCode' => $errorCode, 'errorMsg' => $errorMsg, 'responseData' => $responseData, ); return json_encode($arr); } public function actionWxPay($total_fee,$body,$notify_url){ $Wxpay = new Wxpay(); $Wxpay->total_fee = intval($total_fee*100);//订单的金额 1元 $Wxpay->out_trade_no = date('YmdHis') . substr(time(), - 5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));//订单号 $Wxpay->body = $body;//支付描述信息 $Wxpay->time_expire = date('YmdHis', time()+86400);//订单支付的过期时间(eg:一天过期) $Wxpay->notify_url =$notify_url;//异步通知URL(更改支付状态) //数据以JSON的形式返回给APP $app_response = $Wxpay->doPay(); if (isset($app_response['return_code']) && $app_response['return_code']=='FAIL') { $errorCode = 100; $errorMsg = $app_response['return_msg']; return $this->echoResult($errorCode, $errorMsg); } else { $errorCode = 0; $errorMsg = 'success'; $responseData = array( 'notify_url' => $Wxpay->notify_url, 'app_response' => $app_response, ); return $this->echoResult($errorCode, $errorMsg, $responseData); } } }