tp5.1 微信支付

引用:

http://www.thinkphp.cn/code/3593.html

Github查看最新代码https://github.com/dream2023/ThinkPHP5-wxpay

原文件适合TP5.0的以下的,微信支付参数都是固定的读取

 

单独微信H5支付可以参考https://blog.csdn.net/haibo0668/article/details/81273278

 

我现在把上面的代码整合到TP5.1中,微信支付参数放到公共文件中读取

完整TP5.1文件包:https://download.csdn.net/download/haibo0668/10587904

重新修改的包在这里下载:https://download.csdn.net/download/haibo0668/10587914

一、微信扫码支付:重点整理扫码支付,不修改是生成不了二维码的

1、修改\extend\wxpay\NativePay.php文件,修正后的代码

<?php

namespace wxpay;

//use think\Loader;
//
//Loader::import('wxpay.lib.WxPayNativePay');
require '../extend/wxpay/lib/WxPayNativePay.php';
//require '../extend/wxpay/lib/Phpqrcode.php';//二维码

/**
* 扫码支付
*
* 用法:
* 调用 \wxpay\NativePay::getPayImage($params) 即可
*
*/
class NativePay extends WxPayBase
{
    /**
     * 获取扫码支付的二维码图片
     *
     * @param array  $params 订单信息
     * @param string $params['body'] 商品简单描述
     * @param string $params['out_trade_no'] 商户订单号, 要保证唯一性
     * @param string $params['total_fee'] 标价金额, 请注意, 单位为分!!!!!
     * @param string $params['product_id'] 商品ID
     *
     * @param string $width 二维码宽
     * @param string $height 二维码长
     *
     * @return string img标签
     */
    public static function getPayImage($params, $width=150, $height=150)
    {
        // 1.校检参数
        $that = new self();
        $that->checkParams($params);
        if(empty($params['product_id'])) {
            throw new \WxPayException('商品ID(product_id)商品ID必须');
        }

        // 2.组装参数
        $input = $that->getPostData($params);

        // 3.进行请求
        $tools = new \WxPayNativePay();
        $result = $tools->GetPayUrl($input);

        // 4.进行结果检验
        $that->checkResult($result);

        // 5.返回支付二维码图片
        $url = urlencode($result["code_url"]);
		
		//$payImage = $that->qrCode($url);
        $payImage = "<img alt='扫码支付' src='/pay/wx/qrcodeUrl?data={$url}' style='width:{$width}px;height:{$height}px;'/>";
        return $payImage;
    }

    // 组装请求参数
    private function getPostData($params)
    {
        $input  = new \WxPayUnifiedOrder();
        $input->SetBody($params['body']);
        $input->SetOut_trade_no($params['out_trade_no']);
        $input->SetTotal_fee($params['total_fee']);
        // $input->SetGoods_tag("test");
        $input->SetNotify_url(\WxPayConfig::NOTIFY_URL);
        $input->SetTrade_type("NATIVE");
        $input->SetProduct_id($params['product_id']);
        return $input;
    }
}

重点:TP5.1不支持

use think\Loader;

Loader::import('wxpay.lib.WxPayNativePay');

引用文件,需要修改成

 

2、在\application\index\controller\Example.php文件中增加生成二维码函数

    // 扫码支付 生成二维码后转换成图片二维码
    public function qrcodeUrl()
    {
    	require '../extend/wxpay/lib/Phpqrcode.php';//二维码
			$url = urldecode(input('data'));
			if(substr($url, 0, 6) == "weixin"){
		         $qrcode_tools = new \QRcode();
		         echo $qrcode_tools->png($url);
				//QRcode::png($url);
			}else{
				 echo header('HTTP/1.1 404 Not Found');
			}
    }

Example.php代码:

<?php
namespace app\pay\controller;
use think\Db;
use think\Validate;

class Wx extends Common{
    // 扫码支付
    public function index()
    {
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
            'product_id' => time(),
        ];
        //db('order')->insert($params);
        $result = \wxpay\NativePay::getPayImage($params);
        echo $result;
    }

    // 公众号支付
    public function jspay()
    {
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
        ];
        $result = \wxpay\JsapiPay::getPayParams($params);
        halt($result);
    }

    // 小程序支付
    public function smallapp()
    {
        $params = [
            'body'         => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee'    => 1,
        ];
        $code = '08123gA41K4EQO1RH1B41uP2A4123gAW';
        $result = \wxpay\JsapiPay::getPayParams($params, $code);

        $openId = 'oCtoK0SjxW-N5qjEDgaMyummJyig';
        $result = \wxpay\JsapiPay::getParams($params, $openId);
    }

    // 刷卡支付
    public function micropay()
    {
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
        ];

        $auth_code = '134628839776154108';
        $result = \wxpay\MicroPay::pay($params, $auth_code);
        halt($result);
    }

    // H5支付
    public function wappay()
    {
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
        ];

        $result = \wxpay\WapPay::getPayUrl($params);
        halt($result);
    }

    // 订单查询
    public function query()
    {
        $out_trade_no = '290000985120170917160005';
        $result = \wxpay\Query::exec($out_trade_no);
        halt($result);
    }

    // 退款
    public function refund()
    {
        $params = [
            'out_trade_no' => '290000985120170917160005',
            'total_fee' => 1,
            'refund_fee' => 1,
            'out_refund_no' => time()
        ];
        $result = \wxpay\Refund::exec($params);
        halt($result);
    }

    // 退款查询
    public function refundquery()
    {
        $order_no = '290000985120170917160005';
        $result = \wxpay\RefundQuery::exec($order_no);
        halt($result);
    }

    // 下载对账单
    public function download()
    {
        $result = \wxpay\DownloadBill::exec('20170923');
        echo($result);
    }

    // 通知测试
    public function notify()
    {
        $notify = new \wxpay\Notify();
        $notify->Handle();
    }
	
    // 扫码支付 生成二维码后转换成图片二维码
    public function qrcodeUrl()
    {
    	require '../extend/wxpay/lib/Phpqrcode.php';//二维码
			$url = urldecode(input('data'));
			if(substr($url, 0, 6) == "weixin"){
		         $qrcode_tools = new \QRcode();
		         echo $qrcode_tools->png($url);
				//QRcode::png($url);
			}else{
				 echo header('HTTP/1.1 404 Not Found');
			}
    }
	
	
}

 

回调问题:

本地测试是回调不了,所以上面扫码支付是测试不了回调的,需要调试回调,就要在服务器上测试

设置好正确的回调地址,所谓正确的地址必须在微信公众号设置的支付授权目录(或测试授权目录)下,且域名要和微信公众号绑定的服务器地址域名相同。

扫码支付需要回调网址的,记得填写上

然后上传服务器测试

引用:https://www.cnblogs.com/lhat/p/5611242.html

 

二、微信公众号支付

控制器代码中:

	//支付
    public function payment()
    {
    	$type=input('type');//1=微信扫码  2=微信公众号 3=微信H5支付 4=支付宝PC电脑扫码 5=支付宝移动  6=银联 7=小程序支付 8=微信刷卡支付 
	    $out_trade_no=input('WIDout_trade_no');
//		$total_fee=input('WIDtotal_amount');
//  	$arr['WIDsubject']=input('WIDsubject');//订单名称 商品简单描述
//  	$arr['WIDout_trade_no']=input('WIDout_trade_no');//订单号
//  	$arr['WIDtotal_amount']=input('WIDtotal_amount');//总价格 如果购买多个商品,就是多个商品的总价 ,单位是分,微信只能是整数 *100
//  	$arr['type']=$type;
//		$arr['satat']=1;
		
		


       if($type==2){//=2是微信公众号  微信公众号先不要一开始就在系统中生成订单
            $this->getparams();//生成params数组
	   }else{
            $this->getOrder();//生成订单
	   }

		
				if($type==1){//微信PC扫码支付
				
				       $out_trade_no=input('WIDout_trade_no');//订单号
				       $this->assign('out_trade_no',$out_trade_no);
					   //$this->assign('number',$out_trade_no);
				
				        $params = [
				            'body' => input('WIDsubject'),//订单名称 商品简单描述
				            'out_trade_no' => input('WIDout_trade_no'),//订单号
				            'total_fee' => input('WIDtotal_amount')*100,//总价格 如果购买多个商品,就是多个商品的总价 ,单位是分,微信只能是整数 *100
				            'product_id' => time(),//商品ID 可以单个商品,也可以多个商品ID,例子:12,35,58
				        ];
		//		        //db('order')->insert($params);
		                
				        $result = \wxpay\NativePay::getPayImage($params);
				        echo $result;
						
						return view(wxcodepay);
							
				}elseif($type==2){//微信公众号
				

				        $params = [
				            'body' => input('WIDsubject'),//订单名称 商品简单描述
				            'type' => input('type'),//微信第二次转跳的时候需要带些参数回来  1=微信扫码  2=微信公众号 3=微信H5支付 4=支付宝PC电脑扫码 5=支付宝移动  6=银联 7=小程序支付 8=微信刷卡支付 
				            'out_trade_no' => input('WIDout_trade_no'),//订单号
				            'total_fee' => input('WIDtotal_amount')*100,//总价格 如果购买多个商品,就是多个商品的总价 ,单位是分,微信只能是整数 *100
				        ];
						
				        $result = \wxpay\JsapiPay::getPayParams($params);
						//$result = str_replace('\"', '\'', $result);
						//halt($result);
						$result = json_decode($result,true);//转为数组
						$this->assign('result',$result); 
						
						//dump($result);die;
						//return $result;
				        //halt($result);
						
						return view(index);
						
				}elseif($type==3){//微信H5支付
				
				        $params = [
				            'body' => input('WIDsubject'),//订单名称 商品简单描述
				            'out_trade_no' => input('WIDout_trade_no'),//订单号
				            'total_fee' => input('WIDtotal_amount')*100,//总价格 如果购买多个商品,就是多个商品的总价 ,单位是分,微信只能是整数 *100
				        ];
				        $result = \wxpay\WapPay::getPayUrl($params);
							
				        halt($result);
						
				}elseif($type==4){//支付宝PC扫码支付
				        \alipay\Pagepay::pay($this->params);//支付宝电脑PC扫码支付
				}elseif($type==5){//支付宝移动支付
				        \alipay\Wappay::pay($this->params);//支付宝移动支付
				}elseif($type==6){//银联
				
				}elseif($type==7){//微信小程序支付
				
				        $params = [
				            'body' => input('WIDsubject'),//订单名称 商品简单描述
				            'out_trade_no' => input('WIDout_trade_no'),//订单号
				            'total_fee' => input('WIDtotal_amount')*100,//总价格 如果购买多个商品,就是多个商品的总价 ,单位是分,微信只能是整数 *100
				        ];
				        $code = '08123gA41K4EQO1RH1B41uP2A4123gAW';
				        $result = \wxpay\JsapiPay::getPayParams($params, $code);
				
				        $openId = 'oCtoK0SjxW-N5qjEDgaMyummJyig';
				        $result = \wxpay\JsapiPay::getParams($params, $openId);
						
				}elseif($type==8){//微信刷卡支付
				
				        $params = [
				            'body' => input('WIDsubject'),//订单名称 商品简单描述
				            'out_trade_no' => input('WIDout_trade_no'),//订单号
				            'total_fee' => input('WIDtotal_amount')*100,//总价格 如果购买多个商品,就是多个商品的总价 ,单位是分,微信只能是整数 *100
				        ];
				
				        $auth_code = '134628839776154108';
				        $result = \wxpay\MicroPay::pay($params, $auth_code);
				        halt($result);
						
				}else{
					$this->error('错误:请选择支付方式!');
				}
		

    }

$result = json_decode($result,true);//转为数组,模板中调用

     /**
     * 当TYPE=2时,即微信公众号支付时,不生成订单,生成$params
	 * 获取订单信息, 必须包含订单号和订单金额
     *
     * @return string $params['out_trade_no'] 商户订单
     * @return float  $params['total_amount'] 订单金额
     */
    public function getparams()
    {
    	 $number=input('WIDout_trade_no');//订单号
		 $title=input('WIDsubject');//订单名称 商品简单描述  支付宝支付
		 $body=input('WIDsubject');//订单名称 商品简单描述  微信支付
		 $price=input('WIDtotal_amount');//总价格 如果购买多个商品,就是多个商品的总价
		 $type=input('type');
		 $state=0;//状态 0未支付 1已支付
		 $type_state=0;//订单类型 0单个购买 1购买多个商品

		 
	       $params['type']=input('type');//支付类型  大家都有的
	  	   $params['out_trade_no']=input('WIDout_trade_no');//订单号
	       $params['subject']=input('WIDsubject');//订单名称 商品简单描述  支付宝支付
		   $params['body']=input('WIDsubject');//订单名称 商品简单描述  微信支付
		   $params['total_amount']=input('WIDtotal_amount');//总价格 如果购买多个商品,就是多个商品的总价
		   
		    if($number && $price){
			  	   $data['number']=$number;
			       $data['title']=$title;
				   $data['price']=$price;
			  	   $data['state']=$state;
				   $data['type']=$type;
				   $data['type_state']=$type_state;
				   
				   $order_rs=db('order')->insert($data);
		    }
	
				   
		 $this->params = $params;
	}

 

 

模板代码:两段代码一定要有才能调用微信

 <script type="text/javascript">
	//调用微信JS api 公众号支付
	function jsApiCall()
	{
		   WeixinJSBridge.invoke(
		      'getBrandWCPayRequest', {
		         "appId":"{$result['appId']}",     //公众号名称,由商户传入     
		         "timeStamp":"{$result['timeStamp']}",         //时间戳,自1970年以来的秒数     
		         "nonceStr":"{$result['nonceStr']}", //随机串     
		         "package":"{$result['package']}",     
		         "signType":"{$result['signType']}",         //微信签名方式:     
		         "paySign":"{$result['paySign']}" //微信签名 
		      },
		      function(res){
		      if(res.err_msg == "get_brand_wcpay_request:ok" ){
		      // 使用以上方式判断前端返回,微信团队郑重提示:
		            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
		      } 
		   }); 
   }
	
		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>

在微信公众号支付中,微信那个文件包文件还有修改的。因为传值的问题

JsapiPay.php

   public static function getPayParams($params, $code='')
    {
    	//$code=input('code');
        $tools = new \WxPayJsPay();
		//dump($params);
        //$openId = $tools->GetOpenid($params);
		$params2 = $tools->GetOpenid($params);
		return self::getParams($params2, $params2['openid']);
        //return self::getParams($params, $openId);
    }

WxPayJsPay.php

	public function GetOpenid($params)
	{
		//通过code获得openid,第一次从自己系统上过来,CODE是空的,从下面if (empty($code)){这步中,微信登录授权再转跳一次网址,带来CODE值,CODE不为空就执行$openid = $this->GetOpenidFromMp($code);这步来获取$openid
		//要把参数$params传回去,不然微信第二次转跳的时候$params就变成空了
		$url_params="?body=".$params['body']."&out_trade_no=".$params['out_trade_no']."&total_fee=".$params['total_fee']."&type=".$params['type'];
		$code=input('code');

		//dump($params);
		if (empty($code)){
		//if (!isset($_GET['code'])){
			//触发微信返回code码
			$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'].$url_params);
			//$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
			//dump($baseUrl);die;
			$url = $this->__CreateOauthUrlForCode($baseUrl);
			//dump($url);die;
			Header("Location: $url");
			exit();
		} else {
			//获取code码,以获取openid
			//dump(input('param.'));die;
			$openid = $this->GetOpenidFromMp($code);
		        $params = [
		            'body' => input('body'),
		            'type' => input('type'),
		            'out_trade_no' => input('out_trade_no'),
		            'total_fee' => input('total_fee'),
		            'openid' => $openid,
		        ];
			  return $params;//传数组回去,因为要带body、type、out_trade_no这些参数回去,所以只能传数组回去
			//return $openid;//传一个$openid回去
		}
	}

微信登录公众号授权后再转跳一次,所以我加上之前的值回来。不然转跳后之前的值就变空了

 

完全案例:

 

完整TP5.1文件包:https://download.csdn.net/download/haibo0668/10587904

1、把微信支付包:https://download.csdn.net/download/haibo0668/10587914(还要修改一个地方,看最下面,包中没有更新)下载解压后把文件夹放到\extend\下

2、微信支付参数,\application\common.php中

//微信支付参数
function wx_confing(){
					
				//网址
					$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';判断http还是https
					$pay_url = $http_type.$_SERVER['HTTP_HOST'];
					
				$config['APPID']='wxf33ba';//绑定支付的APPID(必须配置,开户邮件中可查看)
				$config['MCHID']='148122';//商户号(必须配置,开户邮件中可查看)
				$config['WXPAY_DEBUG']=true;//开发模式与生产模式 微信支付需要获取用户的真实ip, 本地开发就需要设定一个固定的IP,  处于生产模式, 请务必将次改为false, 用于获取用户真实IP!!!!
				$config['NOTIFY_URL']=$pay_url.'/pay/index/notify';//异步通知地址
				$config['KEY']='icpuhyk0fdgfdgddfgdl0k50q';//商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)设置地址:https://pay.weixin.qq.com/index.php/account/api_cert
				$config['APPSECRET']='4ed12dfb65765gfhgf2972';//公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),
				//=======【证书路径设置】=====================================
				/**
				 * TODO:设置商户证书路径
				 * 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要,可登录商户平台下载,
				 * API证书下载地址:https://pay.weixin.qq.com/index.php/account/api_cert,下载之前需要安装商户操作证书)
				 * @var path
				 */
				$config['SSLCERT_PATH']='/wxpay/cert/apiclient_cert.pem';
				$config['SSLKEY_PATH']='/wxpay/cert/apiclient_key.pem';
				//=======【curl代理设置】===================================
				/**
				 * TODO:这里设置代理机器,只有需要代理的时候才设置,不需要代理,请设置为0.0.0.0和0
				 * 本例程通过curl使用HTTP POST方法,此处可修改代理服务器,
				 * 默认CURL_PROXY_HOST=0.0.0.0和CURL_PROXY_PORT=0,此时不开启代理(如有需要才设置)
				 * @var unknown_type
				 */
				$config['CURL_PROXY_HOST']="0.0.0.0";//"10.152.18.220";
				$config['CURL_PROXY_PORT']=0;//8080;
				//=======【上报信息配置】===================================
				/**
				 * TODO:接口调用上报等级,默认紧错误上报(注意:上报超时间为【1s】,上报无论成败【永不抛出异常】,
				 * 不会影响接口调用流程),开启上报之后,方便微信监控请求调用的质量,建议至少
				 * 开启错误上报。
				 * 上报等级,0.关闭上报; 1.仅错误出错上报; 2.全量上报
				 * @var int
				 */
				$config['REPORT_LEVENL']=1;//
	      // ======【日志文件目录】===================================
				$config['WXPAY_LOG']='/wxpay';//
				
				return $config;
}

3、控制器文件:\application\pay\controller\Wx.php (这里可以随意自己)

<?php
namespace app\pay\controller;
use think\Db;
use think\Validate;

class Wx extends Common{
    // 扫码支付
    public function index()
    {
    	//dump(wx_confing());die;
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
            'product_id' => time(),
        ];
        //db('order')->insert($params);
        $result = \wxpay\NativePay::getPayImage($params);
        echo $result;
    }

    // 公众号支付
    public function jspay()
    {
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
        ];
        $result = \wxpay\JsapiPay::getPayParams($params);
        halt($result);
    }

    // 小程序支付
    public function smallapp()
    {
        $params = [
            'body'         => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee'    => 1,
        ];
        $code = '08123gA41K4EQO1RH1B41uP2A4123gAW';
        $result = \wxpay\JsapiPay::getPayParams($params, $code);

        $openId = 'oCtoK0SjxW-N5qjEDgaMyummJyig';
        $result = \wxpay\JsapiPay::getParams($params, $openId);
    }

    // 刷卡支付
    public function micropay()
    {
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
        ];

        $auth_code = '134628839776154108';
        $result = \wxpay\MicroPay::pay($params, $auth_code);
        halt($result);
    }

    // H5支付
    public function wappay()
    {
        $params = [
            'body' => '支付测试',
            'out_trade_no' => mt_rand().time(),
            'total_fee' => 1,
        ];

        $result = \wxpay\WapPay::getPayUrl($params);
        halt($result);
    }

    // 订单查询
    public function query()
    {
        $out_trade_no = '290000985120170917160005';
        $result = \wxpay\Query::exec($out_trade_no);
        halt($result);
    }

    // 退款
    public function refund()
    {
        $params = [
            'out_trade_no' => '290000985120170917160005',
            'total_fee' => 1,
            'refund_fee' => 1,
            'out_refund_no' => time()
        ];
        $result = \wxpay\Refund::exec($params);
        halt($result);
    }

    // 退款查询
    public function refundquery()
    {
        $order_no = '290000985120170917160005';
        $result = \wxpay\RefundQuery::exec($order_no);
        halt($result);
    }

    // 下载对账单
    public function download()
    {
        $result = \wxpay\DownloadBill::exec('20170923');
        echo($result);
    }

    // 通知测试
    public function notify()
    {
    	//dump(wx_confing());die;
        $notify = new \wxpay\Notify();
        $notify->Handle();
		
    }
	
    // 扫码支付 生成二维码后转换成图片二维码
    public function qrcodeUrl()
    {
    	    require '../extend/wxpay/lib/Phpqrcode.php';//引入生成生成二维码文件
			$url = urldecode(input('data'));
			if(substr($url, 0, 6) == "weixin"){
		         $qrcode_tools = new \QRcode();
		         echo $qrcode_tools->png($url);
				//QRcode::png($url);
			}else{
				 echo header('HTTP/1.1 404 Not Found');
			}
    }
	
	
}

还需要修改微信支付文件:

一、引用微信支付文件包中:\extend\wxpay\lib\WxPayJsPay.php  还有修改,不然后收不到值

增加接收参数代码

 

二、修改

\extend\wxpay\lib\WxPayMicroPay.php

			//$queryResult = $this->query($out_trade_no, $succResult);
			$queryResult = Db::query($out_trade_no, $succResult);

在TP5之后的写法为:

读数据使用 Db::query
写数据使用 Db::execute
基于ThinkPHP 5.1框架打造的多商户电商平台,是目前完善度领先的电商管理平台标准化产品,全新的产品模式很好地诠释电子商务在现今及未来的发展模式,强大的插件可插拔扩展制,让您在的行业电商所向披靡,系统拥有PC、手机WAP、微商城、买家APP、卖家APP、微信小程序,六端合一,六端互通,真正实现全网营销,极其适合企业及个人快速上线商务平台。 系统代码清晰易懂,大量的可视化报表便于运营者决策,丰富的营销功能让系统的应用场景广阔,良好的插件机制使系统更加易于扩展。系统操作简单,安全稳定,更新迭代快速,是广大用户直接使用和二次开发的最佳选择。 电商系统功能 (一) 系统管理:菜单权限、前台菜单、角色管理、职员管理、登录日志、操作日志、图片空间、商城消息、风格设置、计划任务 (二) 基础设置:商城配置、导航管理、广告管理、广告位置、银行管理、支付管理、地区管理、友情链接、快递管理、消息模板 (三) 会员管理:会员等级、会员管理、账号管理 (四) 文章管理:文章管理、文章分类 (五) 运营管理:推荐管理、商品推荐、店铺推荐、品牌推荐、财务管理、资金管理、提现申请、结算管理、商家结算、充值送、退款原路返回 (六) 订单管理:订单管理、投诉管理、退款管理 (七) 店铺管理:店铺认证、开店申请、店铺管理、停用店铺 (八) 商品管理:商品管理、已上架商品、待审核商品、违规商品、商品分类、商品属性、品牌管理、商品规格、评价管理 (九) 虚拟物品自动发货:虚拟商品上架、卡密管理、自动发货 (十) 扩展管理:插件管理、钩子管理 (十一) 分销管理:分销管理菜单、分销商家列表、分销商品列表、佣金分成列表、推广用户列表 (十二) 数据分析:商品销售排行、店铺销售统计、销售额统计、销售订单统计、新增会员统计、会员登录统计 (十三) 营销管理:三级分销,商品团购,限时拍卖、微砍价、优惠券、满减、满送、满包邮、签到送积分、积分商城,拼团 (十四) 微信管理:公众号设置、自定义菜单、用户管理、主动回复文本信息、主动回复图文信息、微信消息模板 (十五) 支付管理:支付支付微信支付、银联支付、货到付款、积分支付、余额支付 (十六) 短信接口:中国网建、阿里大于、阿里云-云通信、短信宝 (十七) 登录接口:QQ登录、微信登录、微博登录、支付宝登录 (十八) 物流接口:快递100接口 (十九) 其他接口:LBS、UCenter通信接口(可与社区论坛等同步登录退出)
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值