wemall app微信商城系统Android之通用通知接口demo

wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享Native(原生)支付模式一demo,供技术员参考学习。
wemall官网地址:http://www.wemallshop.com
支付完成后,微信会把相关支付和用户信息发送到商户设定的通知URL,商户接收回调信息后,根据需要设定相应的处理流程。 这里举例使用log文件形式记录回调信息。

notify_url.php

<?php
        include_once("./log_.php");
        include_once('../../config.php');
        
        //使用通用通知接口
        $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="./notify_url.log";//log文件路径
        $log_->log_result($log_name,"【接收到的notify通知】:\n".$xml."\n");
    
        if($notify->checkSign() == TRUE)
        {
            if ($notify->data["return_code"] == "FAIL") {
                //此处应该更新一下订单状态,商户自行增删操作
                $log_->log_result($log_name,"【通信出错】:\n".$xml."\n");
            }
            elseif($notify->data["result_code"] == "FAIL"){
                //此处应该更新一下订单状态,商户自行增删操作
                $log_->log_result($log_name,"【业务出错】:\n".$xml."\n");
            }
            else{
                //此处应该更新一下订单状态,商户自行增删操作
                $log_->log_result($log_name,"【支付成功】:\n".$xml."\n");
            }        
            //商户自行增加处理流程,
            //例如:更新订单状态
            //例如:数据库操作
            //例如:推送支付完成信息
            $xml = $notify->xmlToArray($xml);
            // 商户订单号
            $out_trade_no = $xml ['out_trade_no'];
            $total_fee = $xml ['total_fee'];
    
            $uid = $xml ['openid'];
            $log_->log_result($log_name,"【订单号】:\n".$out_trade_no."\n");
            // 判断该笔订单是否在商户网站中已经做过处理
            // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
            // 如果有做过处理,不执行商户的业务程序
            if (! empty ( $out_trade_no )) {
                $sql = "update " . DB_PREFIX . "order set pay_status=1 where orderid='" . $out_trade_no . "'";
                mysql_query ( $sql, $conn );
            }
        }
    ?>

log_.php

<?php

class Log_
{
    // 打印log
    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);
    }
}

?>

config.php

  <?php
        header('Content-Type:text/html; charset=utf-8');
        error_reporting(E_ALL & ~E_NOTICE);
        
        define('DB_HOST', 'localhost');
        define('DB_USER', 'root');
        define('DB_PWD', 'root');
        define('DB_NAME', 'open');
        define('DB_PREFIX', 'wemall_');
        
        $conn = @mysql_connect(DB_HOST, DB_USER, DB_PWD) or die('数据库链接失败:'.mysql_error());
        
        @mysql_select_db(DB_NAME) or die('数据库错误:'.mysql_error());
        
        @mysql_query('SET NAMES UTF8') or die('字符集错误:'.mysql_error());
    ?>

WeMall - 开源微商城 微信商城 商城源码 分销商城 b2b2c商城系统
wemall官网地址:http://www.wemallshop.com

wemall

阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题