123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <?php
- namespace app\index\controller;
- use addons\epay\library\Service;
- use app\common\controller\Frontend;
- use app\common\model\MobileOrder;
- use think\Db;
- /**
- * 第三方登录控制器
- */
- class Payment extends Frontend
- {
- protected $noNeedLogin='*';
- /**
- * 支付成功回调
- */
- public function notify($type,$order_no)
- {
- $check=Service::checkNotify($type);
- if (!$check) {
- echo '签名错误';
- return;
- }
- $data=$check->verify();
- $name="payment/$type/{$order_no}";
- user_log($name,compact('type','order_no','data'));
- Db::startTrans();
- $payment=\app\common\model\Payment::where('order_no',$order_no)->lock(true)->find();
- if(!$payment){
- user_log($name,"支付没找到");
- Db::rollback();
- return 'success';
- }
- if($payment['pay_time']){
- user_log($name,"支付已支付");
- Db::rollback();
- return 'success';
- }
- $payment['pay_time']=time();
- if(!$payment->save()){
- user_log($name,"支付保存失败");
- Db::rollback();
- return '支付保存失败';
- }
- Db::commit();
- Db::startTrans();
- $mobileOrder=MobileOrder::where('id',$payment['mobile_order_id'])->find();
- if(!$mobileOrder){
- user_log($name,"手机订单不存在");
- Db::rollback();
- return 'success';
- }
- if($mobileOrder['pay_time']){
- user_log($name,"手机订单已支付");
- Db::rollback();
- return 'success';
- }
- $mobileOrder['status']=MobileOrder::STATUS_WAIT_SEND;
- $mobileOrder['pay_time']=$payment['pay_time'];
- if($type=='wechat'){
- $mobileOrder['pay_type']=1;
- $mobileOrder['pay_no']=$data['transaction_id'];
- }else{
- $mobileOrder['pay_type']=2;
- $mobileOrder['pay_no']=$data['trade_no'];
- }
- $mobileOrder['payment_id']=$payment['id'];
- if(!$mobileOrder->save()){
- user_log($name,"手机订单保存失败");
- Db::rollback();
- return '手机订单保存失败';
- }
- Db::commit();
- //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
- //下面这句必须要执行,且在此之前不能有任何输出
- echo "success";
- return;
- }
- /**
- * 支付成功回调
- */
- public function notify_jd($order_no)
- {
- $name="pay/jd/{$order_no}";
- user_log($name,compact('type','order_no'));
- user_log($name,compact('type','order_no','data'));
- Db::startTrans();
- $payment=\app\common\model\Payment::where('order_no',$order_no)->lock(true)->find();
- if(!$payment){
- user_log($name,"支付没找到");
- Db::rollback();
- return '支付没找到';
- }
- if($payment['pay_time']){
- user_log($name,"支付已支付");
- Db::rollback();
- return '支付已支付';
- }
- $payment['pay_time']=time();
- if(!$payment->save()){
- user_log($name,"支付保存失败");
- Db::rollback();
- return '支付保存失败';
- }
- Db::commit();
- Db::startTrans();
- $mobileOrder=MobileOrder::where('id',$payment['mobile_order_id'])->find();
- if(!$mobileOrder){
- user_log($name,"手机订单不存在");
- Db::rollback();
- return '手机订单不存在';
- }
- if($mobileOrder['pay_time']){
- user_log($name,"手机订单已支付");
- Db::rollback();
- return '手机订单已支付';
- }
- $mobileOrder['status']=MobileOrder::STATUS_WAIT_SEND;
- $mobileOrder['pay_type']=3;
- $mobileOrder['pay_time']=$payment['pay_time'];
- $mobileOrder['payment_id']=$payment['id'];
- if(!$mobileOrder->save()){
- user_log($name,"手机订单保存失败");
- Db::rollback();
- return '手机订单保存失败';
- }
- Db::commit();
- //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
- //下面这句必须要执行,且在此之前不能有任何输出
- return 'success';
- }
- public function refund_url($type,$order){
- }
- }
|