Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
hahahaha2275
unidocs-zh
提交
68e03510
unidocs-zh
项目概览
hahahaha2275
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
68e03510
编写于
1月 25, 2022
作者:
DCloud-yyl
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update app-payment-paypal.md
上级
52d05a16
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
94 addition
and
65 deletion
+94
-65
docs/app-payment-paypal.md
docs/app-payment-paypal.md
+94
-65
未找到文件。
docs/app-payment-paypal.md
浏览文件 @
68e03510
#### 开通
*
登录
[
paypal开发者中心
](
https://developer.paypal.com/developer/applications
)
*
创建应用,获取ClientID
*
添加returnURL等相关配置
### 开通
-
登录
[
paypal开发者中心
](
https://developer.paypal.com/developer/applications
)
,创建应用
-
在 My Apps 中点击已创建的应用,获取ClientID(支付订单中需要)
-
添加return URL等相关配置,设置return URL时需注意:
+
格式为“包名+://paypalpay”,必需全小写
+
可添加多个return URL分别给Android和iOS平台使用
更多信息详见
[
paypal开通文档
](
https://uniapp.dcloud.io/app-payment-paypal-open
)
更多信息详见
[
申请开通Paypal操作指南
](
https://uniapp.dcloud.io/app-payment-paypal-open
)
#### 配置
### 配置
在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“paypal支付”项并配置相关参数
![](
https://partner-dcloud-native.oss-cn-hangzhou.aliyuncs.com/images/uniapp/payment/paypal_setup_manifest_info.png
)
配置说明:returnURL必须为paypal开发者中心配置的returnURL,否则无法调起支付
**参数说明**
-
returnURL_android
Android平台使用的return URL,必须与paypal开发者中心配置的值一致
-
returnURL_ios
iOS平台使用的return URL,必须与paypal开发者中心配置的值一致
> 提示:returnURL_android 和 returnURL_ios 可以相同,不相同时需要paypal开发者中心添加多个return URL
#### 服务器生成订单
通过服务器生成支付订单并获取orderId(服务器获取订单信息详见
[
paypal API
](
https://developer.paypal.com/docs/api/orders/v2/
)
)
在 App 端调用支付前,需在业务服务器生成支付订单并获取
`orderId`
,详情可参考paypal官方文档:
[
Create Order
](
https://developer.paypal.com/api/orders/v2/#orders_create
)
#### 应用内发起支付
订单信息参数如下
| 参数名称 | 参数说明 | 必须 |
|-------------|-------|-----|
| clientId | 客户端id(获取方式详见paypal开通文档) | 是 |
| orderId | 订单id | 是 |
| environment | 运行环境(sandbox/live) |是 |
| userAction | 按钮样式(paynow/continue) | 否 |
| currency |
[
币种
](
https://developer.paypal.com/docs/api/reference/currency-codes/
)
(
必须大写
)
| 否 |
*
uni-app项目示例(provider填写paypal)
-
uni-app项目
调用
[
uni.requestPayment(OBJECT)
](
https://uniapp.dcloud.io/api/plugins/payment?id=requestpayment
)
发起支付,OBJECT参数中provider属性值固定为
`paypal`
、orderInfo属性值为订单对象
-
5+ App项目
调用
[
plus.payment.request(channel, orderInfo, successCB, errorCB)
](
https://www.html5plus.org/doc/zh_cn/payment.html#plus.payment.request
)
发起支付, channel参数为paypal支付对象,orderInfo参数为订单对象
##### 订单对象参数说明
Object对象类型
| 属性 | 类型 | 必填 | 说明 |
| :--- | :--- | :--- | :--- |
| clientId | String | 是 | 客户端id,在paypal开发者中心创建应用时可获取 |
| currency | String | 否 | 币种,必须大写,取值参考paypal官方文档
[
Currency Codes
](
https://developer.paypal.com/docs/api/reference/currency-codes/
)
|
| environment | String | 是 | 运行环境,可取值sandbox/live,sandbox表示沙盒环境(用于开发测试),live表示线上环境(正式发布) |
| orderId | String | 是 | 订单id,服务器生成支付订单时可获取 |
| userAction | String | 否 | 按钮样式,可取值paynow/continue |
#### 示例代码
-
uni-app项目
```
js
//订单对象,从服务器获取
var
orderInfo
=
{
"
clientId
"
:
"
clientId from paypal
"
,
//客户端id
"
orderId
"
:
"
orderId from server
"
,
//订单id
"
userAction
"
:
"
continue
"
,
// paynow/continue
"
currency
"
:
"
USD
"
,
// 币种
"
environment
"
:
"
sandbox
"
,
//运行环境 sandbox/live
};
uni
.
getProvider
({
service
:
'
payment
'
,
success
:
function
(
res
)
{
console
.
log
(
res
.
provider
)
if
(
~
res
.
provider
.
indexOf
(
'
paypal
'
))
{
uni
.
requestPayment
({
"
provider
"
:
"
paypal
"
,
"
orderInfo
"
:
{
"
clientId
"
:
clientId
,
//客户端id
"
orderId
"
:
orderId
,
//订单id
"
userAction
"
:
"
continue
"
,
// paynow/continue
"
currency
"
:
"
USD
"
,
//币种
"
environment
"
:
"
sandbox
"
,
//运行环境 sandbox/live
},
success
:
function
(
res
)
{
var
rawdata
=
JSON
.
parse
(
res
.
rawdata
);
console
.
log
(
"
orderId:
"
+
rawdata
.
orderId
);
},
fail
:
function
(
err
)
{
console
.
log
(
'
fail:
'
+
JSON
.
stringify
(
err
));
}
})
}
}
service
:
'
payment
'
,
success
:
function
(
res
)
{
console
.
log
(
res
.
provider
)
if
(
~
res
.
provider
.
indexOf
(
'
paypal
'
))
{
uni
.
requestPayment
({
"
provider
"
:
"
paypal
"
,
"
orderInfo
"
:
orderInfo
,
success
:
function
(
res
)
{
var
rawdata
=
JSON
.
parse
(
res
.
rawdata
);
console
.
log
(
"
orderId:
"
+
rawdata
.
orderId
);
},
fail
:
function
(
err
)
{
console
.
log
(
'
fail:
'
+
JSON
.
stringify
(
err
));
}
});
}
}
});
```
*
5+App项目示例
```
js
//获取支付渠道
var
paypalSev
=
null
;
plus
.
payment
.
getChannels
(
function
(
channels
)
{
for
(
var
i
in
channels
)
{
-
5+ App项目
```
js
//订单对象,从服务器获取
var
orderInfo
=
{
"
clientId
"
:
"
clientId from paypal
"
,
//客户端id
"
orderId
"
:
"
orderId from server
"
,
//订单id
"
userAction
"
:
"
continue
"
,
// paynow/continue
"
currency
"
:
"
USD
"
,
// 币种
"
environment
"
:
"
sandbox
"
,
//运行环境 sandbox/live
};
//获取支付渠道
var
paypalSev
=
null
;
plus
.
payment
.
getChannels
(
function
(
channels
){
for
(
var
i
in
channels
)
{
var
channel
=
channels
[
i
];
if
(
channel
.
id
===
'
paypal
'
)
{
paypalSev
=
channel
;
paypalSev
=
channel
;
}
}
},
function
(
e
)
{
console
.
log
(
"
获取支付渠道失败:
"
+
e
.
message
);
});
}
//发起支付
var
statement
=
{
"
clientId
"
:
clientId
,
//客户端id
"
orderId
"
:
orderId
,
//订单id
"
userAction
"
:
"
continue
"
,
// paynow/continue
"
currency
"
:
"
USD
"
,
//币种
"
environment
"
:
"
sandbox
"
,
//运行环境 sandbox/live
};
plus
.
payment
.
request
(
this
.
paypalSev
,
statement
,
function
(
result
)
{
var
rawdata
=
JSON
.
parse
(
result
.
rawdata
);
console
.
log
(
"
orderId:
"
+
rawdata
.
orderId
);
plus
.
payment
.
request
(
paypalSev
,
orderInfo
,
function
(
result
)
{
var
rawdata
=
JSON
.
parse
(
result
.
rawdata
);
console
.
log
(
"
支付成功
"
);
},
function
(
e
)
{
console
.
log
(
"
支付失败:
"
+
e
.
message
);
console
.
log
(
"
支付失败:
"
+
JSON
.
stringify
(
e
)
);
});
},
function
(
e
){
console
.
log
(
"
获取支付渠道失败:
"
+
JSON
.
stringify
(
e
));
});
```
#### 服务器授权(完成授权后才会扣款)
应用发起支付完成后,返回订单id,服务器捕获或授权订单
[
详见paypal API
](
https://developer.paypal.com/docs/api/orders/v2/
)
### 服务器授权
在App端发起支付完成后,返回订单id,并没有完成支付操作,需要在服务器授权或捕获订单完成扣款。
-
授权订单付款参考paypal官方文档:
[
Authorize payment for order
](
https://developer.paypal.com/api/orders/v2/#orders_authorize
)
-
捕获订单付款参考paypal官方文档:
[
Capture payment for order
](
https://developer.paypal.com/api/orders/v2/#orders_capture
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录