Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
你丑我先上
unidocs-zh
提交
fa96cfdc
U
unidocs-zh
项目概览
你丑我先上
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fa96cfdc
编写于
7月 07, 2022
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://gitee.com/dcloud/unidocs-zh
上级
dcae5dc6
bacc968e
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
173 addition
and
55 deletion
+173
-55
docs/.vuepress/theme/config/navbar.js
docs/.vuepress/theme/config/navbar.js
+1
-1
docs/.vuepress/theme/config/redirectRouter.js
docs/.vuepress/theme/config/redirectRouter.js
+4
-0
docs/_navbar.md
docs/_navbar.md
+0
-31
docs/api/getEnterOptionsSync.md
docs/api/getEnterOptionsSync.md
+8
-5
docs/api/getLaunchOptionsSync.md
docs/api/getLaunchOptionsSync.md
+5
-1
docs/api/plugins/payment.md
docs/api/plugins/payment.md
+137
-2
docs/api/ui/locale.md
docs/api/ui/locale.md
+1
-1
docs/tutorial/app-oauth-google.md
docs/tutorial/app-oauth-google.md
+0
-1
docs/tutorial/app-payment-aip.md
docs/tutorial/app-payment-aip.md
+15
-11
docs/uniCloud/cf-functions.md
docs/uniCloud/cf-functions.md
+2
-2
未找到文件。
docs/.vuepress/theme/config/navbar.js
浏览文件 @
fa96cfdc
...
...
@@ -141,7 +141,7 @@ export const navbar = [
},
{
text
:
'
uni 小程序 sdk
'
,
link
:
'
https://nativesupport.dcloud.net.cn/
UniMPDocs/SDKDownload/android
'
,
link
:
'
https://nativesupport.dcloud.net.cn/
README
'
,
type
:
"
link
"
,
target
:
'
_blank
'
,
needOutbound
:
false
...
...
docs/.vuepress/theme/config/redirectRouter.js
浏览文件 @
fa96cfdc
...
...
@@ -51,6 +51,10 @@ const routerMap = {
'
/api/a-d/rewarded-video-ad
'
:
'
/api/a-d/rewarded-video.html
'
,
'
/api/ad/interstitial-ad
'
:
'
/api/a-d/interstitial.html
'
,
'
/api/ui/navigate
'
:
'
/api/router.html
'
,
'
/api/plugins/getLaunchOptionsSync
'
:
'
/api/getLaunchOptionsSync.html
'
,
'
/api/plugins/getEnterOptionsSync
'
:
'
/api/getEnterOptionsSync.html
'
,
'
/api/plugins/getLaunchOptionsSync.html
'
:
'
/api/getLaunchOptionsSync.html
'
,
'
/api/plugins/getEnterOptionsSync.html
'
:
'
/api/getEnterOptionsSync.html
'
,
'
/platform
'
:
'
/tutorial/platform.html
'
,
'
/nvue-event
'
:
'
/tutorial/nvue-event.html
'
,
...
...
docs/_navbar.md
已删除
100644 → 0
浏览文件 @
dcae5dc6
*
[
介绍
](
README.md
)
*
[
框架
](
collocation/pages.md
)
*
[
组件
](
component/README.md
)
*
[
API
](
api/README.md
)
*
[
uniCloud
](
uniCloud/README.md
)
*
[
其它规范
](
http://www.html5plus.org/doc/h5p.html
)
-
[
App扩展规范HTML5 Plus
](
http://www.html5plus.org/doc/h5p.html
)
-
[
微信小程序
](
https://developers.weixin.qq.com/miniprogram/dev/framework/
)
-
[
支付宝小程序
](
https://docs.alipay.com/mini/developer/getting-started
)
-
[
百度小程序
](
https://smartprogram.baidu.com/docs/develop/tutorial/codedir/
)
-
[
字节跳动小程序
](
https://developer.toutiao.com/dev/cn/mini-app/develop/component/introduction/basic-component
)
-
[
飞书小程序
](
https://open.feishu.cn/document/uYjL24iN/uUDNzUjL1QzM14SN0MTN
)
-
[
钉钉小程序
](
https://developers.dingtalk.com/document/app/introduction-to-dingtalk-mini-programs
)
-
[
QQ小程序
](
https://q.qq.com/wiki/develop/miniprogram/frame/
)
-
[
快手小程序
](
https://mp.kuaishou.com/docs/develop/frame/config/conf_appjson.html
)
-
[
京东小程序
](
https://mp-docs.jd.com/framework/
)
-
[
华为快应用
](
https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/webview-component-view
)
-
[
360小程序
](
https://mp.360.cn/doc/miniprogram/dev/#/view
)
-
[
Weex
](
http://doc.weex.io/zh/guide/introduction.html
)
<ul
class=
"nav-href"
>
<li
class=
"ext-link"
><a
href=
"//ext.dcloud.net.cn/"
target=
"__blank"
>
插件市场
</a></li>
<li><a
id=
"link-to-wish"
href=
"javascript:void(0);"
>
需求墙
</a></li>
<li><a
href=
"//dev.dcloud.net.cn/sponsor/?channel=uniapp"
target=
"__blank"
style=
"color:#FF6600!important;"
><img
src=
"https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/45e691f0-4f3d-11eb-b680-7980c8a877b8.png"
class=
"heart"
>
赞助我们
</a></li>
</ul>
<div
class=
"github"
>
<a
href=
"//github.com/dcloudio/uni-app"
target=
"_blank"
>
<img
src=
"https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/44f8d690-4f3d-11eb-b680-7980c8a877b8.svg"
>
</a>
</div>
docs/api/getEnterOptionsSync.md
浏览文件 @
fa96cfdc
### uni.getEnterOptionsSync()
#### App、web 端
获取启动时的参数。返回值与App.onLaunch的回调参数一致
获取启动时的参数。
#### 小程序端
获取本次启动时的参数。如果当前小程序是冷启动,则返回值与 App.onLaunch 的回调参数一致;如果当前是热启动,则返回值与 App.onShow 一致。
注意:各平台在启动时,参数获取存在差异,详细如下:
-
App平台:返回值与App.onLaunch的回调参数一致;
-
Web平台:返回值与App.onLaunch的回调参数一致,不同Vue版本支持情况有差异:
*
`vue3`
项目:uni-app 3.2.13+ 支持;
*
`vue2`
项目:uni-app 3.5.1+ 支持。
-
小程序平台:如果当前小程序是冷启动,则返回值与 App.onLaunch 的回调参数一致;如果当前是热启动,则返回值与 App.onShow 一致。关于微信小程序冷启动热启动的概念,
[
详见
](
https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/operating-mechanism.html
)
关于微信小程序冷启动热启动的概念,
[
详见
](
https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/operating-mechanism.html
)
**平台兼容性说明**
|App|web|微信小程序|支付宝小程序|字节跳动小程序|快手小程序|QQ小程序|百度小程序|京东小程序|钉钉小程序|飞书小程序|
|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|
...
...
docs/api/getLaunchOptionsSync.md
浏览文件 @
fa96cfdc
...
...
@@ -4,7 +4,11 @@
|App|web|微信小程序|支付宝小程序|字节跳动小程序|QQ小程序|快手小程序|钉钉小程序|飞书小程序|百度小程序|京东小程序|
|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|
|√
`(3.4.10+)`
|√
`(3.5.1+)`
|√|√|√|√|√|√|√|x|x|
|√
`(3.4.10+)`
|√
`(见下)`
|√|√|√|√|√|√|√|x|x|
web平台不同Vue版本支持情况有差异:
-
`vue2`
项目:uni-app 3.5.1+ 支持
-
`vue3`
项目:uni-app 3.2.13+ 支持
**返回参数说明**
...
...
docs/api/plugins/payment.md
浏览文件 @
fa96cfdc
...
...
@@ -207,7 +207,142 @@ uni.requestPayment({
})
```
苹果应用内支付
#### 苹果应用内支付@iap
支付流程
1.
获取支付通道 (uni.getProvider)
2.
通过支付通道获取产品列表 (iapChannel.requestProduct 可选)
3.
检查是否存在未关闭的订单 (iapChannel.restoreCompletedTransactions)
4.
请求支付,传递产品信息 (uni.requestPayment)
5.
客户端接收苹果返回的支付票据发送到服务器,在服务器请求苹果服务器验证支付是否有效
6.
服务器验证票据有效后在客户端关闭订单 (iapChannel.finishTransaction)
3.
5.1 之前因自动关闭订单导致某些情况下丢单的问题
3.
5.1 + 增加了手动关闭订单参数
`manualFinishTransaction`
, 在合适的时机调用
`iapChannel.finishTransaction`
关闭订单
3.
5.1+ 开始支持通过
`uni.getProvider`
获取IAP支付通道的方法
获取IAP支付通道
```
js
uni
.
getProvider
({
service
:
'
payment
'
,
success
:
(
res
)
=>
{
const
iapChannel
=
res
.
providers
.
find
((
channel
)
=>
{
return
(
channel
.
id
===
'
appleiap
'
)
})
// 如果 iapChannel 为 null,说明当前包没有包含iap支付模块。注意:HBuilder基座不包含 iap 通道
}
});
```
**IAP支付通道相关方法**
向苹果服务器获取产品列表
`iapChannel.requestProduct(<Function> success, <Function> fail)`
`success`
回调值类型
`Array<Product>`
获取苹果服务器已支付且未关闭的交易列表
`iapChannel.restoreCompletedTransactions(<Function> success, <Function> fail)`
`success`
回调值类型
`Array<Transaction>`
关闭苹果服务器订单
`iapChannel.finishTransaction(Transaction, <Function> success, <Function> fail)`
所有
`fail`
回调格式为
`{ errCode: xxx, errMsg: '' }`
`uni.requestPayment()`
说明
```
js
uni
.
requestPayment
({
provider
:
'
appleiap
'
,
orderInfo
:
{},
success
:
(
e
)
=>
{
// e 类型为 Transaction, 详见下面的描述
}
})
```
**orderInfo**
|属性|类型|默认值|说明|
|:-|:-|:-|:-|
|productid|String||产品id,在苹果开发者中心配置|
|username|String||透传参数,一般用于标记订单和用户的关系,向苹果服务器二次验证票据时返回此字段|
|quantity|Number|1|购买数量,至少大于等于
`1`
|
|manualFinishTransaction|Boolean|false|3.5.1+ 支持,手动关闭订单,值为
`false`
时支付完成后自动关闭订单,
`true`
时不关闭订单,需要在合适的时机调用
`finishTransaction`
关闭订单。建议设置为
`true`
, 默认值为
`false`
是为了向下兼容|
**Product**
|属性|类型|说明|
|:-|:-|:-|
|title|String|产品标题|
|description|String|产品描述|
|productid|String|产品id,在苹果开发者中心配置|
|price|Number|价格|
|pricelocal|String|币种,例如:
`zh_CN@currency=CNY`
|
**Transaction**
|属性|类型|说明|
|:-|:-|:-|
|payment|Object|支付信息,详见下面的说明|
|transactionDate|String|交易日期,示例
`2022-01-01 08:00:00`
|
|transactionIdentifier|String|交易唯一标识|
|transactionReceipt|String|支付票据,用于在开发者的服务器向苹果的服务器二次验证交易是否有效|
|transactionState|String|交易状态码|
**Payment**
|属性|类型|说明|
|:-|:-|:-|
|productid|String|产品id|
|quantity|String|购买数量|
|username|String|透传参数|
**transactionState**
值类型:String
|值|说明|
|:-|:-|
|1|交易成功|
注意事项
-
相同订单,重复调用
`restoreCompletedTransactions`
后
`transactionReceipt`
会发生变化,并非唯一值
#### 订单丢失场景
-
用户没有绑定
`AppStore`
支付方式,调用
`uni.requestPayment()`
准备支付,触发失败
`fail`
回调,errCode=2,用户未绑定支付方式,app内支付流程结束。
系统弹出框引导用户绑定支付方式,此过程将跳转到系统应用
`AppStore`
进行绑定支付方式,绑定成功同步支付成功,用户成功付款
下面为未处理丢单的示例代码,后续提供完整代码
```
html
<template>
...
...
@@ -228,7 +363,7 @@ uni.requestPayment({
</template>
```
```
j
avascript
```
j
s
<
script
>
let
iapChannel
=
null
,
productId
=
'
HelloUniappPayment1
'
,
...
...
docs/api/ui/locale.md
浏览文件 @
fa96cfdc
...
...
@@ -44,7 +44,7 @@
|:-|:-|:-|
|locale|String|当前语言|
###
# 提示
###
注意事项
*
组件和接口显示会根据设置的语言环境自动切换,未支持的系统语言环境会显示为英文。
*
App-Android 平台设置新的语言后会自动重启应用。
...
...
docs/tutorial/app-oauth-google.md
浏览文件 @
fa96cfdc
...
...
@@ -72,4 +72,3 @@ plus.oauth.getServices(function(services) {
})
```
0-4c22-aa61-0d63120e1a4b.png)
docs/tutorial/app-payment-aip.md
浏览文件 @
fa96cfdc
...
...
@@ -102,8 +102,8 @@ var restoreFlag = true; // 调用支付接口时标记 restoreFlag = true , 实
plus
.
payment
.
request
(
iap
,
{
productid
:
"
商品id
"
,
username
:
"
appusername
"
,
// 用户标识
optimize
:
true
,
// 设置 optimize: true 解决丢单问题
iapVersion
:
2
// 3.5.0
+ 支持,设置此参数后需要开发者主动关闭订单,参见下面的关闭订单方法 finishTransaction()
optimize
:
true
,
// 设置 optimize: true 解决丢单问题
,已废弃,推荐使用 manualFinishTransaction
manualFinishTransaction
:
true
// 3.5.1
+ 支持,设置此参数后需要开发者主动关闭订单,参见下面的关闭订单方法 finishTransaction()
},
function
(
result
){
restoreFlag
=
false
;
// 支付成功清除标记 restoreFlag = false
// 支付成功,result 为 IAP商品交易信息对象 IAPTransaction 需将返回的支付凭证传给后端进行二次认证
...
...
@@ -167,24 +167,28 @@ document.addEventListener('resume',function(){
```
#### 丢单问题说明
通过和用户联调我们发现在调用支付接口后,如果用户未绑定支付方式此时会触发支付失败回调方法,实际上用户可以跳转 AppStrore 绑卡然后继续支付,之前的逻辑在回调失败方法中框架会关闭订单,用户付完钱在回到App中也不会触发成功回调,这样就造成了丢单,解决方法就是在调用支付接口时添加optimize: true参数,并标记 restoreFlag = true;,支付成功回调中清除标记 restoreFlag = false; 然后在支付失败回调中框架就不会关闭订单了,并在页面显示的时候通过标记判断是否需要调用 restoreComplateRequest 方法,如果用户跳转App Store绑定支付方式付款成功后回到 App 就可以通过 restoreComplateRequest 方法恢复之前支付的订单信息,解决丢单的问题;
3.
5.1 之前因自动关闭订单导致某些情况下丢单的问题
3.
5.1 +
#### 丢单解决方案
-
新增手动关闭订单参数
`manualFinishTransaction`
, 在合适的时机调用
`iapChannel.finishTransaction`
关闭订单
3.
5.0+ 支持
-
新增关闭订单方法
`iapChannel.finishTransaction(Transaction, <Function> success, <Function> fail)`
-
调用支付和恢复购买时传递参数
`iapVersion`
, 设置后订单不会关闭,需要开发者在合适的时机调用
`finishTransaction`
关闭订单
-
新增 iapChannel 方法
`requestProduct`
`restoreCompletedTransactions`
替代
`requestOrder`
`restoreComplateRequest`
```
js
// 支付
plus
.
payment
.
request
(
iapChannel
,
{
iapVersion
:
2
manualFinishTransaction
:
true
})
// 恢复
iapChannel
.
restoreCompl
ateRequest
({
iapVersion
:
2
iapChannel
.
restoreCompl
etedTransactions
({
manualFinishTransaction
:
true
})
```
...
...
@@ -193,7 +197,7 @@ iapChannel.restoreComplateRequest({
1.
网络原因
2.
用户首次绑卡
过段时间调用恢复购买
`restoreCompl
ateRequest
`
可以获取到上次异常或未完成的订单
过段时间调用恢复购买
`restoreCompl
etedTransactions
`
可以获取到上次异常或未完成的订单
-
正确关闭订单的方法
...
...
@@ -202,8 +206,8 @@ iapChannel.restoreComplateRequest({
3.
二次确认后可安全调用
`finishTransaction`
关闭订单
注意:
-
在订单未关闭时,即使卸载应用调用恢复购买
`restoreCompl
ateRequest
`
仍然可以获取到
-
A账号下载的应用,切换B账号, 调用
`restoreCompl
ateRequest
`
系统弹窗提示恢复购买失败
-
在订单未关闭时,即使卸载应用调用恢复购买
`restoreCompl
etedTransactions
`
仍然可以获取到
-
A账号下载的应用,切换B账号, 调用
`restoreCompl
etedTransactions
`
系统弹窗提示恢复购买失败
### 常见问题
...
...
docs/uniCloud/cf-functions.md
浏览文件 @
fa96cfdc
...
...
@@ -845,11 +845,11 @@ exports.main = async function(event, context) {
如果此云函数运行在腾讯云nodejs12,setTimeout里面的console.log会在本次云函数调用内,同样的本次云函数计费时间也会按照最终执行完成的时间计算(5000ms+return耗时)。但是前端无需等待5秒即可收到响应。
**注意:如果有未断开的长连接(例如:redis连接)会导致云函数一直运行到配置的超时时间**
当在云函数package.json内的cloudfunction-config内配置了
`keepRunningAfterReturn: false`
时,可以改变腾讯云nodejs12的表现,云函数return之后将不再继续执行,未断开的长连接也不会增加云函数实际运行时间,简单来说其表现和腾讯云nodejs8一致。
当在云函数package.json内的cloudfunction-config内配置了
`keepRunningAfterReturn: false`
时,可以改变腾讯云nodejs12的表现,云函数return之后将不再继续执行,未断开的长连接也不会增加云函数实际运行时间,
云函数return后长连接也不会被中断,
简单来说其表现和腾讯云nodejs8一致。
**腾讯云nodejs12使用redis**
由于redis需要和服务器建立连接,此连接会阻止云函数结束执行。如果没有云函数return之后还需要继续执行的需求,可以简单的在
`cloudfunction-config`
内配置
`keepRunningAfterReturn: false`
。
由于redis需要和服务器建立连接,此连接会阻止云函数结束执行。如果没有云函数return之后还需要继续执行的需求,可以简单的在
`cloudfunction-config`
内配置
`keepRunningAfterReturn: false`
。
这样redis的连接并不会中断,下次请求来时依然可以使用之前建立的连接。
如果需要return之后继续执行,那么需要在使用完毕后断开redis连接,调用
`redis.quit()`
方法即可断开连接。需要注意的是断开连接后之前建立的连接将不再可用,下个请求到来时需要使用
`uniCloud.redis()`
方法重新建立连接。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录