'require', 'pay_way' => 'require|in:' . PayEnum::BALANCE_PAY . ',' . PayEnum::WECHAT_PAY . ',' . PayEnum::ALI_PAY, 'order_id' => 'require|checkOrderId', 'scene' => 'require', ]; protected $message = [ 'from.require' => '参数缺失', 'pay_way.require' => '支付方式参数缺失', 'pay_way.in' => '支付方式参数错误', 'order_id.require' => '订单参数缺失', 'scene.require' => '场景参数缺失' ]; public function scenePayway() { return $this->only(['scene']); } public function scenePrepay() { return $this->only(['from', 'pay_way', 'order_id']) ->append('order_id','checkOrder'); } public function sceneGetPayResult() { return $this->only(['from', 'order_id']) ->remove('order_id','checkOrderId'); } /** * @notes 检验订单id * @param $value * @param $rule * @param $data * @return bool|string * @author ljj * @date 2022/2/28 5:58 下午 */ public function checkOrderId($value,$rule,$data) { switch ($data['from']) { case 'deposit': $result = DepositOrder::where('id',$value)->findOrEmpty(); break; } if ($result->isEmpty()) { return '订单不存在'; } if ($result['pay_status'] == PayEnum::ISPAID) { return '订单已支付'; } return true; } /** * @notes 检验订单状态 * @param $value * @param $rule * @param $data * @return bool|string * @author ljj * @date 2022/2/28 6:02 下午 */ public function checkOrder($value,$rule,$data) { switch ($data['from']) { case 'deposit': $result = DepositOrder::where('id',$value)->findOrEmpty()->toArray(); // if ($result['order_status'] == OrderEnum::ORDER_STATUS_CLOSE) { // return '订单已关闭'; // } if ($result['pay_status'] == PayEnum::ISPAID) { return '订单已支付'; } break; } return true; } }