SetAppId($appId); $config->SetMerchantId($mid); $config->SetKey($key); $result = WxPayApi::micropay($config, $microPayInput, 5); return $result; } /** * * 查询订单情况 * @param string $out_trade_no 商户订单号 * @param int $succCode 查询订单结果 * @return 0 订单不成功,1表示订单成功,2表示继续等待 */ public function query($out_trade_no, $sjExtend) { $queryOrderInput = new WxPayOrderQuery(); $queryOrderInput->SetOut_trade_no($out_trade_no); $config = new WxPayConfig(); $mid = $sjExtend['wxPayMerchantId'] ?? ''; $appId = $sjExtend['miniAppId'] ?? ''; $key = $sjExtend['wxPayKey'] ?? ''; $config->SetAppId($appId); $config->SetMerchantId($mid); $config->SetKey($key); try{ $result = WxPayApi::orderQuery($config, $queryOrderInput); return $result; } catch(Exception $e) { //Log::ERROR(json_encode($e)); } } /** * * 撤销订单,如果失败会重复调用10次 * @param string $out_trade_no * @param 调用深度 $depth */ public function cancel($out_trade_no, $depth = 0) { try { if($depth > 10){ return false; } $clostOrder = new WxPayReverse(); $clostOrder->SetOut_trade_no($out_trade_no); $config = new WxPayConfig(); $result = WxPayApi::reverse($config, $clostOrder); //接口调用失败 if($result["return_code"] != "SUCCESS"){ return false; } //如果结果为success且不需要重新调用撤销,则表示撤销成功 if($result["result_code"] != "SUCCESS" && $result["recall"] == "N"){ return true; } else if($result["recall"] == "Y") { return $this->cancel($out_trade_no, ++$depth); } } catch(Exception $e) { Log::ERROR(json_encode($e)); } return false; } }