Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
程序yang
unidocs-zh
提交
65f1d89a
U
unidocs-zh
项目概览
程序yang
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
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看板
提交
65f1d89a
编写于
12月 01, 2022
作者:
VK1688
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update uni-pay.md 新增ios内购支付文档
上级
764839db
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
219 addition
and
1 deletion
+219
-1
docs/uniCloud/uni-pay.md
docs/uniCloud/uni-pay.md
+219
-1
未找到文件。
docs/uniCloud/uni-pay.md
浏览文件 @
65f1d89a
...
...
@@ -51,7 +51,7 @@
+
关闭订单
+
获取当前支持的支付方式
+
获取当前支付用户的openid
+
苹果内购支付(暂未上线,敬请期待)
+
ios内购支付
+
支付统计(暂未上线,敬请期待)
+
收款趋势
+
转换漏斗分析
...
...
@@ -261,6 +261,15 @@ module.exports = {
"
alipayPublicCertPath
"
:
path
.
join
(
__dirname
,
'
alipay/alipayCertPublicKey_RSA2.crt
'
),
// 支付宝公钥路径
"
alipayRootCertPath
"
:
path
.
join
(
__dirname
,
'
alipay/alipayRootCert.crt
'
),
// 支付宝根证书路径
}
},
// ios内购相关
"
appleiap
"
:{
// ios内购支付
"
app
"
:
{
"
password
"
:
""
,
// App 专用共享密钥,App 专用共享密钥是用于接收此 App 自动续期订阅收据的唯一代码。如果您要将此 App 转让给其他开发者或不想公开主共享密钥,建议使用 App 专用共享密钥。非自动续订场景不需要此参数
"
timeout
"
:
10000
,
// 请求超时时间,单位:毫秒
"
sandbox
"
:
false
,
// 是否是沙箱环境(本地调试ios走的是沙箱环境,故要设置为true,正式发布后,需要设置为false)
}
}
}
```
...
...
@@ -653,6 +662,33 @@ module.exports = {
```
#### ios内购支付@config-appleiap-app
对应支付配置的节点是
`appleiap.app`
```
js
const
fs
=
require
(
'
fs
'
);
const
path
=
require
(
'
path
'
)
module
.
exports
=
{
// 统一 - 支付回调地址,格式为 "服务空间ID":"URL化地址"
"
notifyUrl
"
:
{
// 本地开发环境-支付回调地址
"
b267e273-19a7-4288-99c7-f6f27f9c5b77
"
:
"
https://b267e273-19a7-4288-99c7-f6f27f9c5b77.bspapp.com/uni-pay-co
"
,
// 线上正式环境-支付回调地址
"
499e2a37-0c77-418a-82aa-3e5820ecb057
"
:
"
https://499e2a37-0c77-418a-82aa-3e5820ecb057.bspapp.com/uni-pay-co
"
,
},
// ios内购相关
"
appleiap
"
:{
// ios内购支付
"
app
"
:
{
"
password
"
:
""
,
// App 专用共享密钥,App 专用共享密钥是用于接收此 App 自动续期订阅收据的唯一代码。如果您要将此 App 转让给其他开发者或不想公开主共享密钥,建议使用 App 专用共享密钥。非自动续订场景不需要此参数
"
timeout
"
:
10000
,
// 请求超时时间,单位:毫秒
"
sandbox
"
:
false
,
// 是否是沙箱环境(本地调试ios走的是沙箱环境,故要设置为true,正式发布后,需要设置为false)
}
}
}
```
## 集成到自己项目的教程@install
在对接自己的项目之前,建议先
[
跑通示例项目
](
#rundemo
)
,能跑通示例项目,代表你的配置和证书一定是正确的,然后再将
`uni-pay`
集成到你自己的项目中。
...
...
@@ -1782,6 +1818,179 @@ await uniIdCo.getOpenid({
|-----------------|---------|---------------------------|
| openid | string | openid |
### ios内购支付@appleiap
**概述**
IAP 全称:In-App Purchase,是指苹果 App Store 的应用内购买,是苹果为 App 内购买虚拟商品或服务提供的一套交易系统。
适用范围:在 App 内需要付费使用的产品功能或虚拟商品/服务,如游戏道具、电子书、音乐、视频、订阅会员、App的高级功能等需要使用 IAP,而在 App 内购买实体商品(如淘宝购买手机)或者不在 App 内使用的虚拟商品(如充话费)或服务(如滴滴叫车)则不适用于 IAP。
简而言之,苹果规定:适用范围内的虚拟商品或服务,必须使用 IAP 进行购买支付,不允许使用支付宝、微信支付等其它第三方支付方式(包括Apple Pay),也不允许以任何方式(包括跳出App、提示文案等)引导用户通过应用外部渠道购买。
**示例代码**
注意:只能使用uni-pay支付组件发起
```
js
// 发起ios内购支付
this
.
$refs
.
uniPay
.
createOrder
({
provider
:
"
appleiap
"
,
// 支付供应商(这里固定未appleiap,代表ios内购支付)
order_no
:
"
20221027011000101001010
"
,
// 业务系统订单号
out_trade_no
:
"
2022102701100010100101001
"
,
// 插件支付单号
type
:
"
appleiap
"
,
// 支付回调类型(可自定义,建议填写appleiap)
productid
:
"
io_dcloud_hellouniapp_pay_like6
"
,
// ios内购产品id(仅ios内购生效)
// 自定义数据
custom
:
{}
});
```
[
点击查看ios内购注意事项
](
#tips-appleiap
)
完整ios内购支付示例代码
```
html
<template>
<view
class=
"content"
>
<view
class=
"uni-list"
>
<radio-group
@
change=
"applePriceChange"
>
<label
class=
"uni-list-cell"
v-for=
"(item, index) in productList"
:key=
"index"
>
<radio
:value=
"item.productid"
:checked=
"item.checked"
/>
<view
class=
"price"
>
{{item.title}} {{item.price}}元
</view>
</label>
</radio-group>
</view>
<view
class=
"uni-padding-wrap"
>
<button
class=
"btn-pay"
@
click=
"createOrder"
:loading=
"loading"
:disabled=
"disabled"
>
立即支付
</button>
</view>
<!-- 统一支付组件 -->
<uni-pay
ref=
"uniPay"
:debug=
"true"
:adpid=
"adpid"
return-url=
"/pages/order-detail/order-detail"
@
mounted=
"onMounted"
@
success=
"onSuccess"
></uni-pay>
</view>
</template>
<script>
export
default
{
data
()
{
return
{
order_no
:
""
,
// 业务系统订单号(即你自己业务系统的订单表的订单号)
out_trade_no
:
""
,
// 插件支付单号
adpid
:
"
1000000001
"
,
// uni-ad的广告位id
loading
:
false
,
// 支付按钮是否在loading中
disabled
:
true
,
// 支付按钮是否禁用
productid
:
""
,
// 用户选择的商品id
// 出售的ios内购商品列表
productList
:
[
{
"
description
"
:
"
为DCloud提供的免费软件进行赞助
"
,
"
price
"
:
1
,
"
productid
"
:
"
io_dcloud_hellouniapp_pay_like1
"
,
"
title
"
:
"
赞赏
"
},
{
"
description
"
:
"
为DCloud提供的免费软件进行赞助
"
,
"
price
"
:
6
,
"
productid
"
:
"
io_dcloud_hellouniapp_pay_like6
"
,
"
title
"
:
"
赞赏
"
}
],
}
},
onLoad
:
function
()
{
},
onShow
()
{
if
(
this
.
$refs
.
uniPay
&&
this
.
$refs
.
uniPay
.
appleiapRestore
)
{
// ios内购支付漏单重试
this
.
$refs
.
uniPay
.
appleiapRestore
();
}
},
onUnload
()
{},
methods
:
{
// 支付组件加载完毕后执行
onMounted
(
insideData
){
this
.
init
();
},
// 初始化
async
init
()
{
this
.
productList
[
0
].
checked
=
true
;
this
.
productid
=
this
.
productList
[
0
].
productid
;
this
.
disabled
=
false
;
if
(
this
.
$refs
.
uniPay
&&
this
.
$refs
.
uniPay
.
appleiapRestore
)
{
// ios内购支付漏单重试
this
.
$refs
.
uniPay
.
appleiapRestore
();
}
},
/**
* 发起支付
* 在调用此api前,你应该先创建自己的业务系统订单,并获得订单号 order_no,把order_no当参数传给此api,而示例中为了简化跟支付插件无关的代码,这里直接已时间戳生成了order_no
*/
createOrder
(){
this
.
order_no
=
`test`
+
Date
.
now
();
this
.
out_trade_no
=
this
.
order_no
;
// 发起支付
this
.
$refs
.
uniPay
.
createOrder
({
provider
:
"
appleiap
"
,
// 支付供应商(这里固定未appleiap,代表ios内购支付)
order_no
:
this
.
order_no
,
// 业务系统订单号(即你自己业务系统的订单表的订单号)
out_trade_no
:
this
.
out_trade_no
,
// 插件支付单号
type
:
"
appleiap
"
,
// 支付回调类型(可自定义,建议填写appleiap)
productid
:
this
.
productid
,
// ios内购产品id(仅ios内购生效)
// 自定义数据
custom
:
{}
});
},
// 监听事件 - 支付成功
onSuccess
(
res
){
console
.
log
(
'
success:
'
,
res
);
if
(
res
.
user_order_success
)
{
// 代表用户已付款,且你自己写的回调成功并正确执行了
}
else
{
// 代表用户已付款,但你自己写的回调执行失败(通常是因为你的回调代码有问题)
}
},
// 监听-多选框选中的值改变
applePriceChange
(
e
)
{
this
.
productid
=
e
.
detail
.
value
;
},
}
}
</script>
<style>
.content
{
padding
:
15px
;
}
button
{
background-color
:
#007aff
;
color
:
#ffffff
;
}
.uni-list-cell
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
padding
:
10px
;
border-bottom
:
1px
solid
#eee
;
}
.price
{
margin-left
:
10px
;
}
.btn-pay
{
margin-top
:
30px
;
}
</style>
```
## 注意事项@tips
### 微信公众号@tips-wxpay-jsapi
...
...
@@ -1826,6 +2035,15 @@ APP支付除了配置uni-pay的支付配置外,还需要打包时添加支付
同时,还需要打自定义基座(包名需要和开放平台下填写的一致),且你在开放平台下的这个应用必须通过审核才可以。(比如微信开放平台下的APP应用显示通过审核才可以)
### ios内购支付@tips-appleiap
1.
ios内购支付需勾选App模块配置中的Apple应用内支付
2.
需要打ios自定义基座
3.
需要注册ios开发者账号,且交了年费(688元/年)
4.
需要在ios开发者平台添加内购商品,并获得商品id
5.
ios沙箱测试时,需要先在ios开发者平台添加沙箱测试账号,同时你的测试手机上需要登录ios沙箱账号
6.
目前hbx版本热刷新会导致ios支付无法正常调用,因此每次修改完代码保存后,需要先关闭手机App,然后hbx重启项目,再打开手机app。(后面HBX会修复此问题)
## 全局错误码@errorcode
| 错误模块 | 错误码 | 说明 |
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录