public function createQrcode()
 {
     $pkey = base64_decode(I("pkey"));
     $pkeys = explode("@", $pkey);
     if (count($pkeys) != 2) {
         $this->assign('out_trade_no', "");
     } else {
         $morders = D('Home/Orders');
         $obj["orderIds"] = $pkeys[1];
         $data = $morders->getPayOrders($obj);
         $orders = $data["orders"];
         $needPay = $data["needPay"];
         $this->assign("orderIds", $orderIds);
         $this->assign("orders", $orders);
         $this->assign("needPay", $needPay);
         $this->assign("orderCnt", count($orders));
         // 使用统一支付接口
         $unifiedOrder = new \UnifiedOrder_pub();
         $unifiedOrder->setParameter("body", "支付订单費用");
         // 商品描述
         // 自定义订单号,此处仅作举例
         $timeStamp = time();
         $out_trade_no = "{$timeStamp}";
         // $out_trade_no = "1000001|1000002";
         $unifiedOrder->setParameter("out_trade_no", "{$out_trade_no}");
         // 商户订单号
         $unifiedOrder->setParameter("total_fee", $needPay * 100);
         // 总金额
         $unifiedOrder->setParameter("notify_url", C('WxPayConf_pub.NOTIFY_URL'));
         // 通知地址
         $unifiedOrder->setParameter("trade_type", "NATIVE");
         // 交易类型
         $unifiedOrder->setParameter("attach", "{$pkey}");
         // 附加数据
         // $unifiedOrder->setParameter ( "detail", "Ipad mini" );//附加数据
         $unifiedOrder->SetParameter("input_charset", "UTF-8");
         // 获取统一支付接口结果
         $unifiedOrderResult = $unifiedOrder->getResult();
         // 商户根据实际情况设置相应的处理流程
         if ($unifiedOrderResult["return_code"] == "FAIL") {
             // 商户自行增加处理流程
             echo "通信出错:" . $unifiedOrderResult['return_msg'] . "<br>";
         } elseif ($unifiedOrderResult["result_code"] == "FAIL") {
             // 商户自行增加处理流程
             echo "错误代码:" . $unifiedOrderResult['err_code'] . "<br>";
             echo "错误代码描述:" . $unifiedOrderResult['err_code_des'] . "<br>";
         } elseif ($unifiedOrderResult["code_url"] != NULL) {
             // 从统一支付接口获取到code_url
             $code_url = $unifiedOrderResult["code_url"];
             // 商户自行增加处理流程
         }
         $this->assign('out_trade_no', $obj["orderIds"]);
         $this->assign('code_url', $code_url);
         $this->assign('unifiedOrderResult', $unifiedOrderResult);
     }
     $this->display("default/payment/wxnative2/qrcode");
 }
예제 #2
0
 public function index()
 {
     $this->isUserLogin();
     vendor('Weixinpay.WxPayPubHelper');
     //使用jsapi接口
     $jsApi = new \JsApi_pub();
     //=========步骤1:网页授权获取用户openid============
     //通过code获得openid
     $code = $_GET['code'];
     $jsApi->setCode($code);
     $openid = session('WST_USER')['wxId'];
     $pkey = session('WST_USER')["userId"] . "@" . $_SESSION["orderIds"];
     $time = time();
     $res = array('order_sn' => $time, 'order_amount' => $_SESSION['needPay']);
     //=========步骤2:使用统一支付接口,获取prepay_id============
     //使用统一支付接口
     $unifiedOrder = new \UnifiedOrder_pub();
     $total_fee = $res['order_amount'] * 100;
     //$total_fee = 1;
     $body = "订单支付{$res['order_sn']}";
     $unifiedOrder->setParameter("openid", "{$openid}");
     //用户标识
     $unifiedOrder->setParameter("body", $body);
     //商品描述
     //自定义订单号,此处仅作举例
     $out_trade_no = $res['order_sn'];
     $unifiedOrder->setParameter("out_trade_no", "{$out_trade_no}");
     //商户订单号
     $unifiedOrder->setParameter("total_fee", $total_fee);
     //总金额
     $unifiedOrder->setParameter("attach", "{$pkey}");
     //附加数据
     $unifiedOrder->setParameter("notify_url", C('WxPayConf_pub.NOTIFY_URL'));
     //通知地址
     $unifiedOrder->setParameter("trade_type", "JSAPI");
     //交易类型
     $unifiedOrder->SetParameter("input_charset", "UTF-8");
     //非必填参数,商户可根据实际情况选填
     $prepay_id = $unifiedOrder->getPrepayId();
     //=========步骤3:使用jsapi调起支付============
     $jsApi->setPrepayId($prepay_id);
     $jsApiParameters = $jsApi->getParameters();
     $wxconf = json_decode($jsApiParameters, true);
     if ($wxconf['package'] == 'prepay_id=') {
         $this->error('当前订单存在异常,不能使用支付');
     }
     $this->assign('res', $res);
     $this->assign('jsApiParameters', $jsApiParameters);
     $this->display('default/payment/wxjsapi/wxpay');
 }