<?php header("Content-type: text/html; charset=utf-8"); ini_set('date.timezone','Asia/Shanghai'); //error_reporting(E_ERROR); require_once "../lib/WxPay.Api.php"; require_once "WxPay.JsApiPay.php"; require_once 'log.php'; require_once '../lib/Base.php'; //初始化日志 $logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log'); $log = Log::Init($logHandler, 15); //打印输出数组信息 function printf_info($data) { foreach($data as $key=>$value){ echo "<font color='#00ff55;'>$key</font> : $value <br/>"; } } function NumToStr($num){ if (stripos($num,'e')===false) return $num; $num = trim(preg_replace('/[=\'"]/','',$num,1),'"');//出现科学计数法,还原成字符串 $result = ""; while ($num > 0){ $v = $num - floor($num / 10)*10; $num = floor($num / 10); $result = $v . $result; } return $result; } //①、获取用户openid $tools = new JsApiPay(); // exit(); $openId = $tools->GetOpenid(); session_start(); //获取金额 $pFee = $_SESSION['premoney']; // echo "<span>".$pFee."</span>"; $pBody = $_SESSION['body']; $pCardNo = $_SESSION['cardno']; $pRegID = $_SESSION['regId']; $pRepeiceNo = $_SESSION['repeiceNo']; $pOrder = $_SESSION['order']; $pPatientID = $_SESSION['patientid']; $pName = $_SESSION['name']; $pPatientNO = $_SESSION['patientno']; $tradeNo = NumToStr(WxPayConfig::MCHID.date("YmdHis")); // echo "<span>".$pCardNo."</span>"; //微信订单表初始化 $tMO = new Model('wxorder'); $tTime = time(); $tDatas = $tMO->field('id')->where('out_trade_no = \''.$tradeNo.'\'')->select(); //查询卡号 $tMCMO = new Model('medical_card'); $tMCDatas = $tMCMO->field('med_c_card_no')->where('med_c_uid = '.$_SESSION['uid'])->select(); if(empty($pCardNo)) { $tCardNo = $tMCDatas[0]['med_c_card_no']; }else{ $tCardNo = $pCardNo; } if(empty($tDatas)) { $tData = array( 'name' => $pName, 'total_fee' => $pFee/100, 'uid' => $_SESSION['uid'], 'prepay_id' => $pOrder, 'out_trade_no' => $tradeNo, 'created' => $tTime, 'status' => 1, 'patientid' => $pPatientID, 'regid' => $pRegID, 'repeiceno' => $pRepeiceNo, 'cardno' => $tCardNo, ); $id = $tMO->insert($tData); if(!$id){ return true; } }else{ $id = $tDatas[0]['id']; } switch($pBody) { case 'zyyj': $pBody = '住院押金';break; case 'mzjf': $pBody = '门诊缴费';break; } // var_dump($f); //②、统一下单 $input = new WxPayUnifiedOrder(); $input->SetBody($pBody); $input->SetAttach("test"); // $tradeNo = $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis")); $input->SetOut_trade_no($tradeNo); $input->SetTotal_fee($pFee); $timestamp = date("YmdHis"); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag("test"); $input->SetNotify_url("http://lyl.medical.91paiyipai.com/wxpay/example/notify.php"); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); $order = WxPayApi::unifiedOrder($input); // echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>'; // var_dump($order);exit(); // printf_info($input); $jsApiParameters = $tools->GetJsApiParameters($order); //获取共享收货地址js函数参数 $editAddress = $tools->GetEditAddressParameters(); //③、在支持成功回调通知中处理成功之后的事宜,见 notify.php /** * 注意: * 1、当你的回调地址不可访问的时候,回调通知会失败,可以通过查询订单来确认支付是否成功 * 2、jsapi支付时需要填入用户openid,WxPay.JsApiPay.php中有获取openid流程 (文档可以参考微信公众平台“网页授权接口”, * 参考http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html) */ ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>确认支付</title> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="./css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="./css/wx.css"> <!-- <link rel="stylesheet" href="../../medical_wx/lib/assets/css/bootstrap.min.css"> --> <link rel="stylesheet" href="../../medical_wx/lib/assets/css/home_two.css"> <link rel="stylesheet" href="../../medical_wx/lib/assets/css/loaders.css"> </head> <body class="wxbody"> <div class="col-xs-12 wxcont"> <h5>郴州市中医医院</h5> <h3>¥<?php echo $pFee/100;?></h3> <div class="col-xs-12 wxcol12"> <p>收款方<span>郴州市中医医院</span></p> <p>商 品<span><?php echo $pBody;?></span></p> </div> <div class="col-xs-12" style="cursor: pointer;" id="wx_btn"><button class="btn" id="btn" type="button" style="height: 50px;">立即支付</button></div> </div> <!-- <script src="../../medical_wx/lib/assets/js/jquery.min.js"></script> --> <script src="./js/jquery.js"></script> <!-- <script src="../../medical_wx/lib/assets/js/bootstrap.min.js"></script> --> <div class="tip_mess"></div> <script src="../../medical_wx/lib/assets/js/home.js"></script> <script src="../../medical_wx/js/base.js"></script> <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script src="../../medical_wx/lib/assets/js/home.js"></script> <script type="text/javascript"> // var t_uid = GetQuery('uid'); var url = location.href.split('#')[0]; var timestamp = ''; var nonceStr = ''; var signature = ''; var uid = localStorage.getItem('uid', uid); //jssdk初始化配置 (function () { $.ajax({ type: 'post', async: true, url: domain1+'/apiv1_jssdk/', data:{url:decodeURI(url)}, // beforeSend: function() { // $.showLoading(); // }, success: function(obj) { // $.hideLoading(); if(obj.status == 1) { var data = obj.data; timestamp = data.timestamp; nonceStr = data.nonceStr; signature = data.signature; wx.config({ beta: true, debug: false,//调试模式 appId: data.appId, timestamp: data.timestamp, nonceStr: data.nonceStr, signature: data.signature, jsApiList: [ "selectEnterpriseContact", "checkJsApi", "chooseImage", "previewImage", "uploadImage", "downloadImage", "openEnterpriseChat", "openLocation", "getLocation", "chooseWXPay" ] }) }else{ $.toptip(obj.msg,'error');return; } }, error: function() { $.hideLoading(); $.toptip('网络繁忙请稍后再试!');return; } }) })(); function pay(){ var params = eval('(<?php echo $jsApiParameters;?>)'); wx.chooseWXPay({ nonceStr:params.nonceStr, package:params.package, paySign:params.paySign, signType:params.signType, timestamp:params.timeStamp+"", success: function(res) { // 支付成功后的回调函数 if (res.errMsg == "chooseWXPay:ok") { // refund("<?php echo $tradeNo;?>", "<?php echo $pFee;?>"); window.location.href='/medical_wx/h5/jfjl.html?title=缴费记录&type=jfjl&uid='+uid; } else { alert(res.errMsg); } }, cancel: function(res) { //支付取消 alert('支付取消'); } }); } var btn = document.getElementById('btn'); btn.onclick = function(){ // alert('hello world!'); pay(); } </script> </body> </html>