1. 程式人生 > >PHP應用如何對接微信公眾號JSAPI支付

PHP應用如何對接微信公眾號JSAPI支付

    微信支付的產品有很多,1. JSAPI支付  2. APP支付  3. Native支付  4.付款碼支付  5. H5支付。 其中基於微信公眾號開發的應用選擇“JSAPI支付“產品,其他APP支付需要“微信開放平臺”,H5支付可以在微信以後瀏覽器通過一個連結調起微信支付,根據自身的業務場景選擇,各產品對接方式基本一致,這裡主要講公眾號支付。

涉及平臺: 

微信商戶平臺: https://pay.weixin.qq.com/

微信公眾平臺: https://mp.weixin.qq.com/

 

微信商戶平臺的操作部分

1. 沒有賬號按要求提交資料稽核。

2. 通過後記錄mch_id,md5_key,以及下載好相關的API安全操作證書,賬戶中心。

3. 進入產品中心,開通對應的支付產品,比如“JSAPI支付”。

4. 找到“APPID授權管理”,點選關聯更多AppID。

5. 填寫公眾號的AppID,或者小程式的AppID等。

6. 點選開發配置的公眾號支付,新增與自己專案對應的域名及目錄。

 

微信公眾平臺的操作部分

1. 登入公眾平臺,開啟“公眾號設定”,記錄原始ID。

2. “功能設定”中,新增專案的業務域名,JS介面安全域名,網頁授權域名。

3. 在自己應用中通過對接公眾號需要對應的AppID,AppSecret,並把自己伺服器IP為加入白名單。

4. 應用中通過介面時,生成Tonken, 和EncodingAESKey並記錄下來。

5. 進入微信公眾平臺,開啟基本配置,伺服器配置,填寫應用的入口地址和上面引數,最後啟用即可。

 

應用程式部分

1. 前端

引入jweixin的SDK到頁面中,通過一個介面地址獲取預支付id,再使用SDK方法調起支付。

var ua = window.navigator.userAgent.toLowerCase();

if(paytype!=1 && ua.match(/MicroMessenger/i) == 'micromessenger') {		// 微信公眾號支付
	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{

		$.ajax({
			type: "GET",
			url: "{php echo $this->createMobileUrl('pay')}",
			data: {type:type,rid:rid},
			dataType: "json",
			success: function(data) {
				var jsApiParameters = data;
				console.log('FC測試: '+jsApiParameters);
				WeixinJSBridge.invoke('getBrandWCPayRequest', jsApiParameters, function(res) {
						WeixinJSBridge.log(res.err_msg);
						if(res.err_msg == "get_brand_wcpay_request:ok") {
							window.location.reload();
						}
					}
				);
			}

		});
	}

}

2. 後端

if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {      // 微信瀏覽器
	
	$notify_url = $_W['siteroot'].'addons/xxxxx/wxpay.php';					// 支付後的回撥地址

	$model = new HcfkModel();	// 可無視
	$url = "https://api.mch.weixin.qq.com/pay/unifiedorder";                    // 請求預下單介面
	file_put_contents(IA_ROOT."/addons/xxxxx/trade",$trade_no);
	$data["appid"] = $wechat_payment['appid'];								// 微信商戶平臺AppID
	$data["body"] = '對訂單描述一下';
	$data["mch_id"] = $wechat_payment['mchid'];								// 微信商戶平臺的商戶ID
	$data["nonce_str"] = $model->getRandChar(32);
	$data["notify_url"] = $notify_url;
	$data["out_trade_no"] = $trade_no;
	$data["spbill_create_ip"] = $model->get_client_ip();
	$data["total_fee"] = $money*100;
	$data["trade_type"] = "JSAPI";
	$data["openid"] = $openid;												// 使用者網頁授權後的OpenID,使用者對某一公眾號是唯一
	$data["sign"] = $model->getSign($data,$wechat_payment['signkey']);		// 對以上請求引數進行加密,加密方式各異,大部分md5
	//echo "<pre>";print_R($data);die;
	$xml = $model->arrayToXml($data);
	$response = $model->postXmlCurl($xml, $url);
	$ress = $model->xmlstr_to_array($response);
	if($ress['return_code']=='FAIL') {
		exit(json_encode(array('code'=>0,'msg'=>$ress['return_msg'])));
	}
	if($ress['result_code']=='FAIL'){
		return $this->result(1, '操作失敗',$ress['err_code'].$ress['err_code_des']);
	}
	if($ress['return_code']=='SUCCESS'){                                            // 預下單成功返回支付“需要的引數”
		$datas["appId"] = $wechat_payment['appid'];                                 // appid
		$datas["nonceStr"] = $model->getRandChar(32);                               // 32位隨機串
		$datas["package"] = "prepay_id=".$ress['prepay_id'];                        // 預支付id
		$datas['signType'] = "MD5";
		$datas["timeStamp"] = time().'';
		$datas["paySign"] = $model->MakeSign($datas,$wechat_payment['signkey']);    // 簽名
		exit(json_encode($datas));
	}else{
		exit(json_encode(array('code'=>0,'msg'=>'操作失敗')));
	}

}

 

公眾號

相關推薦

PHP應用如何對接公眾JSAPI支付

    微信支付的產品有很多,1. JSAPI支付  2. APP支付  3. Nativ

php公眾JSAPI支付

首先是生成簽名方法 //生成簽名 private function MakeSign($params, $KEY) { //簽名步驟一:按字典序排序陣列引數 ksort($params);

公眾JSAPI支付-多公眾向同一商戶支付的問題解決

chapter 發現 jsapi abc oca back bcd -c coo 一、背景   項目提供公眾號商城集成,在公眾號裏進行商品的購買,並與多家公眾號合作增加渠道流量。 。 二、實現   有關微信公眾號、商戶號的開通與支付綁定不細說   從背景裏可知,我們需要實現

java對接公眾獲取使用者基本資訊

package com.xcd.zc.controller; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingExc

php 公眾呼叫支付

記得原來弄過幾次每次說要整理哈沒有時間,今天一定要整理哈 方便下次使用。 這個是基於 tp 框架寫的。 首先我們從訂單提交來說。 表單提交之後我們會生成一個訂單id 參考的是白哥的部落格。 大概這個樣子  其實不用那麼多引數 傳一個訂單號就行了 後面在查一次。

php curl 模擬公眾登入

<span style="font-size:18px;"><?php //模擬微信登入 $cookie_file = tempnam('./temp','cookie'); $login_url = 'https://mp.weixin.qq.

PHP開發之公眾中進行支付支付

想必很多人都有過要在微信公眾號中進行支付寶支付的經歷,但是微信又遮蔽了阿里系所有的東西,網上百度了很多,都沒有完整的解決方案,可謂萬坑叢中過啊。剛剛踩完坑的袁小威就迫不及待的分享給大家咯。 切入正題,其實支付寶官方就微信公眾號中使用支付寶支付是

公眾H5支付-JAVA版

微信開發之微信公眾號H5支付-JAVA版   引子   從事JAVA開發一年多了,一直都在看部落格園,CSDN的部落格,從很多前人哪裡學習了很多,突然覺得自己也要盡一份力,寫點部落格自己給自己做做記錄,也給要開發微信人提提醒少遇點坑。   很多人開發微信的時候,總是在抱怨微

公眾h5支付 以及獲取code(前端部分)

記錄微信公眾號h5支付(前端部分) 前一段時間換了一家公司,剛來給了一個專案,h5移動端頁面,涉及登陸註冊、微信繫結、購買等。微信支付之前沒做過,不過比較簡單,在這裡記錄一下。 先上官網文件 微信支付 微信獲取code 第一步,先拿到code,拿到code傳給後臺。

公眾網頁支付詳解

$.ajax({ type: "post", url: "https://xueyi.gzyouquan.com/Miniapp/api/accountOrder/getsun.do", dataType:

vue做公眾分享,支付

在前段時間做了一個微信公眾號,因為我又是新手,沒什麼經驗,拿起vue就開始,導致一坑再坑,簡直闊怕!!! 對於此次專案,我主要用到的是vue的整框架和必要的外掛,但是我沒用vuex,用vuex的話會方便很多很多 1.首先從認證獲取openid說起; 因為我

thinkphp5+easywechat:公眾支付

 前幾天寫了一下使用tp5和easywechat整合微信掃碼支付的方法(可以點這裡檢視),裡面已經說過咱們安裝easywechat了,這裡就不在重複說明了,直接寫整合的步驟了:     1,相關的配置請參考之前的第一篇文字     2,頁面樣子如下: 頁面程式碼

vue開發專案公眾授權支付開發

router.beforeEach((to, from, next) => {  /**   * 檢測當前是否需要登入驗證   * 1. 確定當前頁面是否需要登入   */  if (!__getItem('isOauth')) {    // 微信授權    if (!getUrlKey('code'

公眾H5支付

//將統一下單引數進行字典序排序,進行簽名 /** * 微信支付簽名演算法(詳見:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3). * * @param params 引數資訊 * @param signT

公眾實現支付功能(基於官方sdk實現)--備忘001

首先要明白微信支付相關的三個賬號1:一定要認真閱讀官方開發文件,不然好多坑啊官方sdk-maven<dependency> <groupId>com.github.wxpay</groupId>

vue.js中公眾支付支付失敗bug解決辦法

微信公眾號中呼叫支付寶支付需要在瀏覽器中開啟支付連結然後呼叫支付才可以。具體方法:1、檔案 2、 我們使用的是post方法提交。下面是在vue.js中使用的方法總結1、建立alipay頁面路由,調起瀏覽器支付提示頁面。(樣式太多,省略)<template>  &l

php公眾支付接口開發demo

targe param pre space secret 修改 pen host field 本支付接口使用Yii2框架,所以控制器的格式都是該框架的,不過放到其他框架都差不多,根據對應的規則修改一下控制器的方法名字就行了,親測有效,比較簡單,沒有封裝,想了解微信支付實現

樹莓派與公眾對接(python)

需要 lan upd alt cnblogs col spa render 80端口 一 內網穿透,讓外網可以訪問樹莓派 二 樹莓派對接微信 需要安裝webpy和python-lxml git clonegit://github.com/webpy/webpy.git

php公眾開發三公牛牛房卡平臺搭建使用php7要註意的地方

mar shadow 公眾號開發 jpg oss 文檔 微信公眾號開發 dem proc 開啟微信公眾號開發三公牛牛房卡平臺搭建網站(h5.fanshubbs.com聯系Q1687054422),從微信開發文檔中下載demo 如下載php示例代碼 示例代碼中是使用“$GL

利用公眾快速推廣APP應用

一鍵 競爭 展現 就是 公眾 不但 留住 內部 粉絲   在APP推廣工作中,新媒體起到了至關重要的作用。新媒體對於信息傳播的快速、高效、多元化,可以很好地將APP平臺的功能、服務、資訊、活動等內容傳遞給用戶群體,並且在用戶中匯聚成完整的品牌內涵。   新媒體也即用數字化