Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
你丑我先上
unidocs-zh
提交
3cd984a9
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,发现更多精彩内容 >>
提交
3cd984a9
编写于
9月 22, 2022
作者:
C
chenruilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增 微信支付V3版本接口
上级
2f32d2f9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
107 addition
and
73 deletion
+107
-73
docs/uniCloud/unipay.md
docs/uniCloud/unipay.md
+107
-73
未找到文件。
docs/uniCloud/unipay.md
浏览文件 @
3cd984a9
...
@@ -44,23 +44,44 @@ const unipay = require('@dcloudio/unipay')
...
@@ -44,23 +44,44 @@ const unipay = require('@dcloudio/unipay')
## 初始化@init
## 初始化@init
进行初始化操作返回 unipay 实例
进行初始化操作返回 unipay 实例
### 微信支付V3
> 新增于 ```uni-pay 1.1.0```
### 微信支付
**入参说明**
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|:-------------------:| :-----: |:---:|:----------------:|:----------------------------:|
| appId | String | 是 | - | 当前应用在对应支付平台的 appId |
| mchId | String | 是 | - | 商户号 |
| v3Key | String | 是 | - | API v3 密钥 |
| appCertPath | String | 是 | - | 商户 API 证书 |
| appPrivateKeyPath | String | 是 | - | 商户 API 私钥 |
| timeout | Number | 否 | 5000 | 请求超时时间,单位:毫秒 |
```
js
const
unipayIns
=
unipay
.
initWeixinV3
({
appId
:
'
your appId
'
,
mchId
:
'
your mchId
'
,
v3Key
:
'
you parterner key
'
,
appCertPath
:
path
.
resolve
(
'
/path/to/you/cert
'
),
appPrivateKeyPath
:
path
.
resolve
(
'
/path/to/you/privateKey
'
)
})
```
### 微信支付v2
**入参说明**
**入参说明**
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
| :--------:| :-----: | :----:| :--------------------------------------------------:| :------------------------------------: |
|:---------:| :-----: | :----:|:-----------------:|:----------------------------:|
| appId | String | 是 | - | 当前应用在对应支付平台的 appId |
| appId | String | 是 | - | 当前应用在对应支付平台的 appId |
| mchId | String | 是 | - | 商户号 |
| mchId | String | 是 | - | 商户号 |
| subAppId| String | 否 | - | 子商户appId |
| subAppId | String | 否 | - | 子商户appId |
| subMchId| String | 否 | - | 子商户号 |
| subMchId | String | 否 | - | 子商户号 |
| key | String | 是 | - | 支付商户 key (API密钥) |
| key | String | 是 | - | 支付商户 key (API密钥) |
| pfx | String
|
Buffer| 使用退款功能必填|- | 微信支付商户 API 证书,主要用于退款 |
| pfx | String
|
Buffer| 使用退款功能必填| - | 微信支付商户 API 证书,主要用于退款 |
| timeout | Number | 否 | 5000 | 请求超时时间,单位:毫秒 |
| timeout | Number | 否 | 5000 | 请求超时时间,单位:毫秒 |
| signType | String | 否 | MD5 | 签名类型 |
| signType | String | 否 | MD5 | 签名类型 |
| sandbox | Boolean | 否 | false | 是否启用沙箱环境 |
| sandbox | Boolean | 否 | false | 是否启用沙箱环境 |
| clientType| String | 否 | 默认自动获取客户端类型,同
`context`
内的
`PLATFORM`
| 客户端类型,主要用于返回客户端支付参数 |
```
js
```
js
const
unipayIns
=
unipay
.
initWeixin
({
const
unipayIns
=
unipay
.
initWeixin
({
...
@@ -96,7 +117,6 @@ const unipayIns = unipay.initWeixin({
...
@@ -96,7 +117,6 @@ const unipayIns = unipay.initWeixin({
| timeout | Number | 否 | 5000 | 请求超时时间,单位:毫秒 |
| timeout | Number | 否 | 5000 | 请求超时时间,单位:毫秒 |
| signType | String | 否 | RSA2 | 签名类型 |
| signType | String | 否 | RSA2 | 签名类型 |
| sandbox | Boolean | 否 | false | 是否启用沙箱环境 |
| sandbox | Boolean | 否 | false | 是否启用沙箱环境 |
| clientType | String | 否 | 默认自动获取客户端类型,同
`context`
内的
`PLATFORM`
| 客户端类型,主要用于返回客户端支付参数|
| alipayRootCertPath | String | 否 | - |
`1.0.6+`
,支付宝根证书文件路径 |
| alipayRootCertPath | String | 否 | - |
`1.0.6+`
,支付宝根证书文件路径 |
| appCertPath | String | 否 | - |
`1.0.6+`
,应用公钥证书文件路径 |
| appCertPath | String | 否 | - |
`1.0.6+`
,应用公钥证书文件路径 |
| alipayPublicCertPath| String | 否 | - |
`1.0.6+`
,支付宝公钥证书文件路径 |
| alipayPublicCertPath| String | 否 | - |
`1.0.6+`
,支付宝公钥证书文件路径 |
...
@@ -154,8 +174,8 @@ const unipayIns = unipay.initAppleIapPayment({
...
@@ -154,8 +174,8 @@ const unipayIns = unipay.initAppleIapPayment({
| outTradeNo | String|必填 | - |商户订单号,有长度限制(微信支付为32字符以内,支付宝为64字符以内)、只能包含字母、数字、下划线;需保证在商户端不重复| |
| outTradeNo | String|必填 | - |商户订单号,有长度限制(微信支付为32字符以内,支付宝为64字符以内)、只能包含字母、数字、下划线;需保证在商户端不重复| |
| totalFee | Number|必填 | - |订单金额,单位:分 | 支付宝小程序、微信小程序|
| totalFee | Number|必填 | - |订单金额,单位:分 | 支付宝小程序、微信小程序|
| notifyUrl | String|必填 | - |支付结果通知地址,
**需要注意支付宝支付时退款也会通知到此地址,务必处理好自己的业务逻辑**
| |
| notifyUrl | String|必填 | - |支付结果通知地址,
**需要注意支付宝支付时退款也会通知到此地址,务必处理好自己的业务逻辑**
| |
| tradeType | String|非小程序支付、App支付时必填 | - |
`1.0.6+`
交易类型,见下方tradeType的说明 |- |
| spbillCreateIp| String|必填 | - |客户端IP,云函数内可以通过
`context.CLIENTIP`
获取 |- |
| spbillCreateIp| String|必填 | - |客户端IP,云函数内可以通过
`context.CLIENTIP`
获取 |- |
| tradeType | String | 是 | - | 交易类型;见下方 tradeType 的说明 |
| sceneInfo | Object|微信tradeType为MWEB时必填 | - |见下方sceneInfo的说明 |- |
| sceneInfo | Object|微信tradeType为MWEB时必填 | - |见下方sceneInfo的说明 |- |
**tradeType的说明**
**tradeType的说明**
...
@@ -254,16 +274,16 @@ uniCloud.callFunction({
...
@@ -254,16 +274,16 @@ uniCloud.callFunction({
**返回值说明**
**返回值说明**
| 参数名 | 类型 |说明 |
支持平台
|
| 参数名 | 类型 |说明 |
支持平台
|
| :----------------:| :----:| :---------------------------------------------: |
:
------:|
| :----------------:| :----:| :---------------------------------------------: |
:-
------:|
| appId | String|平台分配的应用 ID |
微信支付
|
| appId | String|平台分配的应用 ID |
微信支付
|
| mchId | String|商户号,(微信支付文档里面叫商户号:mch_id,支付宝支付叫卖家id:seller_id)|
微信支付
|
| mchId | String|商户号,(微信支付文档里面叫商户号:mch_id,支付宝支付叫卖家id:seller_id)|
微信支付
|
| outTradeNo | String|商户订单号 |
-
|
| outTradeNo | String|商户订单号 |
-
|
| transactionId | String|平台订单号 |
-
|
| transactionId | String|平台订单号 |
-
|
| tradeState | String| 订单状态,见下方订单状态说明 |
|
| tradeState | String| 订单状态,见下方订单状态说明 |
|
| totalFee | Number|标价金额 ,单位:分 |
-
|
| totalFee | Number|标价金额 ,单位:分 |
-
|
| settlementTotalFee| Number|应结订单金额,单位:分 |
-
|
| settlementTotalFee| Number|应结订单金额,单位:分 |
支付宝支付
|
| cashFee | Number|现金支付金额,单位:分 |
-
|
| cashFee | Number|现金支付金额,单位:分 |
-
|
**订单状态**
**订单状态**
...
@@ -313,11 +333,11 @@ exports.main = async function (event) {
...
@@ -313,11 +333,11 @@ exports.main = async function (event) {
**返回值说明**
**返回值说明**
| 参数名 | 类型 | 说明 | 支持平台 |
| 参数名 | 类型 | 说明 | 支持平台 |
| :-----------: | :----: | :---------------: |
:--------:
|
| :-----------: | :----: | :---------------: |
:------:
|
| appId | String | 平台分配的应用 ID |
微信支付
|
| appId | String | 平台分配的应用 ID |
微信支付V2
|
| mchId | String | 商户号 |
微信支付
|
| mchId | String | 商户号 |
微信支付V2
|
| outTradeNo | String | 商户订单号 | 支付宝支付 |
| outTradeNo | String | 商户订单号 | 支付宝支付
|
| transactionId | String | 平台订单号 | 支付宝支付 |
| transactionId | String | 平台订单号 | 支付宝支付
|
**使用示例**
**使用示例**
...
@@ -373,16 +393,16 @@ exports.main = async function (event) {
...
@@ -373,16 +393,16 @@ exports.main = async function (event) {
**入参说明**
**入参说明**
| 参数名 | 类型 |
必填 | 默认值| 说明 | 支持平台
|
| 参数名 | 类型 |
必填 | 默认值| 说明 | 支持平台
|
| :-----------: | :----:|
:--------------------------: | :----:| :----------: | :------:
|
| :-----------: | :----:|
:---------------------:| :----:| :----------: |:------:
|
| outTradeNo | String|
和 transactionId 二选一 | - | 商户订单号 | -
|
| outTradeNo | String|
和 transactionId 二选一 | - | 商户订单号 | -
|
| transactionId | String|
和 outTradeNo 二选一 | - | 平台订单号 | -
|
| transactionId | String|
和 outTradeNo 二选一 | - | 平台订单号 | -
|
| outRefundNo | String|
微信支付必填,支付宝支付选填 | - | 商户退款单号 | -
|
| outRefundNo | String|
微信支付必填,支付宝支付选填 | - | 商户退款单号 | -
|
| totalFee | Number|
微信支付必填 | - | 订单总金额 | -
|
| totalFee | Number|
微信支付必填 | - | 订单总金额 | -
|
| refundFee | Number|
必填 | - | 退款总金额 | 微信支付
|
| refundFee | Number|
必填 | - | 退款总金额 | 微信支付
|
| refundFeeType | String|
选填 | - | 货币种类 | -
|
| refundFeeType | String|
微信支付V3必填 | - | 货币种类 | 微信支付V3
|
| refundDesc | String|
选填 | - | 退款原因 | -
|
| refundDesc | String|
选填 | - | 退款原因 | -
|
| notifyUrl | String|
微信支付选填,支付宝不支持 | - | 退款通知 url,支付宝会通知获取支付参数时的通知地址| 微信支付
|
| notifyUrl | String|
微信支付选填,支付宝不支持 | - | 退款通知 url,支付宝会通知获取支付参数时的通知地址| 微信支付
|
**返回值说明**
**返回值说明**
...
@@ -415,13 +435,13 @@ exports.main = async function (event) {
...
@@ -415,13 +435,13 @@ exports.main = async function (event) {
**入参说明**
**入参说明**
| 参数名 | 类型 |
必填
| 默认值 | 说明 | 支持平台 |
| 参数名 | 类型 |
必填
| 默认值 | 说明 | 支持平台 |
| :-----------: | :----: |
:-------------------------------------------:
| :----: | :--------------------------------------------------------------------------------: | :------: |
| :-----------: | :----: |
:-----------------------------------------:
| :----: | :--------------------------------------------------------------------------------: | :------: |
| outTradeNo | String | 微信支付四选一,支付宝和 transactionId 二选一 | - | 商户订单号 | - |
| outTradeNo | String | 微信支付
V3必填,微信支付V2
四选一,支付宝和 transactionId 二选一 | - | 商户订单号 | - |
| transactionId | String |
微信支付四选一,支付宝和 outTradeNo 二选一
| - | 平台订单号 | - |
| transactionId | String |
微信支付V2四选一,支付宝和 outTradeNo 二选一
| - | 平台订单号 | - |
| outRefundNo | String |
微信支付四选一,支付宝必填
| - | 商户退款单号 | - |
| outRefundNo | String |
微信支付V2四选一,支付宝必填
| - | 商户退款单号 | - |
| refundId | String |
微信支付
四选一 | - | 平台退款单号 | 微信支付 |
| refundId | String |
微信支付V2
四选一 | - | 平台退款单号 | 微信支付 |
| offset | Number | 微信支付选填 | - | 偏移量,当部分退款次数超过 10 次时可使用,表示返回的查询结果从这个偏移量开始取记录 | - |
| offset | Number | 微信支付
V2
选填 | - | 偏移量,当部分退款次数超过 10 次时可使用,表示返回的查询结果从这个偏移量开始取记录 | - |
**注意**
**注意**
...
@@ -429,16 +449,16 @@ exports.main = async function (event) {
...
@@ -429,16 +449,16 @@ exports.main = async function (event) {
**返回值说明**
**返回值说明**
| 参数名 | 类型 |
说明 |
支持平台 |
| 参数名 | 类型 |
说明 |
支持平台 |
| :------------: | :-----------------------------: |
:--------------------------: | :--------:
|
| :------------: | :-----------------------------: |
:--------------------:|:-----:
|
| outTradeNo | String |
商户订单号 | -
|
| outTradeNo | String |
商户订单号 | -
|
| transactionId | String |
平台订单号 | -
|
| transactionId | String |
平台订单号 | -
|
| totalFee | Number |
订单金额 | -
|
| totalFee | Number |
订单金额 | -
|
| refundId | String |
平台退款单号,仅支付宝返回 | -
|
| refundId | String |
平台退款单号,仅支付宝、微信支付V3返回 | -
|
| refundFee | Number |
退款总金额 | -
|
| refundFee | Number |
退款总金额 | -
|
| refundDesc | String |
退款理由 | -
|
| refundDesc | String |
退款理由 | -
|
| refundList | Array
<
refundItem
>
|
分笔退款信息,仅微信支付返回 | 微信支付
|
| refundList | Array
<
refundItem
>
|
分笔退款信息,仅微信支付V2返回 | 微信支付V2
|
| refundRoyaltys | Array
<
refundRoyaltysItem
>
|
退分账明细信息,仅支付宝返回
| 支付宝支付 |
| refundRoyaltys | Array
<
refundRoyaltysItem
>
|
退分账明细信息,仅支付宝返回
| 支付宝支付 |
**refundItem 说明**
**refundItem 说明**
...
@@ -503,7 +523,7 @@ exports.main = async function (event) {
...
@@ -503,7 +523,7 @@ exports.main = async function (event) {
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 支持平台 |
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 支持平台 |
| :------: | :----: | :--: | :----: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------: |
| :------: | :----: | :--: | :----: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------: |
| billDate | String | 必填 | - | 下载对账单的日期,格式:2014
06
03 | - |
| billDate | String | 必填 | - | 下载对账单的日期,格式:2014
-06-
03 | - |
| billType | String | 选填 | ALL | ALL(默认值),返回当日所有订单信息(不含充值退款订单),SUCCESS,返回当日成功支付的订单(不含充值退款订单),REFUND,返回当日退款订单(不含充值退款订单),RECHARGE_REFUND,返回当日充值退款订单 | - |
| billType | String | 选填 | ALL | ALL(默认值),返回当日所有订单信息(不含充值退款订单),SUCCESS,返回当日成功支付的订单(不含充值退款订单),REFUND,返回当日退款订单(不含充值退款订单),RECHARGE_REFUND,返回当日充值退款订单 | - |
**返回值说明**
**返回值说明**
...
@@ -564,7 +584,7 @@ exports.main = async function (event) {
...
@@ -564,7 +584,7 @@ exports.main = async function (event) {
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 支持平台 |
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 支持平台 |
| :---------: | :----: | :--: | :----: | :---------------------------------------------------------------------: | :------: |
| :---------: | :----: | :--: | :----: | :---------------------------------------------------------------------: | :------: |
| billDate | String | 必填 | - | 下载对账单的日期,格式:2014
06
03 | - |
| billDate | String | 必填 | - | 下载对账单的日期,格式:2014
-06-
03 | - |
| accountType | String | 选填 | Basic | 账单的资金来源账户:Basic 基本账户,Operation 运营账户,Fees 手续费账户 | - |
| accountType | String | 选填 | Basic | 账单的资金来源账户:Basic 基本账户,Operation 运营账户,Fees 手续费账户 | - |
**返回值说明**
**返回值说明**
...
@@ -640,16 +660,30 @@ exports.main = async function (event) {
...
@@ -640,16 +660,30 @@ exports.main = async function (event) {
let
res
=
await
unipayIns
.
verifyPaymentNotify
(
event
)
let
res
=
await
unipayIns
.
verifyPaymentNotify
(
event
)
// 处理完毕其他业务
// 处理完毕其他业务
// 注意如果处理成功需要严格按照下面的格式进行返回,否则厂商会持续通知
// 注意如果处理成功需要严格按照下面的格式进行返回,否则厂商会持续通知
// 微信处理成功之后
// 微信支付V3处理成功之后
return
{
return
{
statusCode
:
200
,
mpserverlessComposedResponse
:
true
,
headers
:
{
statusCode
:
200
,
'
content-type
'
:
'
text/xml;charset=utf-8
'
headers
:
{
},
'
content-type
'
:
'
application/json
'
body
:
`<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>`
},
body
:
JSON
.
stringify
({
code
:
'
SUCCESS
'
,
message
:
'
成功
'
})
}
// 微信支付V2处理成功之后
return
{
mpserverlessComposedResponse
:
true
,
statusCode
:
200
,
headers
:
{
'
content-type
'
:
'
text/xml;charset=utf-8
'
},
body
:
`<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>`
}
}
// 支付宝处理成功后
// 支付宝处理成功后
return
{
return
{
mpserverlessComposedResponse
:
true
,
statusCode
:
200
,
statusCode
:
200
,
headers
:
{
headers
:
{
'
content-type
'
:
'
text/plain
'
'
content-type
'
:
'
text/plain
'
...
@@ -694,8 +728,8 @@ exports.main = async function (event) {
...
@@ -694,8 +728,8 @@ exports.main = async function (event) {
let
res
=
await
unipayIns
.
verifyRefundNotify
(
event
)
let
res
=
await
unipayIns
.
verifyRefundNotify
(
event
)
// 注意如果处理成功需要严格按照下面的格式进行返回,否则厂商会持续通知
// 注意如果处理成功需要严格按照下面的格式进行返回,否则厂商会持续通知
// 微信处理成功之后
// 微信处理成功之后
return
{
return
{
"
mpserverlessComposedResponse
"
:
true
,
mpserverlessComposedResponse
:
true
,
statusCode
:
200
,
statusCode
:
200
,
headers
:
{
headers
:
{
'
content-type
'
:
'
text/xml;charset=utf-8
'
'
content-type
'
:
'
text/xml;charset=utf-8
'
...
@@ -703,12 +737,12 @@ exports.main = async function (event) {
...
@@ -703,12 +737,12 @@ exports.main = async function (event) {
body
:
`<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>`
body
:
`<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>`
}
}
// 支付宝处理成功后
// 支付宝处理成功后
return
{
return
{
"
mpserverlessComposedResponse
"
:
true
,
mpserverlessComposedResponse
:
true
,
statusCode
:
200
,
statusCode
:
200
,
headers
:
{
headers
:
{
'
content-type
'
:
'
text/plain
'
'
content-type
'
:
'
text/plain
'
},
},
body
:
"
success
"
body
:
"
success
"
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录