SetProduct_id($product_id); $inputObj->SetBody($subject); $inputObj->SetOut_trade_no($out_trade_no); $inputObj->SetTotal_fee($total_fee); $inputObj->SetNotify_url($notify_url); $inputObj->SetTrade_type("NATIVE"); return \WxPayApi::unifiedOrder($inputObj); } /** * 成功时返回,其他抛异常 * @param $product_id * @param $subject * @param $out_trade_no * @param $total_fee * @param $notify_url * @return array * @throws \WxPayException */ public function wapPay($product_id, $subject, $out_trade_no, $total_fee, $notify_url) { $inputObj = new \WxPayUnifiedOrder(); $inputObj->SetProduct_id($product_id); $inputObj->SetBody($subject); $inputObj->SetOut_trade_no($out_trade_no); $inputObj->SetTotal_fee($total_fee); $inputObj->SetNotify_url($notify_url); $inputObj->SetTrade_type("MWEB"); return \WxPayApi::unifiedOrder($inputObj); } /** * @param $product_id * @param $subject * @param $out_trade_no * @param $total_fee * @param $notify_url * @return \json数据,可直接填入js函数作为参数 * @throws \WxPayException */ public function jsApiPay($product_id, $subject, $out_trade_no, $total_fee, $notify_url) { $inputObj = new \WxPayUnifiedOrder(); $inputObj->SetProduct_id($product_id); $inputObj->SetBody($subject); $inputObj->SetOut_trade_no($out_trade_no); $inputObj->SetTotal_fee($total_fee); $inputObj->SetNotify_url($notify_url); $inputObj->SetTrade_type("JSAPI"); $weixinJsApi = WxPayClient::getInstance()->getJsApiPay(); $openId = $weixinJsApi->GetOpenid(); if (empty($openId)) { return; } $inputObj->SetOpenid($openId); // [ // "appid" => "wx63b01c65be95bb89", // "mch_id" => "1505538321", // "nonce_str" => "2C2ofPMUegyc5k51", // "prepay_id" => "wx29134547410141279bb2a1b21781141400", // "result_code" => "SUCCESS", // "return_code" => "SUCCESS", // "return_msg" => "OK", // "sign" => "A26A8351C9124EE05F1BEE8E38247910", // "trade_type" => "JSAPI" // ]; $signData = \WxPayApi::unifiedOrder($inputObj); return $weixinJsApi->GetJsApiParameters($signData); } /** * @param $out_trade_no * @return \成功时返回,其他抛异常 * @throws \WxPayException */ public function orderQuery($out_trade_no) { $inputObj = new \WxPayOrderQuery(); $inputObj->SetOut_trade_no($out_trade_no); return \WxPayApi::orderQuery($inputObj); } /** * 支付结果通用通知 * @return array|bool */ public function notify() { //获取通知的数据 $xml = file_get_contents('php://input'); //如果返回成功则验证签名 try { $result = \WxPayResults::Init($xml); EmailQueue::rPush('微信支付异步回调通知', json_encode($result), ['sai.wang@kuxuan-inc.com'], '微信支付通知'); } catch (\WxPayException $e){ $msg = $e->errorMessage(); EmailQueue::rPush('微信支付异步回调异常', json_encode([$msg, $xml]), ['sai.wang@kuxuan-inc.com'], '微信支付通知'); return false; } return $result; } public function getSignkey() { $inputObj = new \WxPaySignKey(); return \WxPayApi::getSignkey($inputObj); } /** * @return \JsApiPay */ public function getJsApiPay() { return new \JsApiPay(); } }