Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
a3477b9f
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a3477b9f
编写于
5月 29, 2023
作者:
VK1688
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update uni-pay.md
上级
e82f4182
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
27 deletion
+6
-27
docs/uniCloud/uni-pay.md
docs/uniCloud/uni-pay.md
+6
-27
未找到文件。
docs/uniCloud/uni-pay.md
浏览文件 @
a3477b9f
...
...
@@ -1040,12 +1040,6 @@ module.exports = async (obj) => {
```
js
'
use strict
'
;
// 引入配置中心模块
const
configCenter
=
require
(
"
uni-config-center
"
);
// 获取uniPay配置
const
config
=
configCenter
({
pluginId
:
'
uni-pay
'
}).
requireFile
(
'
config.js
'
);
// 引入crypto模块
const
crypto
=
require
(
"
crypto
"
);
/**
* 此处建议只改下订单状态,保证能及时返回给第三方支付服务器成功状态
* 限制4秒内必须执行完全部的异步回调逻辑,建议将消息发送、返佣、业绩结算等业务逻辑异步处理(如用定时任务去处理这些异步逻辑)
...
...
@@ -1053,6 +1047,7 @@ const crypto = require("crypto");
* 特别注意:因为金额是前端传的,需要再判断下金额和你业务系统订单中的金额是否一致,如果不一致,直接返回 return false;
* 特别注意:因为金额是前端传的,需要再判断下金额和你业务系统订单中的金额是否一致,如果不一致,直接返回 return false;
*/
const
payCrypto
=
require
(
'
../libs/crypto.js
'
);
// 获取加密服务
module
.
exports
=
async
(
obj
)
=>
{
let
user_order_success
=
true
;
let
{
data
=
{}
}
=
obj
;
...
...
@@ -1066,8 +1061,11 @@ module.exports = async (obj) => {
// 有三种方式
// 方式三:使用 await uniCloud.httpclient.request 调用http接口地址
// 方式三安全模式一(加密)
let
encrypted
=
encryptUseAes256Ecb
(
data
);
// 获得加密后的内容
// 方式三安全模式一(加密)uni-pay的版本需 >= 2.1.0
let
encrypted
=
payCrypto
.
aes
.
encrypt
({
mode
:
"
aes-256-ecb
"
,
data
:
data
,
// 待加密的原文
});
await
uniCloud
.
httpclient
.
request
(
"
你的服务器接口请求地址
"
,
{
method
:
"
POST
"
,
data
:
{
...
...
@@ -1090,25 +1088,6 @@ module.exports = async (obj) => {
return
user_order_success
;
};
// aes-256-ecb加密算法
function
encryptUseAes256Ecb
(
data
,
key
)
{
if
(
!
key
)
key
=
config
.
notifyKey
;
// 如果未传密钥,则用配置的密钥(密钥必须是32位的,只能是数字或字母)
let
paddedData
=
Buffer
.
from
(
JSON
.
stringify
(
data
));
let
paddedkey
=
key
;
if
(
paddedkey
.
length
>
32
)
{
paddedkey
=
paddedkey
.
substring
(
0
,
32
);
// 截取前32位密钥
}
paddedkey
=
Buffer
.
from
(
paddedkey
);
const
cipher
=
crypto
.
createCipheriv
(
'
aes-256-ecb
'
,
paddedkey
,
''
);
cipher
.
setAutoPadding
(
false
);
const
blockSize
=
16
;
// AES块大小为16字节
const
paddingSize
=
blockSize
-
(
paddedData
.
length
%
blockSize
);
const
paddingBuffer
=
Buffer
.
alloc
(
paddingSize
,
paddingSize
);
paddedData
=
Buffer
.
concat
([
paddedData
,
paddingBuffer
]);
let
encrypted
=
cipher
.
update
(
paddedData
,
null
,
'
base64
'
);
encrypted
+=
cipher
.
final
(
'
base64
'
);
return
encrypted
;
}
```
#### java解密示例代码
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录