小程序服务器api接口,百度智能小程序API 开放接口
登錄
智能小程序可以通過百度官方提供的登錄能力方便地獲取百度提供的用戶身份標識,快速建立智能小程序內的用戶體系。
流程說明
1、調用 swan.login() 獲取?臨時登錄憑證code?,并回傳到開發者服務器。
2、開發者服務器以 code 換取?session_key。
3、調用 swan.getUserInfo() 獲取用戶信息。
4、點擊查看詳細流程。
login
解釋:?調用接口 swan.login 獲取?臨時登錄憑證(code)
參數:?Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
success 返回參數說明:
參數
類型
說明
code
String
用戶登錄憑證(有效期五分鐘)。開發者需要在開發者服務器后臺調用 api,使用 code 換取 session_key 等信息
示例:swan.login({
success: function (res) {
swan.request({
url: 'https://xxx/xxx', // 開發者服務器地址
data: {
code: res.code
}
});
},
fail: function (err) {
console.log('login fail', err);
}
});
登錄憑證校驗
臨時登錄憑證校驗接口是一個 HTTPS 接口,開發者服務器使用?臨時登錄憑證(code)?獲取 session_key。
注意:
1、會話密鑰 session_key 是對用戶數據進行加密簽名的密鑰。為了應用自身的數據安全,開發者服務器不應該把會話密鑰下發到智能小程序,也不應該對外提供這個密鑰。
2、臨時登錄憑證 code 只能使用一次。
接口地址:https://openapi.baidu.com/nalogin/getSessionKeyByCode
請求參數
參數
說明
client_id
開放平臺申請的 App Key
sk
開放平臺申請的 App Secret
code
swan.login 返回的臨時登錄憑證
Bug & Tip
1、tip: 調用 login 會引起登錄態的刷新,之前的 session_key 可能會失效。
checkSession
解釋:通過上述接口獲得的用戶登錄態擁有一定的時效性,用戶越久未使用智能小程序,用戶登錄態越有可能失效;反之如果用戶一直在使用智能小程序,則用戶登錄態一直保持有效。具體時效邏輯由百度 App 維護,對開發者透明。開發者可以調用 swan.checkSession 接口?檢測當前用戶登錄態是否有效,登錄態過期后開發者可以再調用 swan.login 獲取新的用戶登錄態。
參數:Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
示例:
swan.checkSession({
success: function (res) {
console.log('登錄態有效');
},
fail: function (err) {
console.log('登錄態無效');
}
});
用戶數據的簽名驗證和加解密
智能小程序可以通過各種前端接口獲取百度提供的開放數據。考慮到開發者服務器也需要獲取這些開放數據,百度會對這些數據做簽名和加密處理。開發者后臺拿到開放數據后可以對數據進行校驗簽名和解密,來保證數據不被篡改。
加密數據解密算法
接口如果涉及敏感數據,接口的明文內容將不包含這些敏感數據。開發者如需要獲取敏感數據,需要對接口返回的加密數據(data)進行對稱解密。
解密過程:開發者智能小程序(通過 swan.request)將加密數據發送至自身 Server 進行解密后返回智能小程序。
解密算法如下:
1、對稱解密使用的算法為 AES-128-CBC,數據采用PKCS#7填充。
2、對稱解密的目標密文為 Base64_Decode(data)。
3、對稱解密秘鑰 AESKey = Base64_Decode(session_key), AESKey 是24字節。
4、對稱解密算法初始向量 為Base64_Decode(iv),其中iv由數據接口返回。
授權
authorize
解釋:提前向用戶發起授權請求。調用后會立刻彈窗詢問用戶是否同意授權智能小程序使用某項功能或獲取用戶的某些數據,但不會實際調用對應接口。如果用戶之前已經同意授權,則不會出現彈窗,直接返回成功。
參數:Object
Object參數說明:
參數名
類型
必填
說明
scope
String
是
需要獲取權限的 scope,詳見 scope 列表
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
scope 列表
scope
對應接口
描述
scope.userInfo
swan.getUserInfo
用戶信息
scope.userLocation
swan.getLocation, swan.chooseLocation
地理位置
scope.writePhotosAlbum
swan.saveImageToPhotosAlbum
保存到相冊
scope.address
swan.chooseAddress
收獲地址
scope.invoiceTitle
swan.chooseInvoiceTitle
發票抬頭
scope.record
swan.getRecorderManager
錄音功能
scope.camera
攝像頭
success返回參數說明:
參數名
類型
說明
errMsg
String
調用結果
示例:
swan.authorize({
scope: 'scope.userLocation',
success: function (res) {
// 用戶已經同意智能小程序使用定位功能
swan.getLocation();
}
});
Bug & Tip
1、tip: 授權操作為異步操作,完成前請不要多次調用。
用戶信息
swanid 機制說明
swanid 是用戶使用智能小程序時的標識符,開發者可以通過 swanid 來區分用戶的唯一性。
1、用戶在非登陸情況下使用智能小程序時,在同一臺設備上使用同一個開發者所開發的不同智能小程序,得到的是相同的 swanid。2、用戶在登陸情況下使用智能小程序時,在多臺不同設備上使用同一個開發者所開發的不同智能小程序,得到的是相同的 swanid。3、用戶使用同一臺設備時,在非登陸情況下與登陸情況下使用同一個智能小程序,得到的 swanid 是不同的。
getSwanId
解釋:獲取 swanid。
參數:Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
success返回參數說明:
參數
類型
說明
errno
String
errno
data
Object
{swanid}
errmsg
String
errmsg
示例:swan.getSwanId({
success: function (res) {
console.log(res.data.swanid);
}
});
getUserInfo
解釋:獲取用戶信息
參數:Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
success返回參數說明:
參數
類型
說明
userInfo
Object
用戶信息對象
data
String
包括敏感數據在內的完整用戶信息的加密數據,加解密邏輯參考用戶數據的簽名驗證和加解密
iv
String
加密算法的初始向量
userInfo參數說明:
參數
類型
說明
nickName
String
用戶名
avatarUrl
String
用戶頭像
gender
String
性別
示例:
swan.getUserInfo({
success: function (res) {
console.log('用戶名', res.nickName);
}
});
設置
openSetting
解釋:調起客戶端智能小程序設置界面,返回用戶設置的操作結果。
參數:Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
success返回參數說明:
參數
類型
說明
authSetting
Object
用戶授權結果,其中 key 為 scope 值,value 為 Bool 值,表示用戶是否允許授權
示例:
swan.openSetting({
success: function (res) {
console.log(res.authSetting['scope.userInfo']);
console.log(res.authSetting['scope.userLocation']);
}
});
getSetting
解釋:獲取用戶的當前設置
參數:Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
success返回參數說明:
參數
類型
說明
authSetting
Object
用戶授權結果,其中 key 為 scope 值,value 為 Bool 值,表示用戶是否允許授權
示例:
swan.getSetting({
success: function (res) {
console.log(res.authSetting['scope.userInfo']);
console.log(res.authSetting['scope.userLocation']);
}
});
分享
onShareAppMessage
解釋:在 Page 中定義 onShareAppMessage 函數,設置該頁面的分享信息。
用戶點擊分享按鈕的時候會調用
此事件需要 return 一個Object,用于自定義分享內容
參數:Object
Object參數說明:
參數名
類型
說明
from
String
分享事件來源。button:頁面內轉發按鈕;menu:右上角分享菜單
currentTarget
Object
如果 from 值是 button,則 currentTarget 是觸發這次轉發事件的 button,否則為 undefined
自定義分享字段:
參數名
類型
必填
說明
title
String
否
分享標題
content
String
否
分享內容
imageUrl
String
否
分享圖標
path
String
否
頁面 path ,必須是以 / 開頭的完整路徑
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
示例:Page({
onShareAppMessage() {
return {
title: '智能小程序示例',
content: '世界很復雜,百度更懂你',
path: '/pages/openShare/openShare?key=value'
};
}
});
Bug & Tip
1、bug: iOS 點擊分享面板的取消時,會執行 fail,Android 不會執行。
收獲地址
chooseAddress
解釋:調起用戶編輯收貨地址原生界面,并在編輯完成后返回用戶選擇的地址。
需要用戶授權 scope.address
參數:Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
返回用戶選擇的收貨地址信息
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
success返回參數說明:
參數名
類型
說明
errMsg
String
調用結果
userName
String
收貨人姓名
postalCode
String
郵編
provinceName
String
國標收貨地址第一級地址
cityName
String
國標收貨地址第二級地址
countyName
String
國標收貨地址第三級地址
detailInfo
String
詳細收貨地址信息
telNumber
String
收貨人手機號碼
示例:
swan.chooseAddress({
success: function (res) {
console.log(res.userName);
console.log(res.postalCode);
console.log(res.provinceName);
console.log(res.cityName);
console.log(res.countyName);
console.log(res.detailInfo);
console.log(res.telNumber);
}
});
聚合收銀臺支付
requestPolymerPayment
版本:百度 App 10.7.0 版本開始支持。
解釋:百度聚合收銀臺,聚合了主流的百度錢包、微信、支付寶、網銀等多種支付方式,方便開發者一站式快速接入多種支付渠道,讓百度用戶能在智能小程序場景下,直接完成支付、交易閉環,提升用戶支付體驗的同時,提高智能小程序的訂單轉化率。
參數:Object
Object參數說明:
參數名
類型
必填
說明
orderInfo
Object
是
訂單信息
bannedChannels
StringArray
否
需要隱藏的支付方式
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
orderInfo 參數說明:
dealId: 跳轉百度收銀臺支付必帶參數之一,是百度收銀臺的財務結算憑證,與賬號綁定的結算協議一一對應,每筆交易將結算到dealId對應的協議主體。
appKey: 用以表示應用身份的唯一ID,在應用審核通過后進行分配,一經分配后不會發生更改,來唯一確定一個應用。
totalAmount: 訂單金額,單位為人民幣分。
tpOrderId: 商戶平臺自己記錄的訂單ID,當支付狀態發生變化時,會通過此訂單ID通知商戶。
dealTitle: 訂單的名稱。
rsaSign: 對appKey+dealId+tpOrderId進行RSA加密后的密文,防止訂單被偽造。簽名過程見?百度電商開放平臺:簽名與驗簽
bizInfo: 訂單詳細信息,需要是一個可解析為JSON Object的字符串。字段內容見:?百度電商開放平臺:收銀臺接入
bannedChannels 參數說明:
channel
說明
Alipay
支付寶
BDWallet
百度錢包
微信支付
示例:swan.requestPolymerPayment({
orderInfo: {
"dealId": "470193086",
"appKey": "MMMabc",
"totalAmount": "1",
"tpOrderId": "3028903626",
"dealTitle": "智能小程序Demo支付測試",
"rsaSign": '',
"bizInfo": ''
},
success: function (res) {
swan.showToast({
title: '支付成功',
icon: 'success'
});
},
fail: function (err) {
swan.showToast({
title: JSON.stringify(err)
});
console.log('pay fail', err);
}
});
獲取發票抬頭
chooseInvoiceTitle
解釋:選擇用戶的發票抬頭。
需要用戶授權 scope.invoiceTitle
參數:Object
Object參數說明:
參數名
類型
必填
說明
success
Function
否
接口調用成功的回調函數
fail
Function
否
接口調用失敗的回調函數
complete
Function
否
接口調用結束的回調函數(調用成功、失敗都會執行)
success返回參數說明:
參數名
類型
說明
type
String
抬頭類型(0:單位,1:個人)
title
String
抬頭名稱
taxNumber
String
抬頭稅號
companyAddress
String
單位地址
telephone
String
手機號碼
bankName
String
銀行名稱
bankAccount
String
銀行賬號
errMsg
String
接口調用結果
示例:swan.chooseInvoiceTitle({
success: function (res) {
console.log(res.type);
console.log(res.title);
console.log(res.taxNumber);
console.log(res.companyAddress);
console.log(res.telephone);
console.log(res.bankName);
console.log(res.bankAccount);
}
})
總結
以上是生活随笔為你收集整理的小程序服务器api接口,百度智能小程序API 开放接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 规划局备案过的图纸能改吗(规划局备案)
- 下一篇: 阴阳师服务器维护稍后,《阴阳师》手游3月