作者 潘浩文
1 个管道 的构建 通过 耗费 1 秒

意见修改

... ... @@ -71,13 +71,13 @@ class PayController extends WeChatBaseController
$re=$this->checkLogin();
$param=$this->request->param();
$data=Db::name('light_order')->where('id',$param['id'])->find();
$money=Db::name('light')->where('id',$data['light_id'])->find()['money'];
$data['money']=Db::name('light')->where('id',$data['light_id'])->find()['money'];
$attributes = [
'trade_type' => 'JSAPI',
'body' => '十方台',
'detail' => '续费',
'out_trade_no' => $data['order_sn'],
'total_fee' => $money, // 单位:分
'total_fee' => $data['money'], // 单位:分
'notify_url' => url('portal/pay/notify2','','',true), // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'openid' => $re['open_id'], // trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识,
];
... ... @@ -136,7 +136,7 @@ class PayController extends WeChatBaseController
$update['status']=1;
$light=Db::name('light')->where('id',$order['light_id'])->find();
//寺庙金额增加
Db::name('temple')->where('id',$light['temple_id'])->setInc('money',$order['money']);
Db::name('temple')->where('id',$light['temple_id'])->setInc('money',$light['money']);
//硬件控制
$this->lightChange($order['light_id'],'01','01',$order['name']);
Db::name('light_order')->where('order_sn',$out_trade_no)->update($update);
... ... @@ -150,7 +150,46 @@ class PayController extends WeChatBaseController
$response->send();
}
public function notify2(){
// cache('nnn',111);
$app = new Application($this->options);
$response = $app->payment->handleNotify(function($notify, $successful){
cache('notify',$notify);
/*这里是支付回调逻辑处理,一下是DEMO*/
// // 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
$out_trade_no=$notify->out_trade_no;
$order = Db::name('light_order')->where('order_sn',$out_trade_no)->find();
if (!$order) { // 如果订单不存在
return 'Order not exist.'; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
// // 如果订单存在
// // 检查订单是否已经更新过支付状态
if ($order['renew_time']!=null) { // 假设订单字段“支付时间”不为空代表已经支付
return true; // 已经支付成功了就不再更新了
}
// // 用户是否支付成功
if ($successful) {
// 回填微信的订单号
// $update['transaction_id']=$notify->transaction_id;
$update['renew_time']=time();
// 不是已经支付状态则修改为已经支付状态
$light=Db::name('light')->where('id',$order['light_id'])->find();
//寺庙金额增加
Db::name('temple')->where('id',$light['temple_id'])->setInc('money',$order['money']);
//硬件控制
// $this->lightChange($order['light_id'],'01','01',$order['name']);
Db::name('light_order')->where('order_sn',$out_trade_no)->update($update);
} else {
// 用户支付失败
Db::name('light_order')->where('order_sn',$out_trade_no)->delete();
}
return true; // 返回处理完成
});
$response->send();
}
protected function lightChange($id="",$status1='01',$status2='01',$u=""){
if ($id==""){
return false;
... ...
<!DOCTYPE html>
<html>
<head>
<title>微信支付</title>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1.0, width=device-width, user-scalable=no" />
<link rel="stylesheet" type="text/css" href="__TMPL__/public/assets/css/lanren.css">
<script type="text/javascript">
//调用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
"getBrandWCPayRequest",
{$jsApiParameters},
function(res){
WeixinJSBridge.log(res.err_msg);
// alert(res.err_code+res.err_desc+res.err_msg);
if (res.err_msg=='get_brand_wcpay_request:cancel'){
//支付取消逻辑
}else if (res.err_msg=='get_brand_wcpay_request:ok'){
window.location.href="{:url('user/User/myLight')}"
//支付成功逻辑
}else{
//支付失败逻辑
alert('支付失败')
window.history.go(-1);
}
}
);
}
function callpay()
{
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WesixinJSBridgeReady', jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
}else{
jsApiCall();
}
}
</script>
</head>
<body>
<div class="wenx_xx">
<div class="mz">{$list.order_sn}</div>
<div class="wxzf_price">¥{$list.money}</div>
</div>
<div class="skf_xinf">
<div class="all_w"> <span class="bt">收款方</span> <span class="fr">十方台</span> </div>
</div>
<a onclick="callpay()" class="ljzf_but all_w">立即支付</a>
<script type="text/javascript">
callpay();
</script>
</body>
</html>
\ No newline at end of file
... ...