* 小程序公共API服务 */ namespace app\bestbao\controller\api\v1; use app\bestbao\controller\api\Base; use app\bestbao\model\BestbaoAskOrder; use app\bestbao\model\BestbaoOrder; use app\common\facade\WechatPay; use filter\Filter; use think\facade\Log; use Exception; class Notify extends Base{ /** * 知识库订阅状态 * @return void */ public function ask(){ try{ $response = WechatPay::doPay($this->miniapp_id)->handlePaidNotify(function ($message,$fail) { $result = BestbaoAskOrder::where(['paid_at'=>0,'order_no' => Filter::filter_escape($message['out_trade_no'])])->find(); if (empty($result)) { return true; } if ($message['return_code'] === 'SUCCESS') { if ($message['result_code'] === 'SUCCESS') { $ispay = WechatPay::doPay($this->miniapp_id)->order->queryByOutTradeNumber($result->order_no); if ($ispay['return_code'] === 'SUCCESS') { if ($ispay['result_code'] === 'SUCCESS') { if ($ispay['trade_state'] === 'SUCCESS') { $result->paid_at = 1; $result->paid_time = strtotime($ispay['time_end']); $result->paid_no = $ispay['transaction_id']; $result->save(); return true; } } } } } return $fail('通信失败,请稍后再通知我'); }); $response->send(); }catch (Exception $e) { $this->error('页面不存在'); } } /** * 订单支付 * @return void */ public function order(){ try{ $response = WechatPay::doPay($this->miniapp_id)->handlePaidNotify(function ($message,$fail) { $result = BestbaoOrder::where(['state' => 1,'order_no' => Filter::filter_escape($message['out_trade_no'])])->find(); if (empty($result)) { return true; } if ($message['return_code'] === 'SUCCESS') { if ($message['result_code'] === 'SUCCESS') { $ispay = WechatPay::doPay($this->miniapp_id)->order->queryByOutTradeNumber($result->order_no); if ($ispay['return_code'] === 'SUCCESS') { if ($ispay['result_code'] === 'SUCCESS') { if ($ispay['trade_state'] === 'SUCCESS') { $result->state = 2; $result->save(); return true; } } } } } return $fail('通信失败,请稍后再通知我'); }); $response->send(); }catch (Exception $e) { $this->error('页面不存在'); } } }