㈠ 微信支付商戶簽名錯誤
官方文檔內容如下:
備註:prepay_id 通過微信支付統一下單介面拿到,paySign 採用統一的微信支付 Sign 簽名生成方版法,注意這里 appId 也要參權與簽名,appId 與 config 中傳入的 appId 一致,即最後參與簽名的參數有appId, timeStamp, nonceStr, package, signType。
其實根本不是這么回事,完全是扯犢子,參與簽名的參數根本不不上面列出的,
實際的簽名字元串應該是:"appId="+appId+"&nonceStr="+noncestr + "&package=prepay_id="+prepay_id+"&signType=MD5&timeStamp="+timestamp+"&key="+key
這里的key是微信商戶平台(pay.weixin.qq.com)-->賬戶設置-->API安全-->密鑰設置
這里設置的密鑰。
騰訊他娘的狗屎文檔,寫得真他娘爛。
㈡ 微信開發者 jssdk怎麼使用
、先登錄微信公眾平台進入「公眾號設置」的「功能設置」里填寫「JS介面安全域名」。
備註:登錄後可在「開發者中心」查看對應的介面許可權。
2、頁面引入JS:http://res.wx.qq.com/open/js/jweixin-1.0.0.js
3、所有需要使用JS-SDK的頁面必須先注入配置信息
wx.config({
debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會列印。
appId: '', // 必填,公眾號的唯一標識
timestamp: , // 必填,生成簽名的時間戳
nonceStr: '', // 必填,生成簽名的隨機串
signature: '',// 必填,簽名,見附錄1
jsApiList: [] // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});
4、簽名演算法
生成簽名之前必須先了解一下jsapi_ticket,jsapi_ticket是公眾號用於調用微信JS介面的臨時票據。正常情況下,jsapi_ticket的有效期為7200秒,通過access_token來獲取。由於獲取jsapi_ticket的api調用次數非常有限,頻繁刷新jsapi_ticket會導致api調用受限,影響自身業務,開發者必須在自己的服務全局緩存jsapi_ticket 。
㈢ 怎麼使用微信JSSDK的自定義分享功能
登錄你的微信平台,點擊「公眾號設置」。
2
點擊「功能設置」,然後點擊「設置」。
3
設置JS介面安全域名。這里填寫的是一級域名,不帶www和http。最多可以設置三個域名。設置完後點擊確定。(多說一句,相比以前的分享沒有任何域名限制,這里設置安全域名,目的是為了當發現此公眾平台發現誘導分享行為時,可以根據此域名追溯到所有分享出去的鏈接,以及通過這些鏈接增加的粉絲。這樣,微信就可以牢牢控制了你的微信平台,一旦發現違規,讓分享鏈接失效,刪除掉誘導行為增加的粉絲,是瞬間就可以完成的。因此,微信平台的開發者,一定要合理來使用分享功能,不要因小失大。等到你的微信平台被封,估計哭都來不及)
4
在開發者中心中獲取你的AppID和AppSecret,接下來在獲取令牌時,需要這兩個信息。
5
獲取令牌。在伺服器端完成,代碼如下:
function wx_get_token() {
$token = S('access_token');
if (!$token) {
$res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' .'你的AppID'.'&secret=' .'你的AppSecret');
$res = json_decode($res, true);
$token = $res['access_token'];
// 注意:這里需要將獲取到的token緩存起來(或寫到資料庫中)
// 不能頻繁的訪問https://api.weixin.qq.com/cgi-bin/token,每日有次數限制
// 通過此介面返回的token的有效期目前為2小時。令牌失效後,JS-SDK也就不能用了。
// 因此,這里將token值緩存1小時,比2小時小。緩存失效後,再從介面獲取新的token,這樣
// 就可以避免token失效。
// S()是ThinkPhp的緩存函數,如果使用的是不ThinkPhp框架,可以使用你的緩存函數,或使用資料庫來保存。
S('access_token', $token, 3600);
}
return $token;
}
注意:返回的access_token長度至少要留夠512位元組。介面返回值:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
{"access_token":"vdlThyTfyB0N5eMoi3n_aMFMKPuwkE0MgyGf_0h0fpzL8p_-0kVHY33BykRC0YXZZZ-WdxEic4","expires_in":7200}
6
獲取jsapi的ticket。jsapi_ticket是公眾號用於調用微信JS介面的臨時票據。正常情況下,jsapi_ticket的有效期為7200秒,通過access_token來獲取。
function wx_get_jsapi_ticket(){
$ticket = "";
do{
$ticket = S('wx_ticket');
if (!empty($ticket)) {
break;
}
$token = S('access_token');
if (empty($token)){
wx_get_token();
}
$token = S('access_token');
if (empty($token)) {
logErr("get access token error.");
break;
}
$url2 = sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi",
$token);
$res = file_get_contents($url2);
$res = json_decode($res, true);
$ticket = $res['ticket'];
// 注意:這里需要將獲取到的ticket緩存起來(或寫到資料庫中)
// ticket和token一樣,不能頻繁的訪問介面來獲取,在每次獲取後,我們把它保存起來。
S('wx_ticket', $ticket, 3600);
}while(0);
return $ticket;
}
介面返回值:
{"errcode":0,"errmsg":"ok","ticket":"-I98-_YWtOQg","expires_in":7200}
7
簽名,將jsapi_ticket、noncestr、timestamp、分享的url按字母順序連接起來,進行sha1簽名。
noncestr是你設置的任意字元串。
timestamp為時間戳。
$timestamp = time();
$wxnonceStr = "任意字元串";
$wxticket = wx_get_jsapi_ticket();
$wxOri = sprintf("jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s",
$wxticket, $wxnonceStr, $timestamp,
'要分享的url(從http開始,如果有參數,包含參數)'
);
$wxSha1 = sha1($wxOri);
END
步驟2 添加JS代碼
生成簽名後,就可以使用js代碼了。在你的html中,進行如下設置即可。
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
// 微信配置
wx.config({
debug: false,
appId: "你的AppID",
timestamp: '上一步生成的時間戳',
nonceStr: '上一步中的字元串',
signature: '上一步生成的簽名',
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 功能列表,我們要使用JS-SDK的什麼功能
});
// config信息驗證後會執行ready方法,所有介面調用都必須在config介面獲得結果之後,config是一個客戶端的非同步操作,所以如果需要在 頁面載入時就調用相關介面,則須把相關介面放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的介面,則可以直接調用,不需要放在ready 函數中。
wx.ready(function(){
// 獲取「分享到朋友圈」按鈕點擊狀態及自定義分享內容介面
wx.onMenuShareTimeline({
title: '分享標題', // 分享標題
link:"分享的url,以http或https開頭",
imgUrl: "分享圖標的url,以http或https開頭" // 分享圖標
});
// 獲取「分享給朋友」按鈕點擊狀態及自定義分享內容介面
wx.onMenuShareAppMessage({
title: '分享標題', // 分享標題
desc: "分享描述", // 分享描述
link:"分享的url,以http或https開頭",
imgUrl: "分享圖標的url,以http或https開頭", // 分享圖標
type: 'link', // 分享類型,music、video或link,不填默認為link
});
});
</script>
㈣ 小程序webview(H5)調用JSSDK功能指北
最核心的一個概念 :
小程序 的webview(H5頁面)中調用jssdk中的功能(比如獲取位置信息),需要有一個和小程序申請主體一致的 公眾號 賬號,在公眾號里去配置相關的jssdk信息.
1 小程序賬號
因為webview不支持個人類型,所以需要申請一個企業法人及個體工商戶類型的小程序賬號
2 公眾號賬號
要求小程序和公眾號的賬號對應的主體信息必須一致,有兩種途徑達到此目的:
先申請公眾號賬號,然後通過公眾號的快速生成小程序功能,生成步驟1的小程序賬號,這樣這兩個自然滿足同主體資格
登錄微信公眾號平台,點擊小程序管理-添加-快速注冊並認證小程序:
用和申請小程序賬號完全一致的主體信息去申請公眾號(主體類型,主體名稱,主體證件號),也能保證兩個賬號的主體資格一致(目前沒有小程序快速生成公眾號賬號的功能..)
3 域名綁定
這里需要兩個賬號都配置一下:
業務域名
首先webview指向一個外部網頁鏈接(我們的H5頁面)
<web-view src="https://abc.xxx.com.cn/cc/index.html"></web-view>
這個地址要滿足:
已經通過ICP備案域名
https協議
不支持自定義埠
不支持ip地址
不支持短鏈域名
那麼首先要在 小程序 中的'開發'-'開發設置'的'業務域名'中,將https://abc.xxx.com.cn配置進去:
JS介面安全域名
在上述h5頁面中,因為要調用jssdk的js文件:
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
因此要在公眾號設置」的「功能設置」里填寫「JS介面安全域名」
注意 :以上兩個配置地址時,都需要將配置時提供的一個文本文件按照要求上傳到H5頁面所在伺服器並確保能被訪問,用於騰訊驗證伺服器,否則是無法提交相關信息的
4 應用
jssdk提供了很多功能,但是webview中,只支持部分介面,自行查看web-view,這里以獲取位置信息為例:
通過config介面注入許可權驗證配置
所有需要使用JSSDK的頁面必須先注入配置信息,否則將無法調用:
wx.config({
appId: '', // 必填,公眾號的appid,注意不是小程序的appid
timestamp: , // 必填,生成簽名的時間戳
nonceStr: '', // 必填,生成簽名的隨機串
signature: '',// 必填,簽名
debug: true, // 選填,開啟調試模式,調用的所有api的返回值會在客戶端alert出來。
jsApiList: ['getLocation'] // 必填,需要使用的JS介面列表,這里為獲取位置信息
});
以上參數除了最後兩個,建議在後台服務中存儲和計算,具體需參考jssdk,主要思路:
利用公眾號的 appid 和 secret 去獲取 access_token
利用 access_token 去獲取 ticket
利用ticket和自行生成的( timestamp , nonceStr ,當前頁面的 地址 )計算出最終的 簽名
執行getLocation
以上步驟執行成功後,方可執行wx.getLocation:
var success=true
// 之所以這里有個success變數,是因為發現wx.error觸發也會調用wx.ready(如果有個wx.success就好了)
//但其實這並不完美,因為還發現有時候wx.ready先執行,然後觸發了wx.error ........
wx.ready(function(){
if(success){
wx.getLocation({
type: 'wgs84',
success(res) {
// res為坐標位置信息
},
fail(e) {
// 獲取失敗
}
})
}
// config信息驗證後會執行ready方法
});
wx.error(function(res){
success=false
// config信息驗證失敗會執行error函數
});
吐槽:
wx.config有時候成功,有時候說簽名失敗
wx.ready代表配置驗證完畢了,不代表驗證成功了,那他的意義在於什麼
reference:
jssdk: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
web-view: https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
㈤ 關於微信支付遇到的哪些坑
最近在研究微信支付,感覺在微信裡面買東西,直接微信支付還是蠻方便的,沒有支付寶那麼麻煩,刷刷朋友圈,順便就買點東西,生活是如此的愜意,心想微信的這個支付肯定可以做到很牛逼,因為「錢景」無限啊!於是,我開始了這個噩夢般的旅程。
開通和審核
微信支付和支付寶商家平台一樣,都是要審核資質的,支付寶個人認證可以使用擔保支付,雖然需要用戶確認收貨之後才能收到資金,但是好歹也是能用的。微信直接不讓個人使用支付。只有企業以上級別的服務號才能申請。
開通&認證
支付寶注冊企業賬號,進行企業認證,我總共就花了10分鍾,包括公司資質審核,打款到公賬確認公賬等步驟。效率高到簡直無法想像。 微信支付需要已經認證過的服務號才能開通支付。提交完資質,等待審核,花了5個工作日的時間才告訴我資質審核過了,對,沒錯,是5個工作日,中間隔了一個周末,微信稱2-7個工作日認證完成,還是實現諾言了。
開通支付
支付寶需要簽約服務,這里我簽約的是即時到帳的,花了2天時間。 微信開通認證之後,登陸商戶平台配置一下就可以開幹了,這點從速度方面比支付寶強點,因為它把支付用途啥的都放到第一步的認證裡面了,而支付寶是放在後面的簽約服務裡面進行審核的。
這些步驟完成之後,就可以開始開發了。雖然如此,從整體進度上面,支付寶還是略勝微信一籌的。
開發
根據文檔接入支付寶和微信的支付平台
文檔&DEMO
支付寶我就沒看文檔,因為之前有做過,已經大體了解了。直接下了個DEMO改改就完成了。 微信的文檔,恩,在微信公眾平台有一份,在商戶平台又有另外一份,而且內容還不一樣。。。 我主要需要在公眾號裡面支付,所以選擇了微信的JSAPI。在公眾平台裡面,關於JS支付的只有一小段。如下:
wx.chooseWXPay({
timestamp: 0, // 支付簽名時間戳,注意微信jssdk中的所有使用timestamp欄位均為小寫。但最新版的支付後台生成簽名使用的timeStamp欄位名需大寫其中的S字元
nonceStr: '', // 支付簽名隨機串,不長於 32 位
package: '', // 統一支付介面返回的prepay_id參數值,提交格式如:prepay_id=***)
signType: '', // 簽名方式,默認為'SHA1',使用新版支付需傳入'MD5'
paySign: '', // 支付簽名
success: function (res) {
// 支付成功後的回調函數
}
});
備註:prepay_id 通過微信支付統一下單介面拿到,paySign 採用統一的微信支付 Sign 簽名生成方法,注意這里 appId 也要參與簽名,appId 與 config 中傳入的 appId 一致,即最後參與簽名的參數有appId, timeStamp, nonceStr, package, signType。
微信支付統一下單介面文檔:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_1
微信支付簽名演算法:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=4_3
微信支付開發教程:https://mp.weixin.qq.com/paymch/readtemplate?t=mp/business/course3_tmpl&lang=zh_CN
看完方法,有點暈,在看完下面給出的三個鏈接裡面的內容,更暈了。然後又在商戶平台找到一份文檔。
傳送門
這里給了比較詳細的資料,也給出了js示例:
註:JS API的返回結果get_brand_wcpay_request:ok僅在用戶成功完成支付時返回。由於前端交互復雜,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以統一處理為用戶遇到錯誤或者主動放棄,不必細化區分。
示例代碼如下:
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId" : "wx2421b1c4370ec43b", //公眾號名稱,由商戶傳入
"timeStamp":" 1395712654", //時間戳,自1970年以來的秒數
"nonceStr" : "", //隨機串
"package" : "prepay_id=u802345jgfjsdfgsdg888",
"signType" : "MD5", //微信簽名方式:
"paySign" : "" //微信簽名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {} // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在用戶支付成功後返回 ok,但並不保證它絕對可靠。
}
);
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
恩,於是我結合了文檔和找到的demo,結合這一段內容開始測試,結果發現,完全沒反應。是的,在我的iPhone上面是沒有反應的,也許哪裡出了問題,一直搞不出反應。 然後我想到了前面還有一種chooseWXPay,搜索了一下,這是新版介面的方法。結合下面的文檔參數的計算,成功了。結果是這樣的
wx.chooseWXPay({
appId: '{{ $jsParameters['appId'] }}',
timestamp: '{{ $jsParameters['timeStamp'] }}', // 支付簽名時間戳,注意微信jssdk中的所有使用timestamp欄位均為小寫。但最新版的支付後台生成簽名使用的timeStamp欄位名需大寫其中的S字元
nonceStr: '{{ $jsParameters['nonceStr'] }}', // 支付簽名隨機串,不長於 32 位
package: '{{ $jsParameters['package'] }}', // 統一支付介面返回的prepay_id參數值,提交格式如:prepay_id=***)
signType: '{{ $jsParameters['signType'] }}', // 簽名方式,默認為'SHA1',使用新版支付需傳入'MD5'
paySign: '{{ $jsParameters['paySign'] }}', // 支付簽名
success: function (res) {
if(res.errMsg == "chooseWXPay:ok" ) {
//支付成功
}else{
alert(res.errMsg);
}
},
cancel:function(res){
//支付取消
}
});
這里的$jsParameters是在後台使用微信支付的DEMO裡面提供的class生成的。
include_once("WxPayPubHelper.php");
...
public function getParameters(Order $order)
{
$jsApi = new JsApi_pub();
$unifiedOrder = new UnifiedOrder_pub();
//$unifiedOrder->setParameter("detail", $this->order->proct->brief_desc);//商品描述
$unifiedOrder->setParameter("body", $order->proct->name);//商品描述
$unifiedOrder->setParameter("out_trade_no", $order->order_number);//商戶訂單號
$unifiedOrder->setParameter("total_fee", $order->price * 100);//總金額,騰訊默認支付金額單位為【分】
$unifiedOrder->setParameter("notify_url", WxPayConf_pub::NOTIFY_URL);//通知地址
$unifiedOrder->setParameter("trade_type", "JSAPI");//交易類型
//非必填參數,商戶可根據實際情況選填
$unifiedOrder->setParameter("openid", Auth::user()->wx_openid);//商品ID
$unifiedOrder->setParameter("proct_id", $order->proct->id);//商品ID
$prepay_id = $unifiedOrder->getPrepayId();
$jsApi->setPrepayId($prepay_id);
return $jsApi->getParameters();
}
我描述你一臉啊,明顯第一個是用戶openid
還有這個
支付簽名時間戳,注意微信jssdk中的所有使用timestamp欄位均為小寫。但最新版的支付後台生成簽名使用的timeStamp欄位名需大寫其中的S字元
你很難搞清楚啥時候改用大寫,啥時候該用小寫。
還有這個
備註:prepay_id 通過微信支付統一下單介面拿到,paySign 採用統一的微信支付 Sign 簽名生成方法,注意這里 appId 也要參與簽名,appId 與 config 中傳入的 appId 一致,即最後參與簽名的參數有appId, timeStamp, nonceStr, package, signType。
就是在調用chooseWXPay的時候,你要自己加上appId,注意,I是大寫。否則採用JSAPI方式的時候會提示出錯。
還有這個
註:JS API的返回結果get_brand_wcpay_request:ok僅在用戶成功完成支付時返回。由於前端交互復雜,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以統一處理為用戶遇到錯誤或者主動放棄,不必細化區分。
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {} // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在用戶支付成功後返回 ok,但並不保證它絕對可靠。
}
老版的介面裡面是這樣描述返回結果的。但是在新版裡面變了,是變了,但是滿世界找不到變成啥樣了。只能自己打出來測試,結果變成如下
success: function (res) {
if(res.errMsg == "chooseWXPay:ok" ) {
//支付成功
...
新版介面裡面取消是沒有反應的,因為只有success回調。沒有任何一個地方說了如何監聽用戶取消支付。只能自己猜,結果,我果然猜對了。
success: function (res) {
if(res.errMsg == "chooseWXPay:ok" ) {
//支付成功
}else{
alert(res.errMsg);
}
},
cancel:function(res){
//支付取消
}
你以為是res.errMsg == "chooseWXPay:cancel"嗎?騷年,你還是太年輕。
設置坑
1、要設置好安全支付目錄。這個啥意思?
1、所有使用JS API方式發起支付請求的鏈接地址,都必須在支付授權目錄之下;
2、最多設置3個支付授權目錄, 且域名必須通過ICP備案;
3、頭部要包含http或https,須細化到二級或三級目錄,以左斜杠「/」結尾。
修改會影響線上交易,距正式生效有十分鍾左右延遲,建議你避開交易高峰時間修改
就是說,你將要調用JSAPI的那個頁面的鏈接要在這個目錄之下才可以。否則,會彈出提示說你的目錄沒許可權。比如你調用JSAPI的頁面地址為
http://www.xx.oo/pay/order/1
那麼你要把安全目錄設置為
http://www.xx.oo/pay/order/
這樣設置之後,如果你在如下地址調用,則會報錯
http://www.xx.oo/pay/newOrder/1
你可以設置多個支付目錄,如果需要的話。
2、設置回調地址,這個不解釋。
3、設置警告地址,不解釋。
4、商戶平台裡面設置密鑰,在登錄了商戶平台之後,位於賬戶設置-API安全裡面,先裝數字證書,然後設置密鑰,32位字元串。設置完了,自己記下來,沒錯,要自己記下來,因為沒法再查看了。
㈥ 微信朋友圈JSSDK分享自定義圖片文字
1、在微信公眾號添加安全域名(製作的H5頁面的主域名);
測試階段,本人是通過修改hosts文件,將對應域名解析為127.0.0.1 ; 然後將電腦和手機連接至同個區域網下。修改手機代理為電腦在區域網內的IP地址;這樣手機就能正常進行測試;
2、引入jssdk script src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'
3、配置jssdk,成功後方可使用相關功能,方式如下
wx.config({
debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會列印。
appId: 'XX', // 必填,公眾號的唯一標識
timestamp: XX, // 必填,生成簽名的時間戳
nonceStr: xx, // 必填,生成簽名的隨機串
signature: xx, // 必填,簽名,見附錄1
jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});
第一次接觸時看到網上的文章在此對signature沒有過多的說明,這里我自己大概說一下,此參數是通過獲取公眾號的id及secret獲取 access _token,然後通過 access _token獲取jsapi_ticket,然後通過時間戳,隨機串,當前頁面url,通過sha1加密生成;(這里做下說明,此步驟由後台處理後返回給前端即可);
剛接觸的時候領導認為純前端可實現,這。。。確實可以實現,這里就不做過多說明了;至於要後端處理的原因大致為兩點1、公眾號id和secret在前端實現不安全 2、 access _token和jsapi_ticket每日有請求次數的限制,過期時間兩小時,所以需要後台在伺服器緩存,每兩小時獲取一次;
4、wx.config配置正確即可通過wx.ready來調用相應功能
wx.ready(function() {
wx.onMenuShareTimeline({ //分享朋友圈
title: 'X', // 分享標題
link: window.location.href, // 分享鏈接
imgUrl: url, // 分享圖標
success: function() {
// 用戶確認分享後執行的回調函數
console.log('分享成功了喲喲喲')
},
cancel: function() {
// 用戶取消分享後執行的回調函數
}
});
wx.onMenuShareAppMessage({ // 好友分享
title: '', // 分享標題
desc: '', // 分享描述
link: window.location.href, // 分享鏈接
imgUrl: '', // 分享圖標
success: function () {
// 用戶確認分享後執行的回調函數
},
cancel: function () {
// 用戶取消分享後執行的回調函數
}
});
});
總結:其實對於前端要處理的很少,只要從後台獲取signature簽名,調用方法即可實現;具體可看官方文檔;首次接觸的小夥伴不要被嚇到,就是如此簡單;