public function jsapi() { $jsApiParameters = ""; $config = C("WXPAY_CONFIG"); //①、获取用户openid $tools = new \Common\Api\Wxpay\JsApi($config); $openId = $tools->GetOpenid(); // dump($openId); //②、统一下单 $input = new \Common\Api\Wxpay\WxPayUnifiedOrder(); $input->setConfig($config); // dump($input); $input->SetBody("test2"); $input->SetAttach("test2"); $input->SetOut_trade_no('10027619' . date("YmdHis")); $input->SetTotal_fee("1"); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); // $input->SetGoods_tag("test"); $input->SetNotify_url("http://2test.8raw.com/index.php/Shop/WxpayNotify/index"); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); \Common\Api\Wxpay\WxPayApi::setConfig($config); $order = \Common\Api\Wxpay\WxPayApi::unifiedOrder($input); // dump($order); $jsApiParameters = $tools->GetJsApiParameters($order); $this->assign("jsApiParameters", $jsApiParameters); $this->display(); //③、在支持成功回调通知中处理成功之后的事宜,见 notify.php }
/** * 查询订单根据out_trade_no */ public function queryByOutTradeNo($out_trade_no) { $input = new WxPayOrderQuery(); $input->setConfig($this->config); $input->SetOut_trade_no($out_trade_no); \Common\Api\Wxpay\WxPayApi::setConfig($this->config); return \Common\Api\Wxpay\WxPayApi::orderQuery($input); }
/** * * 获取jsapi支付的参数 * @param array $UnifiedOrderResult 统一支付接口返回的数据 * @throws WxPayException * * @return json数据,可直接填入js函数作为参数 */ public function GetJsApiParameters($UnifiedOrderResult) { if (!array_key_exists("appid", $UnifiedOrderResult) || !array_key_exists("prepay_id", $UnifiedOrderResult) || $UnifiedOrderResult['prepay_id'] == "") { throw new WxPayException("参数错误"); } $jsapi = new WxPayJsApiPay(); $jsapi->setConfig($this->config); $jsapi->SetAppid($UnifiedOrderResult["appid"]); $timeStamp = time(); $jsapi->SetTimeStamp($timeStamp); $jsapi->SetNonceStr(\Common\Api\Wxpay\WxPayApi::getNonceStr()); $jsapi->SetPackage("prepay_id=" . $UnifiedOrderResult['prepay_id']); $jsapi->SetSignType("MD5"); $jsapi->SetPaySign($jsapi->MakeSign()); $parameters = json_encode($jsapi->GetValues()); return $parameters; }
/** * * @param 微信支付配置 $config * @param 订单ID $trade_no * @param $body * @param 总价格 $total_fee * @param string $attach * @throws Api\Wxpay\WxPayException * @internal param 微信支付配置 $config * @internal param 订单ID $trade_no * @internal param 商品描述 $itemdesc * @internal param 总价格 $total_fee */ private function setWxpayConfig($config, $trade_no, $body, $total_fee, $attach = '') { try { $jsApiParameters = ""; //①、获取用户openid $tools = new Api\Wxpay\JsApi($config); // $openId = $tools -> GetOpenid(); $openId = $this->openid; //②、统一下单 $input = new Api\Wxpay\WxPayUnifiedOrder(); $input->setConfig($config); // $input->SetBody($body); //string(32) $input->SetAttach($attach); // $input->SetOut_trade_no($trade_no); $input->SetTotal_fee($total_fee); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 60 * 30)); // $input -> SetGoods_tag("test"); $input->SetNotify_url($config['NOTIFYURL']); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); WxPayApi::setConfig($config); $order = WxPayApi::unifiedOrder($input); if (isset($order['return_code']) && $order['return_code'] == 'FAIL') { $this->error($order['return_msg']); } if (isset($order['return_code']) && $order['result_code'] == 'FAIL') { $this->error($order['err_code_des']); } // addWeixinLog($order,"GETJsApiParameters"); $jsApiParameters = $tools->GetJsApiParameters($order); $this->assign("jsApiParameters", $jsApiParameters); } catch (WxPayException $sdkexcep) { $error = $sdkexcep->errorMessage(); $this->assign("error", $error); } }