thinkphp 3.2 公众号微信支付例子

参考:https://www.cnblogs.com/txw1958/p/wxpayv3-jsapi.html

1、controller代码:

public function demo() {
		//登录用户ID
	    $uid = 0;
	    if(!session('?uid')){
            $obj->status = -1;
	        $obj->msg = '您还没有登录';
			
	        echo json_encode($obj);
	        die;
        }
        $uid = $_SESSION['uid'];
        	
		vendor('Wxpay/example/WxPay#JsApiPay');//引入文件

		try{
 
			//$tools = new JsApiPay();
			$tools = new \JsApiPay();
			$openId = $tools->GetOpenid();
			
			$mode = M("user"); // 实例化user对象	
			if($openId != '') {
				$data["wx_openid"] = $openId;
				$result = $mode->where('user_id='.$uid)->data($data)->save();
			}
			$data = $mode->where("user_id=".$uid)->find();  
			$openId = $data["wx_openid"];
			
			//echo 'openId:'.$openId;
			//die;
 
			//②、统一下单
			$input = new \WxPayUnifiedOrder();
			$input->SetBody('测试');        //商品描述
			//$input->SetAttach("test");    //附加数据暂未使用到可以注释掉	
			//$input->SetOut_trade_no("sdkphp".date("YmdHis"));//商户订单号,此处订单号根据实际项目中订单号进行赋值,要求32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一
			$input->SetOut_trade_no('2019110816085076');//商户订单号,此处订单号根据实际项目中订单号进行赋值,要求32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一
			
			$input->SetTotal_fee("1");      //订单总金额,单位为分
			//$input->SetTotal_fee("".($sum_all_price*100));      //订单总金额,单位为分
			
			$input->SetTime_start(date("YmdHis"));//订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010
			$input->SetTime_expire(date("YmdHis", time() + 600));//订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。订单失效时间是针对订单号而言的,由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期,所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id
			//$input->SetGoods_tag("test");//订单优惠标记,使用代金券或立减优惠功能时需要的参数,项目暂未使用到,因此注释掉
			$input->SetNotify_url("http://paysdk.weixin.qq.com/notify.php");//异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
			$input->SetTrade_type("JSAPI");//交易类型JSAPI 公众号支付;NATIVE 扫码支付;APP APP支付;
			$input->SetOpenid($openId);
			$config = new \WxPayConfig();
			$order = \WxPayApi::unifiedOrder($config, $input);
			//echo '统一下单支付单信息
'; //echo 'openId='.$openId.'
'; //$this->printf_info($order); //die; $jsApiParameters = $tools->GetJsApiParameters($order); //获取共享收货地址js函数参数 $editAddress = $tools->GetEditAddressParameters(); //将数据渲染到模板中或前端页面中 $assign=array( 'data'=>$jsApiParameters, 'jsApiParameters'=>$jsApiParameters ); $this->assign($assign); //$this->display(); } catch(Exception $e) { Log::ERROR(json_encode($e));//此处因为没有使用微信日志方法,所以暂未引入日志类 } $this->display('demo'); } public function printf_info($data) { foreach($data as $key=>$value){ echo "$key : ".htmlspecialchars($value, ENT_QUOTES)."
"; } } public function notify() { vendor('Wxpay.example.notify'); $config = new \WxPayConfig(); $notify = new \PayNotifyCallBack(); $res = $notify->Handle($config, false); }

2、模板demo.html代码:



    
    微信安全支付
    


    



 

你可能感兴趣的:(thinkphp,微信支付)