Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zhichan
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
蒋勇
zhichan
Commits
afdfafe3
Commit
afdfafe3
authored
Oct 28, 2020
by
任晓松
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
360
parent
a771d3bb
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
242 additions
and
91 deletions
+242
-91
center-channel/app/base/api/impl/opaction/360tmOrder.js
+1
-1
center-channel/app/base/service/impl/common/qcCenterOrderSve.js
+47
-7
center-channel/app/base/service/impl/utilsSve/utils360Sve.js
+140
-43
center-channel/app/base/service/impl/utilsSve/utilsOrderSve.js
+49
-39
center-channel/app/config/routes/api.js
+5
-1
No files found.
center-channel/app/base/api/impl/opaction/360tmOrder.js
View file @
afdfafe3
...
...
@@ -26,7 +26,7 @@ class ProductAPI extends WEBBase {
pobj
.
requestId
=
req
.
requestId
;
var
opResult
=
null
;
switch
(
action_type
)
{
case
"getParamsFor360"
:
//创建订单
case
"getParamsFor360"
:
opResult
=
await
this
.
utils360Sve
.
getParamsFor360
(
pobj
,
pobj
.
actionBody
);
break
;
default
:
...
...
center-channel/app/base/service/impl/common/qcCenterOrderSve.js
View file @
afdfafe3
...
...
@@ -205,14 +205,31 @@ class QcCenterOrderService extends AppServiceBase {
async
serviceProviderNotification
(
pobj
)
{
var
res
=
await
this
.
reqCenterOrderApi
(
pobj
,
"action/qcapi/springBoard"
);
if
(
res
&&
res
.
status
==
0
&&
res
.
data
)
{
pobj
.
actionType
=
"getPayOrderInfo"
;
let
orderUrl
=
settings
.
centerOrderUrl
()
+
"action/order/springBoard"
;
let
orderResult
=
await
this
.
restPostUrl
(
pobj
,
orderUrl
);
if
(
orderResult
.
status
!=
0
){
return
system
.
getResultFail
(
-
1
,
'查询订单失败'
)
}
let
uapp_id
=
orderResult
.
data
.
receiptVoucher
.
uapp_id
;
pobj
.
appInfo
=
{
uapp_id
:
uapp_id
};
pobj
.
actionType
=
"getAppInterface"
;
var
reqUrl
=
settings
.
centerAppUrl
()
+
"action/opProduct/springBoard"
;
var
productItemInterfaceResult
=
await
this
.
restPostUrl
(
pobj
,
reqUrl
);
if
(
productItemInterfaceResult
.
status
!=
0
){
system
.
getResultFail
(
-
1
,
'获取接口参数失败'
)
}
pobj
.
interface_info
=
productItemInterfaceResult
.
data
;
pobj
.
pushObj
=
res
.
data
;
this
.
utilsPushSve
.
pushBusInfo
(
pobj
,
'pushStatus'
,
1
);
//推送数据至阿里
var
pushObj
=
{
BizId
:
res
.
data
.
BizId
,
OfficialFileURL
:
res
.
data
.
OfficialFileURL
,
ApplicationStatus
:
res
.
data
.
ApplicationStatus
};
//推送状态变更
this
.
aliclient
.
reqbyget
({
action
:
"AcceptPartnerNotification"
,
reqbody
:
pushObj
,
apiVersion
:
"2019-05-08"
});
//
var pushObj = {
//
BizId: res.data.BizId,
//
OfficialFileURL: res.data.OfficialFileURL,
//
ApplicationStatus: res.data.ApplicationStatus
//
};
//
//
推送状态变更
//
this.aliclient.reqbyget({ action: "AcceptPartnerNotification", reqbody: pushObj, apiVersion: "2019-05-08" });
return
system
.
getResultSuccess
();
}
return
res
;
...
...
@@ -635,6 +652,29 @@ async foodRecordLogList(pobj) {
return
system
.
getResultSuccess
(
res
);
}
//推送订单状态
async
pushOrderStatus
(
pobj
){
if
(
!
pobj
.
interface_params
)
{
return
system
.
getResult
(
null
,
"interface_params can not be empty,100400"
);
}
let
interface_params_info
=
JSON
.
parse
(
pobj
.
interface_params
);
if
(
!
interface_params_info
||
!
interface_params_info
.
pushUrl
||
!
interface_params_info
.
action
||
interface_params_info
.
apiVersion
)
{
return
system
.
getResult
(
null
,
"interface_params(pushUrl、action、apiVersion) can not be empty,100430"
);
}
let
pushObj
=
{
BizId
:
pobj
.
pushObj
.
BizId
,
OfficialFileURL
:
pobj
.
pushObj
.
OfficialFileURL
,
ApplicationStatus
:
pobj
.
pushObj
.
ApplicationStatus
};
let
obj
=
{
action
:
interface_params_info
.
action
,
reqbody
:
pushObj
,
apiVersion
:
interface_params_info
.
apiVersion
}
let
result
=
await
this
.
aliclient
.
reqbyget
(
obj
);
return
result
;
}
// //推送ICP方案
// async pushIcpSolution1(pushObj, solutionNo, appInfo, self) {
// //推送方案确认信息
...
...
center-channel/app/base/service/impl/utilsSve/utils360Sve.js
View file @
afdfafe3
...
...
@@ -2,56 +2,153 @@ var system = require("../../../system");
var
settings
=
require
(
"../../../../config/settings"
);
const
AppServiceBase
=
require
(
"../../app.base"
);
const
md5
=
require
(
'md5'
)
const
logCtl
=
system
.
getObject
(
"service.common.oplogSve"
);
//阿里支付类
class
utils360Sve
extends
AppServiceBase
{
constructor
()
{
super
();
this
.
centerAppUrl
=
settings
.
centerAppUrl
();
}
//-------------------------------------------钉钉h5支付-----------------开始
constructor
()
{
super
();
this
.
centerAppUrl
=
settings
.
centerAppUrl
();
this
.
utilsAuthSve
=
system
.
getObject
(
"service.utilsSve.utilsAuthSve"
)
this
.
pushlogSve
=
system
.
getObject
(
"service.common.pushlogSve"
);
}
async
getParamsFor360
(
pobj
,
actionBody
)
{
if
(
!
actionBody
.
orderNo
)
{
return
system
.
getResult
(
null
,
"actionBody.orderNo can not be empty,100110"
);
}
pobj
.
actionType
=
"getPayOrderInfo"
;
var
orderUrl
=
settings
.
centerOrderUrl
()
+
"action/order/springBoard"
;
var
orderResult
=
await
this
.
restPostUrl
(
pobj
,
orderUrl
);
if
(
orderResult
.
status
!=
0
)
{
return
orderResult
;
}
pobj
.
actionType
=
"getOrderDeliveryInfo"
;
var
deliveryResult
=
await
this
.
restPostUrl
(
pobj
,
orderUrl
);
if
(
deliveryResult
.
status
!=
0
)
{
return
deliveryResult
;
//组合参数,由前端传到360
async
getParamsFor360
(
pobj
,
actionBody
)
{
if
(
!
actionBody
.
orderNo
)
{
return
system
.
getResult
(
null
,
"actionBody.orderNo can not be empty,100110"
);
}
let
seaUrl
=
this
.
centerOrderUrl
+
'opaction/opPayOrder/getOrderListByOrderServiceNo'
;
let
seaRet
=
await
this
.
restPostUrl
(
pobj
,
seaUrl
);
if
(
seaRet
.
status
!=
0
)
{
return
system
.
getResultFail
(
-
1
,
'获取订单信息失败'
)
}
let
totalSum
=
0
;
let
sku_id
=
''
;
let
amount
=
0
;
let
consignee
=
""
;
let
mobile
=
""
;
let
email
=
""
;
for
(
let
i
=
0
;
i
<
seaRet
.
data
.
length
;
i
++
)
{
let
item
=
seaRet
.
data
[
i
];
if
(
!
mobile
){
pobj
.
actionType
.
orderNo
=
item
.
orderNo
;
pobj
.
actionType
=
"getOrderDeliveryInfo"
;
let
deliveryResult
=
await
this
.
restPostUrl
(
pobj
,
orderUrl
);
consignee
=
deliveryResult
.
data
.
orderContact
.
contactName
;
mobile
=
deliveryResult
.
data
.
orderContact
.
mobile
;
email
=
deliveryResult
.
data
.
orderContact
.
email
}
sku_id
=
item
.
itemCode
;
totalSum
+=
Number
(
item
.
totalSum
);
amount
+=
Number
(
item
.
payTotalSum
);
}
// let sku_id = orderResult.data.orderProduct.itemCode;
// let price = Number(orderResult.data.orderProduct.price)*100;
let
price
=
totalSum
*
100
;
// let quantity = seaRet.data.length;
// let amount = Number(orderResult.data.receiptVoucher.totalSum)*100;
amount
=
amount
*
100
;
let
order_id
=
pobj
.
actionBody
.
orderNo
;
// let consignee = deliveryResult.data.orderContact.contactName;
// let mobile = deliveryResult.data.orderContact.mobile;
// let email = deliveryResult.data.orderContact.email;
let
singStr
=
sku_id
+
price
+
order_id
+
pobj
.
appInfo
.
uapp_secret
;
let
sign
=
md5
(
singStr
).
toUpperCase
();
// 推送参数
let
result
=
{
sku_id
:
sku_id
,
price
:
price
,
quantity
:
seaRet
.
data
.
length
,
amount
:
amount
,
order_id
:
order_id
,
consignee
:
consignee
,
mobile
:
mobile
,
email
:
email
,
sign
:
sign
}
return
system
.
getResult
(
result
);
}
let
sku_id
=
orderResult
.
data
.
orderProduct
.
itemCode
;
let
price
=
Number
(
orderResult
.
data
.
orderProduct
.
price
)
*
100
;
let
quantity
=
orderResult
.
data
.
orderProduct
.
quantity
;
let
amount
=
Number
(
orderResult
.
data
.
receiptVoucher
.
totalSum
)
*
100
;
let
order_id
=
orderResult
.
data
.
receiptVoucher
.
sourceOrderNo
;
let
consignee
=
deliveryResult
.
data
.
orderContact
.
contactName
;
let
mobile
=
deliveryResult
.
data
.
orderContact
.
mobile
;
let
email
=
deliveryResult
.
data
.
orderContact
.
email
;
let
singStr
=
sku_id
+
price
+
order_id
+
pobj
.
appInfo
.
uapp_secret
;
let
sign
=
md5
(
singStr
).
toUpperCase
();
let
result
=
{
sku_id
,
price
,
quantity
,
amount
,
order_id
,
consignee
,
mobile
,
email
,
sign
//更新订单状态到360
async
pushOrderStatus
(
pobj
)
{
try
{
var
verifyResult
=
await
this
.
verifyParam
(
pobj
);
if
(
verifyResult
.
status
!=
0
)
{
return
await
this
.
disposePushResultFail
(
pobj
,
verifyResult
,
"status->pushOrderStatus->verifyResult"
,
this
.
pushlogFailType
.
FAILLOG
);
}
var
interface_params_info
=
verifyResult
.
data
;
let
token
=
await
this
.
utilsAuthSve
.
get360Token
();
let
url
=
interface_params_info
.
opUrl
+
'?token='
+
token
;
//合同号,还是订单号
pobj
.
actionType
=
'getOrderServiceNoByOrderNo'
let
orderUrl
=
settings
.
centerOrderUrl
()
+
'action/order/springBoard'
let
orderItem
=
await
this
.
restPostUrl
(
pobj
,
orderUrl
);
if
(
orderItem
.
status
!=
0
){
return
orderItem
;
}
let
order_id
=
orderItem
.
data
.
orderServiceNo
;
let
ApplicationStatus
=
pobj
.
pushObj
.
ApplicationStatus
;
let
status
=
0
;
if
(
Number
(
ApplicationStatus
)
<
508
)
{
status
=
30
}
else
{
status
=
40
;
}
let
pushObj
=
{
order_id
,
status
}
let
result
=
await
this
.
restPostUrl
(
pushObj
,
url
);
if
(
result
.
status
==
0
){
this
.
pushlogSve
.
createDb
({
op
:
"360-pushOrderStatus"
,
content
:
JSON
.
stringify
(
pushObj
),
//推送的参数信息
resultInfo
:
JSON
.
stringify
(
result
),
returnType
:
'1'
,
logLevel
:
'1'
,
opTitle
:
"推送360信息返回成功"
});
}
else
{
this
.
logCtl
.
error
({
appid
:
pobj
.
appInfo
?
pobj
.
appInfo
.
uapp_id
||
""
:
""
,
appkey
:
pobj
.
appInfo
?
pobj
.
appInfo
.
uapp_key
||
""
:
""
,
requestId
:
pobj
.
requestId
||
""
,
op
:
"utilsSve/utils360Sve/pushOrderStatus"
,
content
:
"error:"
+
e
.
stack
,
// clientIp: pobj.clientIp,
optitle
:
pobj
.
opType
+
"推送操作异常status->pushOrderStatus"
,
});
}
console
.
log
(
result
,
'-------------push360-----------------'
)
return
result
;
}
catch
(
e
)
{
this
.
logCtl
.
error
({
appid
:
pobj
.
appInfo
?
pobj
.
appInfo
.
uapp_id
||
""
:
""
,
appkey
:
pobj
.
appInfo
?
pobj
.
appInfo
.
uapp_key
||
""
:
""
,
requestId
:
pobj
.
requestId
||
""
,
op
:
"utilsSve/utils360Sve/pushOrderStatus"
,
content
:
"error:"
+
e
.
stack
,
// clientIp: pobj.clientIp,
optitle
:
pobj
.
opType
+
"推送操作异常status->pushOrderStatus"
,
});
}
}
return
system
.
getResult
(
result
);
}
//-------------------------------------------钉钉h5支付-----------------结束
// 参数信息验证
async
verifyParam
(
pobj
)
{
var
verify
=
system
.
getResultSuccess
();
if
(
!
pobj
.
interface_params
)
{
verify
=
system
.
getResult
(
null
,
"interface_params can not be empty,100400"
);
}
var
interface_params_info
=
JSON
.
parse
(
pobj
.
interface_params
);
if
(
!
interface_params_info
||
!
interface_params_info
.
opUrl
)
{
verify
=
system
.
getResult
(
null
,
"interface_params(pushUrl) can not be empty,100430"
);
}
verify
.
data
=
interface_params_info
;
return
verify
;
}
}
module
.
exports
=
utils360Sve
;
center-channel/app/base/service/impl/utilsSve/utilsOrderSve.js
View file @
afdfafe3
...
...
@@ -963,7 +963,7 @@ class UtilsOrderService extends AppServiceBase {
}
async
channel
PayNotify360
(
params
,
client_ip
)
{
//渠道订单支付通知
async
channel
OrdersPayNotify
(
params
,
client_ip
)
{
//渠道订单支付通知
try
{
this
.
logCtl
.
info
({
optitle
:
(
new
Date
()).
Format
(
"yyyy-MM-dd hh:mm:ss"
)
+
"渠道订单支付回调参数信息"
,
...
...
@@ -1004,47 +1004,57 @@ class UtilsOrderService extends AppServiceBase {
params
.
appInfo
=
{
uapp_id
:
appInfo
.
uapp_id
};
params
.
pay_type
=
params
.
payType
;
params
.
time_end
=
params
.
payTime
;
//修改并返回订单支付状态,创建收款单
// 这里修改了order_info的状态(status/paytime等)
var
orderUrl
=
this
.
centerOrderUrl
+
"opaction/opPayOrder/receivePayCallBackNotifyByChannel"
;
var
opOrderResult
=
await
this
.
restPostUrl
(
params
,
orderUrl
);
if
(
opOrderResult
.
status
!=
0
)
{
opOrderResult
.
data
=
null
;
return
opOrderResult
;
}
if
(
!
opOrderResult
.
data
){
return
opOrderResult
;
}
opOrderResult
.
data
.
appInfo
=
{
uapp_id
:
appInfo
.
uapp_id
,
uapp_key
:
appInfo
.
uapp_key
,
app_code
:
appInfo
.
app_code
,
app_name
:
appInfo
.
app_name
};
opOrderResult
.
data
.
userInfo
=
{
channel_userid
:
opOrderResult
.
data
.
order_info
.
channelUserId
,
channel_username
:
opOrderResult
.
data
.
order_info
.
channelUserId
,
channel_nickname
:
opOrderResult
.
data
.
order_info
.
channelUserId
};
opOrderResult
.
data
.
orderNo
=
params
.
orderNo
;
opOrderResult
.
data
.
order_info
.
pay_flow_no
=
params
.
trade_no
||
""
;
// 2020 0704 lin 新增 推送fq必填字段
opOrderResult
.
data
.
order_info
.
pay_channel
=
params
.
payType
||
""
;
//付款方式
opOrderResult
.
data
.
order_info
.
pay_time
=
params
.
payTime
;
//付款时间
opOrderResult
.
data
.
order_info
.
pay_payer_bank_no
=
params
.
buyer_email
||
""
;
//付款账号
opOrderResult
.
data
.
order_contact
=
opOrderResult
.
data
.
delivery_content
.
orderContact
;
// 修改并返回订单支付状 态,创建收款单
// 根据合同号获取所有订单 循环修改order_info 信息
let
seaUrl
=
this
.
centerOrderUrl
+
'opaction/opPayOrder/getOrderListByOrderServiceNo'
;
let
seaRet
=
await
this
.
restPostUrl
(
params
,
seaUrl
);
if
(
seaRet
.
status
!=
0
){
seaRet
.
data
=
null
;
return
seaRet
;
}
let
orderList
=
seaRet
.
data
;
for
(
let
i
=
0
;
i
<
orderList
.
length
;
i
++
){
params
.
orderNo
=
orderList
[
i
].
orderNo
;
// 这里修改了order_info的状态(status/paytime等)
var
orderUrl
=
this
.
centerOrderUrl
+
"opaction/opPayOrder/receivePayCallBackNotifyByChannel"
;
var
opOrderResult
=
await
this
.
restPostUrl
(
params
,
orderUrl
);
if
(
opOrderResult
.
status
!=
0
)
{
opOrderResult
.
data
=
null
;
continue
;
}
if
(
!
opOrderResult
.
data
){
// return opOrderResult;
continue
;
}
opOrderResult
.
data
.
appInfo
=
{
uapp_id
:
appInfo
.
uapp_id
,
uapp_key
:
appInfo
.
uapp_key
,
app_code
:
appInfo
.
app_code
,
app_name
:
appInfo
.
app_name
};
opOrderResult
.
data
.
userInfo
=
{
channel_userid
:
opOrderResult
.
data
.
order_info
.
channelUserId
,
channel_username
:
opOrderResult
.
data
.
order_info
.
channelUserId
,
channel_nickname
:
opOrderResult
.
data
.
order_info
.
channelUserId
};
opOrderResult
.
data
.
orderNo
=
params
.
orderNo
;
opOrderResult
.
data
.
order_info
.
pay_flow_no
=
params
.
trade_no
||
""
;
// 2020 0704 lin 新增 推送fq必填字段
opOrderResult
.
data
.
order_info
.
pay_channel
=
params
.
payType
||
""
;
//付款方式
opOrderResult
.
data
.
order_info
.
pay_time
=
params
.
payTime
;
//付款时间
opOrderResult
.
data
.
order_info
.
pay_payer_bank_no
=
params
.
buyer_email
||
""
;
//付款账号
opOrderResult
.
data
.
order_contact
=
opOrderResult
.
data
.
delivery_content
.
orderContact
;
var
pobj
=
{
appInfo
:
opOrderResult
.
data
.
appInfo
,
actionBody
:
opOrderResult
.
data
}
var
pobj
=
{
appInfo
:
opOrderResult
.
data
.
appInfo
,
actionBody
:
opOrderResult
.
data
}
// 推送
this
.
utilsPushSve
.
pushBusInfo
(
pobj
,
"pushOrder"
,
0
);
if
([
'icpsq'
,
'edisq'
].
includes
(
opOrderResult
.
data
.
product_info
.
channel_item_code
)){
this
.
utilsPushSve
.
aliBusiness2Delivery
(
pobj
,
"pushDeliveryOrder"
)
;
// 推送
this
.
utilsPushSve
.
pushBusInfo
(
pobj
,
"pushOrder"
,
0
);
// opOrderResult.data = null;
// return opOrderResult
;
}
opOrderResult
.
data
=
null
;
return
opOrderResult
;
return
system
.
getResultSuccess
();
}
catch
(
e
)
{
// await this.cacheManager["TlPayLocker"].release(params.orderNo);
this
.
logCtl
.
error
({
...
...
center-channel/app/config/routes/api.js
View file @
afdfafe3
...
...
@@ -203,7 +203,11 @@ module.exports = function (app) {
app
.
use
(
'/orderNotify/channelPayNotify'
,
async
function
(
req
,
res
)
{
try
{
var
client_ip
=
system
.
get_client_ip
(
req
);
var
result
=
await
utilsOrderSve
.
channelPayNotify
(
req
.
body
,
client_ip
);
if
(
req
.
body
.
orderNo
.
startWith
(
'CN'
)){
var
result
=
await
utilsOrderSve
.
channelOrdersPayNotify
(
req
.
body
,
client_ip
);
}
else
{
var
result
=
await
utilsOrderSve
.
channelPayNotify
(
req
.
body
,
client_ip
);
}
logCtl
.
info
({
optitle
:
(
new
Date
()).
Format
(
"yyyy-MM-dd hh:mm:ss"
)
+
"渠道支付订单通知 api层"
,
op
:
"center-channel/orderNotify/channelPayNotify"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment