快速接入PHP微信支付

微信支付是微信開發中坑最多的一個功能,本文旨在幫助有開發基礎的人快速接入微信支付,若是要詳細瞭解微信支付,請看微信支付的開發文檔。php

再說把開發文檔搬到這裏來就不必了。想要快速跑通微信支付的能夠繼續查看。前端

微信支付分公衆號支付(在微信裏的網頁用微信支付)、PC版掃碼支付(掃碼有兩種模式)、APP微信支付,當初作這三種支付,尚未不少人作,api

沒有資料,雖然官方提供了demo,可是出現各類問題跑不通,對着文檔作, 遇到各類你想不到的坑,簡直要哭,說多了都是淚....微信

這裏介紹一下公衆號支付的流程:微信開發

一、獲取openid:最多見的用網頁受權獲取支付人的openidapp

//使用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();
	}

  

 

二、統一下單獲取預支付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();

  

 

三、封裝支付參數,發起微信支付url

//=========步驟3:使用jsapi調起支付============
	$jsApi->setPrepayId($prepay_id);

	$jsApiParameters = $jsApi->getParameters();
	
	echo $jsApiParameters;

  

獲得上述的支付參數$jsApiParameters,前端就能夠發起微信支付了!spa

 

公衆號支付最多見的錯誤有:3d

一、簽名錯誤

二、支付參數缺乏appid

三、當前url未註冊

四、.......其餘各類錯誤

掃碼支付有兩種模式

掃碼模式一:靜態二維碼方式,即固定金額的掃碼支付方式,適用於提早生成二維碼,金額固定,掃碼支付

掃碼模式二:動態二維碼方式,即根據訂單金額動態生成二維碼,PC版掃碼支付即接入這種方式。

今天就寫到這裏吧,有點忘記了。

續上...

仍是直接整理出完整的demo吧,親測運行,能發起整個支付流程。

須要完整代碼加使用教程的能夠聯繫 851 488 243,備註:微信支付 

公衆號支付

 

 

 

 

掃碼支付模式一

 

掃碼模式二

 

使用教程

相關文章
相關標籤/搜索