function WxJsPayInterface($openid, $dataArr = array()) { $jsApi = new JsApi_pub(); while (!$openid) { $code = $this->_get('code'); $keycode = $this->_get('state'); if (!$code) { //触发登录weixin $authurl = Platform::MakeWpAuthURL(null, array('redirect_uri' => "http://" . HTTPHOST . $_SERVER['REQUEST_URI'], 'state' => $keycode)); redirect($authurl); } //获取微信唯一标识unionID $wxinfoArr = D("WxAccessToken")->getUserInfo(Platform::$MPID10, $code); $openid = isset($wxinfoArr['openid']) ? $wxinfoArr['openid'] : null; } //=========步骤2:使用统一支付接口,获取prepay_id============ //使用统一支付接口 $unifiedOrder = new UnifiedOrder_pub(); $unifiedOrder->setParameter("openid", "{$openid}"); //openid $unifiedOrder->setParameter("body", $dataArr['title']); //商品描述 //$timeStamp = time(); //$out_trade_no = WxPayConf_pub :: APPID . "$timeStamp"; $unifiedOrder->setParameter("out_trade_no", $dataArr['out_trade_no']); //商户订单号 $unifiedOrder->setParameter("total_fee", $dataArr['money'] * 100); //总金额 $notify_url = isset($dataArr['notify_url']) ? $dataArr['notify_url'] : WxPayConf_pub::NOTIFY_URL; $unifiedOrder->setParameter("notify_url", $notify_url); //通知地址 $unifiedOrder->setParameter("trade_type", "JSAPI"); //交易类型 //非必填参数,商户可根据实际情况选填 //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号 //$unifiedOrder->setParameter("device_info","XXXX");//设备号 //$unifiedOrder->setParameter("attach","XXXX");//附加数据 //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间 //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间 //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记 //$unifiedOrder->setParameter("openid","XXXX");//用户标识 //$unifiedOrder->setParameter("product_id","XXXX");//商品ID $prepay_id = $unifiedOrder->getPrepayId(); //=========步骤3:使用jsapi调起支付============ $jsApi->setPrepayId($prepay_id); //var_dump($unifiedOrder->parameters);die(); $jsApiParameters = $jsApi->getParameters(); return $jsApiParameters; }
function login() { //获取传播参数 if (!$this->isLogined()) { $code = $this->_get('code'); $keycode = $this->_get('state'); if (!$code) { //触发登录weixin $authurl = Platform::MakeWpAuthURL(null, array('redirect_uri' => "http://" . HTTPHOST . $_SERVER['REQUEST_URI'], 'state' => $keycode)); redirect($authurl); //redirect("http://pys.mo2.cn/reading/reading?devurl=".urlencode("http://".HTTPHOST.$_SERVER['REQUEST_URI'])); } //获取微信唯一标识unionID $wxinfoArr = D("WxAccessToken")->getUserInfo(Platform::$MPID10, $code); $openid = isset($wxinfoArr['openid']) ? $wxinfoArr['openid'] : null; //根据unionID获取userID $userInfo = M("Users")->where("openid='" . $openid . "'")->find(); /* { "openid":" OPENID", " nickname": NICKNAME, "sex":"1", "province":"PROVINCE" "city":"CITY", "country":"COUNTRY", "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", "privilege":[ "PRIVILEGE1" "PRIVILEGE2" ], "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" } */ $addArr = array(); $addArr['nickname'] = isset($wxinfoArr['nickname']) ? $wxinfoArr['nickname'] : null; $addArr['headimg'] = isset($wxinfoArr['headimgurl']) ? $wxinfoArr['headimgurl'] : null; $addArr['last_ip'] = $_SERVER['REMOTE_ADDR']; $addArr['language'] = $wxinfoArr['language']; $addArr['openid'] = $wxinfoArr['openid']; $addArr['sex'] = $wxinfoArr['sex']; $addArr['province'] = $wxinfoArr['province']; $addArr['city'] = $wxinfoArr['city']; $addArr['country'] = $wxinfoArr['country']; $addArr['unionid'] = $wxinfoArr['unionid']; if (!$userInfo) { $addArr['login_count'] = '1'; $addArr['ip'] = $_SERVER['REMOTE_ADDR']; $addArr['score'] = '0'; $addArr['ctime'] = date("Y-m-d H:i:s"); $addArr['last_time'] = date("Y-m-d H:i:s"); $addArr['state'] = '1'; $addArr['role'] = '10'; $result = M("Users")->add($addArr); $userInfo = M("Users")->where("openid='" . $addArr['openid'] . "'")->find(); } else { $addArr['login_count'] = ++$userInfo['login_count']; $addArr['last_time'] = date("Y-m-d H:i:s"); M("Users")->where("openid='" . $openid . "'")->save($addArr); } $_SESSION['userid_sess'] = $userInfo['id']; $_SESSION['time_sess'] = time(); foreach ($userInfo as $f => $v) { $fs = $f . '_sess'; $_SESSION[$fs] = $v; } } $rurl = $this->exchangeCode($_GET['rurl'], true); $redirectUrl = $_SESSION['___sessionUrl']; unset($_SESSION['___sessionUrl']); /*if($rurl) redirect($rurl."&openid=".$openid); else if ($redirectUrl) redirect($redirectUrl."&openid=".$openid);*/ redirect($redirectUrl . "&openid=" . $openid); }