項目中要用到支付功能,如今來看支付寶、微信應該是必選的兩個方式了。javascript
uni-app 文檔中要求:APP端 微信 和 支付寶的 orderInfo 必須是 字符串。html
調用支付寶時,支付寶直接返回的 orderInfo 就是拼接好的字符串,拿來用便可。很順利的完成調起,支付。java
調用微信遇到了問題。json
微信返回的是加密後的 簽名,也就是 sign 這個字段。總體的 orderInfo 字符串是 須要後臺本身來拼接的。微信
一、是拼接的相似 支付寶的 字符串行不通,貌似是 uni-app 微信時 不支持這種格式。app
二、而後拼成了 json 經過 JSON.stringify() 這個方法來轉換成字符串。能夠成功。後來看到官方 安卓微信支付-100(-1)錯誤排除指導 工具
看到這樣一句 微信支付
'{"appid":"wx0411fa6a39d61297","noncestr":"71maVjWiEAvU85Wk","package":"Sign=WXPay","partnerid":"1230636401","prepayid":"wx03141004900988e2c281e3170042244847","timestamp":1535955004,"sign":"2AE06EF08E54B47659C79149CD9C284C"}'
而後就在想是否是須要 再加個 單引號 ??事實上是不須要的。加密
三、後臺 返回來的是這樣的spa
"data": "{\"appid\":\"wxd666666666666\",\"noncestr\":\"7yS9jZFgTq5ej6XH\",\"package\":\"Sign=WXPay\",\"partnerid\":\"22222222\",\"prepayid\":\"wx66666666666666666666666\",\"sign\":\"222222222FFFFFFFFAAAA\",\"timestamp\":\"1562838993\"}"
直接拿 data 做爲orderInfo 就能夠了。
還有一個問題 重要重要重要重要重要重要
在 微信平臺建立應用的時候 有一項填寫 安卓 應用包名和簽名,以下圖:
能在官方找的必定要在官方找。這是 填寫平臺信息的 客戶讓我看的 例子,那個應用簽名 不該該是這個 MD5,
而應該是一個加密後的 32 位字符串。
去官方 下載 一個 簽名獲取工具。
或者 官方安卓資源下載 最下面有工具下載。
每過一個坑,都會漲點兒記性。
此次的就是 多看官方文檔 多看官方文檔 多看官方文檔 多看官方文檔 多看官方文檔 多看官方文檔 多看官方文檔