微信小程序支付(php tp5)

29 篇文章 0 订阅

1.去微信官方下载支付相对应的SDK和DEMO:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
2.把解压过后的文件夹放到项目的 public 目录下
3.进入 wxpay/example/jsapi.php 把下面三个文件引入到你要支付的哪个控制器里面 ,

require_once "/wxpay/lib/WxPay.Api.php";
require_once "/wxpay/example/WxPay.JsApiPay.php";
require_once '/wxpay/example/log.php';

4.把 wxpay/example/jsapi.php 以下代码放入支付的方法里

//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
//②、统一下单
$input = new \WxPayUnifiedOrder();
$input->SetBody("支付测试");//商品名称
$input->SetAttach("wechat");//附加参数
$input->SetOut_trade_no(\WxPayConfig::MCHID.date("YmdHis"));//订单号
$input->SetTotal_fee(1);//支付金额/*$fee*/
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
//echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>';
//printf_info($order);
$jsApiParameters = $tools->GetJsApiParameters($order);
//获取共享收货地址js函数参数
$editAddress = $tools->GetEditAddressParameters();

《4.0》支付的方法

 public function vip_pay(){
        $tools = new \JsApiPay();
        $money = input('post.money');
        $openId = input('post.openid');

        $member = Db::name("cms_member")->where("openid",$openId)->find();

        if ($member['vip'] == 2){
           // echo 111;
            return api_json(400,null,"您已经是会员啦~~");
        }

        //②、统一下单
        $input = new \WxPayUnifiedOrder();
        $input->SetBody("11");//商品名称
        $input->SetAttach("wechat");//附加参数
        $input->SetOut_trade_no(\WxPayConfig::MCHID.date("YmdHis"));//订单号
        $input->SetTotal_fee($money*100);//支付金额/*$fee*/
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
        $input->SetTrade_type("JSAPI");
        $input->SetOpenid($openId);
        $order = \WxPayApi::unifiedOrder($input);
        //echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>';
        //printf_info($order);
        $jsApiParameters = $tools->GetJsApiParameters($order);

        return api_json(200,$jsApiParameters,'ok');


    }

5.配置 wxpay/lib/wxpay.config.php

   const APPID = ''; //小程序APPid
    const MCHID = ''; //商户号
    const KEY = ''; // 商户支付密钥
    const APPSECRET = ''; //小程序秘钥

6.支付成功或失败的回调

  public function vip_status(){
       // halt(111);
        $member_id = input('post.member_id');
        $money = input('post.money');
        $pra = "高级会员";
        $time = time();
        $data=[
            'name'=>$member_id,
            'money'=>$money,
            'content'=>$pra,
            'create_time'=>$time
        ];
        $money = Db::name("cms_money")->insert($data);

        // 支付成功发送消息
        $praName = Db::name("cms_practice")->where("id",$pra)->find();
        $msage = [
            'title'=>"支付成功",
            'content'=>"您购买的".$praName['practice']."支付成功",
            'create_time'=>$time,
            'member_id'=>$member_id,
            'type'=>2
        ];
        Db::name("cms_msg")->insert($msage);
        if ($money){
            Db::name("cms_member")->where("id",$member_id)->setField('vip',2);
            Db::name("cms_member")->where("id",$member_id)->setField('end_time',strtotime("+1 year"));
            Db::name("cms_member")->where("id",$member_id)->setField('vip_lv',"高级会员");
            return api_json(200,'','支付成功');
        }else{
            return api_json(400,'','支付失败');
        }
    }

<微信公众号支付的话把 wxpay/example/jsapi.php 的js代码放到统一下单之后的页面>

 <script type="text/javascript">
        //调用微信JS api 支付
        function jsApiCall()
        {
            WeixinJSBridge.invoke(
                'getBrandWCPayRequest',
                <?php echo $jsApiParameters; ?>,
                function(res){
                    if(res.err_msg=="get_brand_wcpay_request:ok"){
                    	if(document.getElementById("typr").value==1){
                    		//alert("支付成功!");
                        window.location.href = 'http://bxd.uiang.cn/home/recharge/paysuccess?free='+<?php echo $num; ?>;
                    	}else{
	                    	//alert("支付成功!");
	                        window.location.href = 'http://bxd.uiang.cn/home/recharge/notify11?free='+<?php echo $num; ?>;	
                    	}
                        
                    }else if(res.err_msg=="get_brand_wcpay_request:cancel"){
						//alert("未支付!");
                       window.location.href = 'http://bxd.uiang.cn/home/recharge/top';
                    }
                    // window.location.href = "{:url('/Recharge/notify')}";
                }
            );
        }

        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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值