Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
Njzj.Biz.Bocoms.Openapis.V4.5
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶然
Njzj.Biz.Bocoms.Openapis.V4.5
Commits
a4129a2c
Commit
a4129a2c
authored
Nov 20, 2023
by
陶然
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新
parent
a5ce2103
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
123 additions
and
2 deletions
+123
-2
Extension.cs
Extension.cs
+111
-1
RestfulMpng.cs
RestfulMpng.cs
+11
-0
MPNG020702ResponseV1.cs
Sdk/response/MPNG020702ResponseV1.cs
+1
-1
No files found.
Extension.cs
View file @
a4129a2c
...
@@ -21,6 +21,55 @@ namespace Com.Bocom.OpenApi
...
@@ -21,6 +21,55 @@ namespace Com.Bocom.OpenApi
{
{
public
static
class
Extension
public
static
class
Extension
{
{
/// <summary>
/// 获取扫码支付账户
/// </summary>
private
static
Dictionary
<
string
,
Account
>
_depositAccounts
=
new
Dictionary
<
string
,
Account
>();
public
static
Account
GetBocomAccount
(
this
CurrencyUnit
currency
)
{
(
currency
==
CurrencyUnit
.
Unsupported
).
ThrowIfTrue
(
"不支持的货币单位!"
);
var
key
=
KiviiContext
.
GetUrnKey
(
$"
{
currency
}{
Configs
.
mer_ptc_id
}
"
);
//var key = KiviiContext.GetUrnKey(currency.ToString());
//如果包含这个币种,直接返回
if
(
_depositAccounts
.
ContainsKey
(
key
))
{
return
_depositAccounts
[
key
];
}
var
conn
=
KiviiContext
.
GetOpenedDbConnection
<
Account
>();
//得到所有平衡帐户,并赋值给静态变量,减少数据库操作
var
depositAccount
=
conn
.
Single
<
Account
>(
o
=>
o
.
Type
==
AccountType
.
Deposit
&&
o
.
Currency
==
currency
&&
o
.
SerialNumber
==
Configs
.
mer_ptc_id
);
if
(
depositAccount
!=
null
)
_depositAccounts
[
key
]
=
depositAccount
;
//如果从数据库中得到了,直接返回
if
(
_depositAccounts
.
ContainsKey
(
key
))
{
return
_depositAccounts
[
key
];
}
var
depositKvid
=
Guid
.
NewGuid
();
//new Guid($"BA1A0CE0-{currencyString}-0000-0000-000000000000");
Account
rtns
=
new
Account
();
rtns
.
Kvid
=
depositKvid
;
rtns
.
Type
=
AccountType
.
Deposit
;
rtns
.
Currency
=
currency
;
rtns
.
OwnerKvid
=
KiviiContext
.
CurrentMember
.
OrganizationKvid
;
rtns
.
OwnerName
=
KiviiContext
.
CurrentMember
.
OrganizationName
;
rtns
.
Name
=
"扫码支付账户"
;
rtns
.
SerialNumber
=
Configs
.
mer_ptc_id
;
rtns
.
CreditLine
=
999999999
;
rtns
.
Amount
=
0
;
rtns
.
Summary
=
"系统扫码支付账户,自动创建,禁止操作"
;
rtns
.
Remark
=
""
;
if
(
conn
.
Insert
(
rtns
)
==
1
)
{
_depositAccounts
[
key
]
=
rtns
;
return
rtns
;
}
throw
new
Exception
(
"系统创建扫码支付账户失败,请联系系统管理员。"
);
}
public
static
AddContractOrderResponseV2
RequestAddContractOrderV2
(
Settlement
settlement
,
out
string
err
)
public
static
AddContractOrderResponseV2
RequestAddContractOrderV2
(
Settlement
settlement
,
out
string
err
)
{
{
if
(
settlement
==
null
)
if
(
settlement
==
null
)
...
@@ -193,7 +242,6 @@ namespace Com.Bocom.OpenApi
...
@@ -193,7 +242,6 @@ namespace Com.Bocom.OpenApi
}
}
}
}
public
static
MPNG210001ResponseV1
GenerateReceiveCode
(
List
<
Settlement
>
settlements
,
string
uniqueCode
=
null
)
public
static
MPNG210001ResponseV1
GenerateReceiveCode
(
List
<
Settlement
>
settlements
,
string
uniqueCode
=
null
)
{
{
if
(
settlements
.
IsNullOrEmpty
())
return
null
;
if
(
settlements
.
IsNullOrEmpty
())
return
null
;
...
@@ -332,5 +380,67 @@ namespace Com.Bocom.OpenApi
...
@@ -332,5 +380,67 @@ namespace Com.Bocom.OpenApi
throw
ex
;
throw
ex
;
}
}
}
}
/// <summary>
/// 收款码支付完成,自动核销对应结算单信息
/// </summary>
/// <param name="receiveCode"></param>
public
static
void
ReceiveCodePaied
(
this
ReceiveCode
receiveCode
)
{
receiveCode
.
ThrowIfNull
(
"支付信息不能为空!"
);
var
connR
=
KiviiContext
.
GetOpenedDbConnection
<
ReceiveCodeDetail
>();
var
query
=
connR
.
From
<
ReceiveCodeDetail
>();
query
.
Where
(
o
=>
o
.
ReceiveCodeKvid
==
receiveCode
.
Kvid
);
query
.
Select
(
o
=>
new
{
o
.
BizKvid
});
var
bizKvids
=
connR
.
Select
<
Guid
>(
query
);
if
(
bizKvids
.
IsNullOrEmpty
())
return
;
var
conn
=
KiviiContext
.
GetOpenedDbConnection
<
Settlement
>();
var
settlements
=
conn
.
Select
<
Settlement
>(
o
=>
Sql
.
In
(
o
.
Kvid
,
bizKvids
));
if
(
settlements
.
IsNullOrEmpty
())
return
;
if
(
settlements
.
Exists
(
o
=>
o
.
OffsetKvid
!=
Guid
.
Empty
))
return
;
if
(
settlements
.
Sum
(
o
=>
o
.
AmountPayment
)
>=
settlements
.
Sum
(
o
=>
o
.
Amount
))
return
;
var
amountSettlement
=
settlements
.
Sum
(
o
=>
o
.
Amount
);
//var amountSettlementPlan = settlements.Sum(o => o.AmountPlan);
var
amountPayed
=
settlements
.
Sum
(
o
=>
o
.
AmountPayment
);
var
amountTotal
=
decimal
.
Parse
(
receiveCode
.
total_amount
);
if
(
amountTotal
!=
amountSettlement
-
amountPayed
)
return
;
var
account
=
CurrencyUnit
.
CNY
.
GetBocomAccount
();
var
accountBiz
=
CurrencyUnit
.
CNY
.
GetBizAccount
();
var
accountDetails
=
settlements
.
Paying
(
account
,
accountBiz
,
out
var
pays
,
amountTotal
);
var
trans
=
conn
.
OpenTransaction
();
try
{
foreach
(
var
item
in
pays
)
{
conn
.
Insert
(
item
);
}
accountDetails
.
ForEach
(
o
=>
o
.
Insert
(
conn
));
//创建账户明细
#
region
同步更新泛型
Settlement
表中数据
foreach
(
var
item
in
settlements
)
{
if
(!
item
.
OnlyProperties
.
IsNullOrEmpty
())
{
item
.
Category
=
"扫码支付"
;
item
.
AddOnlyProperties
(
o
=>
o
.
Category
);
item
.
Metadata
[
"ReceiveCode"
]
=
receiveCode
.
pay_mer_tran_no
;
item
.
AddOnlyProperties
(
o
=>
o
.
Metadata
);
conn
.
UpdateOnly
(
item
);
//更新了Paykvid和AmountPayment
}
}
#
endregion
trans
.
Commit
();
}
catch
(
Exception
ex
)
{
trans
.
Rollback
();
throw
ex
;
}
}
}
}
}
}
RestfulMpng.cs
View file @
a4129a2c
...
@@ -157,6 +157,11 @@ namespace Njzj.Bocoms.Openapis
...
@@ -157,6 +157,11 @@ namespace Njzj.Bocoms.Openapis
if
(
existCode
.
tran_state
.
ToUpper
()
==
"SUCCESS"
)
//查出来已经成功付款了 直接返回
if
(
existCode
.
tran_state
.
ToUpper
()
==
"SUCCESS"
)
//查出来已经成功付款了 直接返回
{
{
rtns
.
Results
.
Add
(
existCode
);
rtns
.
Results
.
Add
(
existCode
);
var
th
=
KiviiContext
.
NewThread
(()
=>
{
existCode
.
ReceiveCodePaied
();
});
th
.
Start
();
}
}
else
//如果查出来并不是成功付款,就去调用交行接口查看返回值情况,根据返回值选择性更新当前订单信息或者订单超时支付等一些问题就要从系统中删除
else
//如果查出来并不是成功付款,就去调用交行接口查看返回值情况,根据返回值选择性更新当前订单信息或者订单超时支付等一些问题就要从系统中删除
{
{
...
@@ -181,6 +186,12 @@ namespace Njzj.Bocoms.Openapis
...
@@ -181,6 +186,12 @@ namespace Njzj.Bocoms.Openapis
existCode
.
AddOnlyProperties
(
o
=>
o
.
tran_content
);
existCode
.
AddOnlyProperties
(
o
=>
o
.
tran_content
);
conn
.
UpdateOnly
(
existCode
);
conn
.
UpdateOnly
(
existCode
);
existCode
.
RemoveAllOnlyProperties
();
existCode
.
RemoveAllOnlyProperties
();
var
th
=
KiviiContext
.
NewThread
(()
=>
{
existCode
.
ReceiveCodePaied
();
});
th
.
Start
();
}
}
else
if
(
order
.
rsp_body
.
tran_state
.
ToUpper
()
==
"PROCESS"
)
//仍然在操作中的情况
else
if
(
order
.
rsp_body
.
tran_state
.
ToUpper
()
==
"PROCESS"
)
//仍然在操作中的情况
{
{
...
...
Sdk/response/MPNG020702ResponseV1.cs
View file @
a4129a2c
...
@@ -53,7 +53,7 @@ namespace Com.Bocom.OpenApi
...
@@ -53,7 +53,7 @@ namespace Com.Bocom.OpenApi
/// 支付账户类型 </summary>
/// 支付账户类型 </summary>
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @JsonProperty("account_type") private String accountType;
//ORIGINAL LINE: @JsonProperty("account_type") private String accountType;
internal
string
accountType
;
//
internal string accountType;
public
string
account_type
{
get
;
set
;
}
public
string
account_type
{
get
;
set
;
}
/// <summary>
/// <summary>
...
...
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