• 快速接入PHP微信支付


    微信支付是微信开发中坑最多的一个功能,本文旨在帮助有开发基础的人快速接入微信支付,如果要详细了解微信支付,请看微信支付的开发文档。

    再说把开发文档搬到这里来就没必要了。想要快速跑通微信支付的可以继续查看。

    微信支付分公众号支付(在微信里的网页用微信支付)、PC版扫码支付(扫码有两种模式)、APP微信支付,当初做这三种支付,还没有很多人做,

    没有资料,虽然官方提供了demo,但是出现各种问题跑不通,对着文档做, 遇到各种你想不到的坑,简直要哭,说多了都是泪....

    这里介绍一下公众号支付的流程:

    1、获取openid:最常见的用网页授权获取支付人的openid

    //使用jsapi接口
    	$jsApi = new JsApi_pub();
    
    	//=========步骤1:网页授权获取用户openid============
    	//通过code获得openid
    	if (!isset($_GET['code']))
    	{
    		//触发微信返回code码
    		$url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
    
    		Header("Location: $url"); 
    	}else
    	{
    		//获取code码,以获取openid
    	    $code = $_GET['code'];
    		$jsApi->setCode($code);
    		$openid = $jsApi->getOpenId();
    	}
    

      

    2、统一下单获取预支付id:prepay_id

    //=========步骤2:使用统一支付接口,获取prepay_id============
    	//使用统一支付接口
    	$unifiedOrder = new UnifiedOrder_pub();
    	
    	//设置统一支付接口参数
    	//设置必填参数
    	//appid已填,商户无需重复填写
    	//mch_id已填,商户无需重复填写
    	//noncestr已填,商户无需重复填写
    	//spbill_create_ip已填,商户无需重复填写
    	//sign已填,商户无需重复填写
    	$unifiedOrder->setParameter("openid","$openid");//商品描述
    	$unifiedOrder->setParameter("body","哈哈");//商品描述
    	//自定义订单号,此处仅作举例
    	$timeStamp = time();
    	$out_trade_no = WxPayConf_pub::APPID."$timeStamp";
    	$unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 
    	$unifiedOrder->setParameter("total_fee",1);//总金额
    	$unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 
    	$unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
    	//非必填参数,商户可根据实际情况选填
    	//$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号  
    	//$unifiedOrder->setParameter("device_info","XXXX");//设备号 
    	//$unifiedOrder->setParameter("attach","XXXX");//附加数据 
    	//$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间
    	//$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间 
    	//$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记 
    	//$unifiedOrder->setParameter("openid","XXXX");//用户标识
    	//$unifiedOrder->setParameter("product_id","XXXX");//商品ID
    
    	$prepay_id = $unifiedOrder->getPrepayId();
    

      

    3、封装支付参数,发起微信支付

    //=========步骤3:使用jsapi调起支付============
    	$jsApi->setPrepayId($prepay_id);
    
    	$jsApiParameters = $jsApi->getParameters();
    	
    	echo $jsApiParameters;
    

      

    得到上述的支付参数$jsApiParameters,前端就可以发起微信支付了!

    公众号支付最常见的错误有:

    1、签名错误

    2、支付参数缺少appid

    3、当前url未注册

    4、.......其他各种错误

    扫码支付有两种模式

    扫码模式一:静态二维码方式,即固定金额的扫码支付方式,适用于提前生成二维码,金额固定,扫码支付

    扫码模式二:动态二维码方式,即根据订单金额动态生成二维码,PC版扫码支付即接入这种方式。

    今天就写到这里吧,有点忘记了。

    续上...

    还是直接整理出完整的demo吧,亲测运行,能发起整个支付流程。

    需要完整代码加使用教程的可以联系 851 488 243,备注:微信支付 

    公众号支付

     

    扫码支付模式一

    扫码模式二

    使用教程

  • 相关阅读:
    SpringMVC金课-课程大纲
    Type Cannot change version of project facet Dynamic Web Module to 3.0.
    使用maven 创建web项目 + 搭建SSM框架
    多文件上传
    asp.net 连接access数据库方法
    分享代码
    DIV+CSS解决IE6,IE7,IE8,FF兼容问题(转至http://www.douban.com/note/163291324/)
    asp.net发布网站(转)
    Img垂直居中
    http://www.apkbus.com/android-6231-1.html
  • 原文地址:https://www.cnblogs.com/memor-y/p/7252589.html
Copyright © 2020-2023  润新知