protected function create_order($user_id, $trade_type, $attach, $fee, $open_id = null) { // 商户号 + 用户id + uniqid生成的随机字符串 $out_trade_no = WxPayConfig::MCHID . uniqid($user_id); // 需重置下当前时区,PHP配置文件不知为何不起作用 //date_default_timezone_set('PRC'); // 统一下单 $input = new WxPayUnifiedOrder(); $input->SetBody("挂号费"); $input->SetAttach($attach); $input->SetOut_trade_no($out_trade_no); // 测试用1分钱 $input->SetTotal_fee(1); $current_time = time(); $start = date('YmdHis', $current_time); $expire = date('YmdHis', $current_time + 3600); // 下单时间:当前时间 $input->SetTime_start($start); // 失效时间:测试用一个小时 $input->SetTime_expire($expire); $input->SetGoods_tag("挂号费"); $input->SetNotify_url("http://test.zerioi.com/pay/wxpay_notify"); $input->SetTrade_type($trade_type); // JSAPI调用支付需设置open_id if ($open_id) { $input->SetOpenid($open_id); } $record = new WeixinPay(); $record->trade_no = $out_trade_no; $record->trade_type = $trade_type; $record->time_start = $start; $record->time_expire = $expire; $record->user_id = $user_id; $record->open_id = $open_id; $record->attach = $attach; $record->total_fee = $fee; $record->status = 'UNFINISHED'; if (!$record->save()) { throw new Exception("Could not save pay parameters"); } return WxPayApi::unifiedOrder($input); }