コード例 #1
0
ファイル: WxPay.class.php プロジェクト: Molly2Molly/fiance
 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;
 }
コード例 #2
0
 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);
 }