前端支付之后出错代码
VM9571:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at ob
at u (jquery-3.3.1.min.js:2)
at ob
at k (jquery-3.3.1.min.js:2)
at xm
本人的控制器中的代码
public function index(){
if (!User::isLogin()) {
return redirect('index\user\login');
}
$product_id = (time()+1).createStr(22);
$notify = new NativePay();
$input = new WxPayUnifiedOrder();
$input->setBody("微信支付的东西");
$input->setAttach("xxx");
//$input->setOutTradeNo(WxPayConfig::MCHID.date("YmdHis"));
$input->setOutTradeNo($product_id);
$input->setTotalFee("1");//以分为单位,一般是要乘100的。
$input->setTimeStart(date("YmdHis"));
$input->setTimeExpire(date("YmdHis", time() + 600));
$input->setGoodsTag("test");
$input->setNotifyUrl(wxPayConfig::NOTIFY_URL);
$input->setTradeType("NATIVE");
//$product_id 为商品自定义id 可用作订单ID
$input->setProductId($product_id);
$data = [
'order_id' => $input->getOutTradeNo(),
'uid' => session('uid'),
'amount' => $input->getTotalFee(),
];
$res = db('order')->insert($data);
$result = $notify->getPayUrl($input);
if (empty($result['code_url'])){
$qrCode_url = '';
}else{
$qrCode_url = $result["code_url"];
}
return $this->fetch('',[
'qrCode_url' => $qrCode_url,
'product_id' => $product_id,
]);
}
public function orderstate(){
error_reporting(E_ERROR);
ini_set('date.timezone','Asia/Shanghai');
if(request()->param('transaction_id') != null && request()->param('transaction_id') != ""){
$transaction_id = request()->param('transaction_id');
$input = new WxPayOrderQuery();
$input->setTransactionId($transaction_id);
return json(WxPayApi::orderQuery($input));
}
if(request()->param('out_trade_no') != null && request()->param('out_trade_no') != ""){
$out_trade_no = request()->param('out_trade_no');
$input = new WxPayOrderQuery();
$input->setOutTradeNo($out_trade_no);
return json(WxPayApi::orderQuery($input));
}
}前台显示付款码页面的ajax和显示二维码代码是这样写的<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Javascript 二维码生成库:QRCode</title>
<script type="text/javascript" src="__STATIC__/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="__STATIC__/js/qrcode.min.js"></script>
</head>
<body>
<div class="onqr">
<input type="hidden" id="out_trade_no" value="{$product_id}" >
<input id="text" type="hidden" value="{$qrCode_url}" style="width:80%" /><br />
<div id="qrcode" style="width:100px; height:100px; margin-top:15px;"></div>
{:token()}
</div>
<div class="liveqr">
<img id="img" src="" />
</div>
<script type="text/javascript">
var qrcode = new QRCode(document.getElementById("qrcode"), {
width : 100,
height : 100
});
function makeCode () {
var elText = document.getElementById("text");
if (!elText.value) {
alert("Input a text");
elText.focus();
return;
}
qrcode.makeCode(elText.value);
}
makeCode();
// 产看订单状态
var time = setInterval("check()",3000); //3秒查询一次是否支付成功
function check() {
var url = "{:url('/index/Wxpay/orderstate')}";
var out_trade_no = $("#out_trade_no").val();
var param = {'out_trade_no':out_trade_no};
console.log(param);
$.post(url,param,function(data){
data = JSON.parse(data);
if (data['trade_state'] == 'SUCCESS') {
time = window.clearInterval(time);
$('.onqr').hidden();
// 支付成功把二维码替换成支付成功图标
$("#img").attr('src','/public/wxpay/images/success.png');
console.log(data);
// window.location.href="{:url('/index/wxpay/notify')}";
}else{
console.log(data);
}
});
}
</script>
</body>
</html> 最佳答案