快速接入PHP微信支付

快速接入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吧,亲测运行,能发起整个支付流程。

 

快速接入PHP微信支付

上一篇:Android ActionBar 使用详解


下一篇:微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误