ThinkPHP框架整合微信支付之JSAPI模式图文详解(3)

这里都是复制微信demo的,改改名字罢了,没什么其他的

接下来是异步通知方法,也是复制的微信demo上的

 public function notify()
 {
  //使用通用通知接口
  $notify = new \Notify_pub();
  
  //存储微信的回调
  $xml = $GLOBALS['HTTP_RAW_POST_DATA'];
  $notify->saveData($xml);
  
  //验证签名,并回应微信。
  //对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,
  //微信会通过一定的策略(如30分钟共8次)定期重新发起通知,
  //尽可能提高通知的成功率,但微信不保证通知最终能成功。
  if($notify->checkSign() == FALSE){
   $notify->setReturnParameter("return_code","FAIL");//返回状态码
   $notify->setReturnParameter("return_msg","签名失败");//返回信息
  }else{
   $notify->setReturnParameter("return_code","SUCCESS");//设置返回码
  }
  $returnXml = $notify->returnXml();
  echo $returnXml;
  
  //==商户根据实际情况设置相应的处理流程,此处仅作举例=======
  
  //以log文件形式记录回调信息
//   $log_ = new Log_();
  $log_name= __ROOT__."/Public/notify_url.log";//log文件路径
  
  log_result($log_name,"【接收到的notify通知】:\n".$xml."\n");
  
  if($notify->checkSign() == TRUE)
  {
   if ($notify->data["return_code"] == "FAIL") {
    //此处应该更新一下订单状态,商户自行增删操作
    log_result($log_name,"【通信出错】:\n".$xml."\n");
   }
   elseif($notify->data["result_code"] == "FAIL"){
    //此处应该更新一下订单状态,商户自行增删操作
    log_result($log_name,"【业务出错】:\n".$xml."\n");
   }
   else{
    //此处应该更新一下订单状态,商户自行增删操作
    log_result($log_name,"【支付成功】:\n".$xml."\n");
   }
  
   //商户自行增加处理流程,
   //例如:更新订单状态
   //例如:数据库操作
   //例如:推送支付完成信息
  }
 }

这里我把记录日志的类写到了function.php中:

function log_result($file,$word)
{
 $fp = fopen($file,"a");
 flock($fp, LOCK_EX) ;
 fwrite($fp,"执行日期:".strftime("%Y-%m-%d-%H:%M:%S",time())."\n".$word."\n\n");
 flock($fp, LOCK_UN);
 fclose($fp);
}

好了 其实控制器的方法就这么多,没什么其他的了,下面看一下页面,直接上代码吧:

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
 <title>微信安全支付</title>

 <script type="text/javascript">

  //调用微信JS api 支付
  function jsApiCall()
  {
   WeixinJSBridge.invoke(
    'getBrandWCPayRequest',
    <?php echo $jsApiParameters; ?>,
    function(res){
     WeixinJSBridge.log(res.err_msg);
     alert(res.err_code+res.err_desc+res.err_msg);
     //alert("{$jsApiParameters}");
    }
   );
  }

  function callpay()
  {
   if (typeof WeixinJSBridge == "undefined"){
    if( document.addEventListener ){
     document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
    }else if (document.attachEvent){
     document.attachEvent('WeixinJSBridgeReady', jsApiCall); 
     document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
    }
   }else{
    jsApiCall();
   }
  }
 </script>
</head>
<body>
 </br></br></br></br>
 <div align="center">
  <button style="width:210px; height:30px; background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;" type="button" onclick="callpay()" >贡献一下</button>
 </div>
</body>
</html>
      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5970.html