導航:首頁 > 編程語言 > weixinjsbridge2017

weixinjsbridge2017

發布時間:2023-09-13 19:55:24

1. 如何用PHP實現微信支付,求教。新手!說明詳細點

微信公眾號jsAPI支付
一:配置參數
申請成功後,獲取介面文件, 將所有文件放入項目根目錄weixin下,在WxPay.ub.config.php中填入配置賬戶信息;

二:設置授權
開發者中心->網頁服務->網頁授權獲取用戶基本信息->修改;
「授權回調頁面域名修改成你的域名地址即可,須保證網頁授權已獲得,不然會報redirect_uri 參數錯誤;

三:網頁授權獲取用戶openid
js_api_call.php 請求文件中改動(所有傳給微信的參數都在入口文件中接收)
$out_trade_no = $_GET['out_trade_no']; //商戶系統內部訂單號 32個字元內
$total_fee = $_GET['total_fee']*100; //訂單總金額 單位為分,不能帶小數點,所以須把價格乘以100,
不然獲取prepay_id時會報錯誤(設置金額欄位時最好設為小數點後2位)
$pay_status = get_pay_status($out_trade_no);//查看訂單支付狀態
$return_url = get_return_url($out_trade_no); //設置支付成功後跳轉頁面
//使用jsapi介面
$jsApi = new JsApi_pub();
//通過code獲得openid
if (!isset($_GET['code'])) { //觸發微信返回code碼
//設置redirect_uri參數,返回code碼地址,其實就是重定向到當前頁面,獲取用戶code碼參數
$url = WxPayConf_pub::JS_API_CALL_URL."?showwxpaytitle=1&out_trade_no=$out_trade_no&total_fee=$total_fee";
$url = $jsApi->createOauthUrlForCode($url);
Header("Location: $url");
}else{ //獲取code碼,以獲取openid
$code = $_GET['code'];
$jsApi->setCode($code);
$openid = $jsApi->getOpenId(); //用戶標識
}
再就是WxPayHubHelper.php文件 JsApi_pub()類下createOauthUrlForCode($redirectUrl)方法, 第二個參數
改為 $urlObj["redirect_uri"] = urlencode($redirectUrl); //對$url變數進行url編碼 不然header重定向時無法獲取訂單號和金額

四:設置統一支付介面參數,獲取prepay_id (預支付ID 微信生成的預支付 ID,用於後續介面調用中使用)
微信支付->開發配置->支付測試->測試授權目錄和測試白名單添加
(支付授權目錄需要精確到最細一級的目錄,且在使用時,目錄名稱後直接加文件名,如ccc.com/weixin/)
確保你 WxPayPubHelper.php文件里 UnifiedOrder_pub 這個類的getPrepayId這個方法能正常使用
這一步的調試在 getPrepayId()內 var_mp($this->result); 就能看到錯誤代碼;
posXml這個方法後調用了createXml這個方法
function postXml() {
$xml = $this->createXml();
//**在此處查看xml文件是否正常生成
include_once("log_.php");
$log = new Log_();
$log->log_result("log.txt",$xml);
//** 由於列印一些xml格式的文件只顯示字元長度,不顯示內容。於是用log的形式寫在伺服器上調試
$this->response = $this->postXmlCurl($xml,$this->url,$this->curl_timeout);
return $this->response;
}
保證xml這個變數格式如下;
<xml><openid><![CDATA[UKqsyD_711nkk2c]]></openid>
<body><![CDATA[pay]]</body>
<out_trade_no>201504101658571802></out_trade_no>
<total_fee>120</total_fee>
<notify_url><![CDATA[http://www.hao123.com/weixin/notify_url.php]]></notify_url>
<trade_type><![CDATA[JSAPI]]></trade_type>
<appid><![CDATA[wxfd3c4asdf]]></appid>
<mch_id>123334333102</mch_id>
<spbill_create_ip><![CDATA[192.168.0.1]]></spbill_create_ip>
<nonce_str><![CDATA[imsdasdcmlkhfa]]></nonce_str>
<sign><![CDATA[CBE62F36806A3E1]]></sign></xml>
參數正確,postXmlCurl才能正確提交,提交後就能得到正確的prepay_id,就能彈出支付框了

五:使用jsapi調起支付
根據prepay_id生成jsapi支付參數
$jsApi->setPrepayId($prepay_id);
$jsApiParameters = $jsApi->getParameters();
//調用微信JS api 支付
function jsApiCall() {
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
<?php echo $jsApiParameters; ?>,
function(res){
WeixinJSBridge.log(res.err_msg);
if(res.err_msg == "get_brand_wcpay_request:ok") { //支付成功後
window.location.href="<?php echo $return_url;?>" //跳轉地址及訂單操作,在非同步頁面也須處理訂單,防止同步時失敗
}else{
alert("支付失敗"+res.err_code+res.err_desc+res.err_msg);
}
}
);
}(每次請求callpay方法時須判斷訂單狀態,防止重復提交)

六:通用通知介面 非同步處理微信返回結果
支付完成後,notify.php中獲取微信的回調
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
//須驗證簽名,並回應微信。
if($notify->checkSign() == TRUE) //簽名驗證通過並更新訂單狀態後
$notify->setReturnParameter("return_code","SUCCESS"); //設置返回碼,保證支付狀態改變後才返回成功
//對後台通知交互時,如果微信收到商戶的應答不是成功或超時,微信認為通知失敗,
//微信會通過一定的策略(如30分鍾共8次)定期重新發起通知,
$returnXml = $notify->returnXml();
echo $returnXml;(將xml數據返回微信 當return_code為SUCCESS時,不會再通知)
//當收到通知進行處理時,首先檢查對應業務數據的狀態,判斷該通知是否已經處理過,如果沒有處理過再進行處理,
如果處理過直接返回結果成功。在對業務數據進行狀態檢查和處理之前,要採用數據鎖進行並發控制,
以避免函數重入造成的數據混亂.
//判斷是否在微信瀏覽器打開
function isWeiXin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
return true;
}else{
return false;
}
}

步驟夠詳細了吧,我自己實現過,所以寫了日誌,結合php版本的demo 大致弄得出來了,如果對整個流程不太清楚,仔細的看完微信公眾號支付介面文檔,你申請微信公眾號支付成功了就會有的,

2. 如何在APP上實現 一鍵關注微信公眾賬號

微信公眾平台一鍵關注代碼 今天有朋友問了如何在網頁上或是其它地方直接點擊一個按鈕或是鏈接實現直接關注服務號的功能,現在把資料分享給大家。

在微信上,通過公眾平台推送給用戶的文章,是在微信內部直接打開的,用的無外乎就是一個微信內置瀏覽器控制項(IOS上,Android上也差不多)。但特殊的是,微信官方在這裡面加了一個默認的Js API--WeixinJSBridge,通過它,能直接在該頁面上做這些操作:
1、將文章分享到微信朋友圈
2、將文章直接發送給微信上的好友
3、將文章分享到騰訊微博
4、關注指定用戶
以上這些操作,都是通過WeixinJSBridge.invoke介面來完成的。
//通過關注微信好友 下面是代碼

function WeiXinAddContact(wxid, cb)
{
if (typeof WeixinJSBridge == 'undefined') return false;
WeixinJSBridge.invoke('addContact', { webtype: '1', username: wxid },
function(d) {
// 返回d.err_msg取值,d還有一個屬性是err_desc // add_contact:cancel 用戶取消 // add_contact:fail 關註失敗
// add_contact:ok 關注成功 // add_contact:added 已經關注
WeixinJSBridge.log(d.err_msg); cb && cb(d.err_msg); });
};
//通過微信分享
function WeiXinShareBtn() { if (typeof WeixinJSBridge== "undefined")
{ alert("請先通過微信xxxx"); } else { WeixinJSBridge.invoke('shareTimeline',
{ "title": "微信資訊網", "link": "微信公眾平台開發", "desc": "歡迎關注微時代為您搜羅最新最尖端的微信資訊。
內容包括微信公眾平台開發、微信營銷方案策略、微信操作指南, 好玩有趣的微信公眾賬號導航、微信游戲攻略、微信最新版本,
最新功能等更多更全面的微信資訊信息。", "img_url": "微信公眾平台開發" });
}
}

復制代碼
使用方法:

<a data-cke-saved-href="#" href="#" onclick="WeiXinAddContact
('<span style=" background-color:#ff0000;"="">
gh_5f81fbb868d8
<a data-cke-saved-href="#" href="#" onclick="WeiXinAddContact('<span style=" background-color:#ff00

微信公眾平台官方宣布微信溝通介面正式上線,用戶可以在移動應用中,點擊跳轉到微信客戶端內,用戶已關注公眾號時會進入會話界面,未關注則進入資料頁。 這是上月底微信公開語義理解介面之後微信官方公布的另外一個重量級的API。 微信溝通介面只支持微信客…

顯示全部

微信公眾平台官方宣布微信溝通介面正式上線,用戶可以在移動應用中,點擊跳轉到微信客戶端內,用戶已關注公眾號時會進入會話界面,未關注則進入資料頁。
這是上月底微信公開語義理解介面之後微信官方公布的另外一個重量級的API。
微信溝通介面只支持微信客戶端5.3版本及以上,如果用戶使用的微信客戶端版本低於5.3版本,則無法正常喚起公眾號。而且開發者需要到「管理中心」創建移動應用,點擊「創建移動應用」,填寫相關資料,審核通過的應用才能進行開發。
具體開放規則如下:
通過微信開發者資質認證的開發者,其帳號下所有的移動應用和公眾號應用自動獲得微信溝通許可權。 移動應用可以喚起同在一個開放平台帳號下的任意一個公眾號。
接入流程:
在微信開放平台(http://open.weixin.qq.com)注冊開放平台開發者賬號; 登錄微信開放平台,進入「帳號中心」頁申請開發者資質認證; 前往「管理中心」界面提交移動應用申請,綁定公眾號; 前往「資源中心」下載iOS開發工具包或者Android開發工具包,內置到移動應用中,然後查看開發文檔進行開發。

3. weixinjsbridge 和jssdk一樣嗎

不一樣!!!weixinjsbridge 是微信開發者平台提供的jia包! 沒有ssdk的功能全面 weixinjsbridge是但一方面的 而ssdk 卻是一個集合

4. 如何控制微信分享網頁時,展示的標題,描述和圖片

設置微信分享的網頁展示圖片、標題、描述的方法如下:

在<head></head>標簽內加上一個meta標簽

<meta name="sharecontent" data-msg-img="你的縮略圖地址" data-msg-title="你的標題" data-msg-content="你的簡介" data-msg-callBack="" data-line-img="你的縮略圖地址" data-line-title="你的標題" data-line-callBack=""/>

微信公眾號的文章分享格式也是這樣的。

5. 為什麼修改標題分享微信還是不變,微信分享到朋友圈,朋友JS代碼

您好!很高興能為您解答, 具體需要加入什麼可以實現微信分享有效代碼:

<script>

var imgUrl = "圖片地址";

var lineLink = "網址";

var descContent = '描述語';

var shareTitle = '標題';

var appid = '';

function shareFriend() {

WeixinJSBridge.invoke('sendAppMessage',{

"appid": appid,

"img_url": imgUrl,

"img_width": "200",

"img_height": "200",

"link": lineLink,

"desc": descContent,

"title": shareTitle

}, function(res) {

//_report('send_msg', res.err_msg);

})

}

function shareTimeline() {

WeixinJSBridge.invoke('shareTimeline',{

"img_url": imgUrl,

"img_width": "200",

"img_height": "200",

"link": lineLink,

"desc": descContent,

"title": shareTitle

}, function(res) {

//_report('timeline', res.err_msg);

});

}

function shareWeibo() {

WeixinJSBridge.invoke('shareWeibo',{

"content": descContent,

"url": lineLink,

}, function(res) {

//_report('weibo', res.err_msg);

});

}

// 當微信內置瀏覽器完成內部初始化後會觸發WeixinJSBridgeReady事件。

document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {

// 發送給好友

WeixinJSBridge.on('menu:share:appmessage', function(argv){

shareFriend();

});

// 分享到朋友圈

WeixinJSBridge.on('menu:share:timeline', function(argv){

shareTimeline();

});

// 分享到微博

WeixinJSBridge.on('menu:share:weibo', function(argv){

shareWeibo();

});

}, false);

</script>

6. 微信分享鏈接時,怎樣才能帶上帶縮略圖和簡介

試了好多遍,最後發現辦法就是——用微信公眾號網頁版生成的長鏈接!

這個復制的鏈接非常非常非常重要!公眾號在手機端生成、轉發的都是短鏈接。只有長鏈接才有題目+縮略圖+部分正文的效果。

如何獲得長鏈接?

如果你是公眾號運營者,要在公眾號網頁端「已群發消息」裡面打開推文復制鏈接。

如果不是公眾號運營者,別的公眾號運營者用上述方式轉發到微博的長鏈接(發現別的公眾號也能顯示題目+縮略圖+部分正文),也是可以復制的。

獲得這個長鏈接之後,不管是在電腦端還是用手機端復制粘貼到微博,都是可以的。直接發送就可以,超級簡單,不需要任何第三方。

目前嘗試只有這個方法有效,可以自動帶標題、頭圖縮略圖、部分文章內容,但不能帶公眾號名稱和摘要。

閱讀全文

與weixinjsbridge2017相關的資料

熱點內容
如何編輯歌曲文件格式 瀏覽:638
cf無限領取cdk工具 瀏覽:350
如何讓手機文件保存到電腦上 瀏覽:459
sa資料庫默認密碼是多少 瀏覽:191
電腦正在查找文件 瀏覽:541
一個文件盒省內寄順豐多少錢 瀏覽:41
誅仙62坐騎怎麼升級到63 瀏覽:926
linux以日期查看日誌記錄 瀏覽:446
工業大數據是什麼東西 瀏覽:881
魅族note3怎麼重置網路 瀏覽:510
c語言程序設計模 瀏覽:92
兒童怎麼做可編程機 瀏覽:603
數據計算屬於什麼統計學 瀏覽:921
07word怎麼去掉標記 瀏覽:979
qq緩存的數據是什麼 瀏覽:348
LED主Kv文件多少兆 瀏覽:856
蘋果edge怎麼刪除下載文件 瀏覽:471
sas邏輯回歸代碼 瀏覽:572
用於keil下的stc器件資料庫 瀏覽:400
新聞網站後台如何操作前台 瀏覽:539

友情鏈接