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
b4715d90
Commit
b4715d90
authored
Aug 22, 2023
by
陶然
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
实现结算调用扫码支付功能
parent
34f99068
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
141 additions
and
62 deletions
+141
-62
Configs.cs
Configs.cs
+2
-0
ReceiveCode.cs
Entities/ReceiveCode.cs
+32
-2
Extension.cs
Extension.cs
+14
-42
RestfulMpng.cs
RestfulMpng.cs
+93
-18
WriteOffResultResponseV2.cs
Sdk/response/WriteOffResultResponseV2.cs
+0
-0
No files found.
Configs.cs
View file @
b4715d90
...
@@ -11,6 +11,8 @@ namespace Com.Bocom.OpenApi
...
@@ -11,6 +11,8 @@ namespace Com.Bocom.OpenApi
internal
static
string
APIGW_URL_ADDRESS
=
"https://open.test.bankcomm.com:9443/uat"
;
//"https://117.184.192.242:9443";
internal
static
string
APIGW_URL_ADDRESS
=
"https://open.test.bankcomm.com:9443/uat"
;
//"https://117.184.192.242:9443";
internal
static
string
QR_CODE_APIGW_URL_ADDRESS
=
"https://open.test.bankcomm.com:9443"
;
//"https://117.184.192.242:9443";
internal
static
string
QR_CODE_APIGW_URL_ADDRESS
=
"https://open.test.bankcomm.com:9443"
;
//"https://117.184.192.242:9443";
public
const
string
TableNameReceiveCode
=
"BCOM_ReceiveCodes"
;
public
const
string
TableNameReceiveCode
=
"BCOM_ReceiveCodes"
;
public
const
string
TableNameWriteOffResultNotify
=
"BCOM_WriteOffResultNotifys"
;
public
const
string
TableNameReceiveCodeDetail
=
"BCOM_ReceiveCodeDetails"
;
/// <summary>
/// <summary>
/// APP_ID:通过内管查看详情,可获取对应的组织机构、接入方式、公钥等信息;APP管理中查看
/// APP_ID:通过内管查看详情,可获取对应的组织机构、接入方式、公钥等信息;APP管理中查看
...
...
Entities/ReceiveCode.cs
View file @
b4715d90
...
@@ -35,10 +35,10 @@ namespace Njzj.Bocoms.Openapis.Entities
...
@@ -35,10 +35,10 @@ namespace Njzj.Bocoms.Openapis.Entities
[
ApiMember
(
Description
=
"门店识别号"
)]
[
ApiMember
(
Description
=
"门店识别号"
)]
[
StringLength
(
200
)]
[
StringLength
(
200
)]
public
string
shop_id
{
get
;
set
;
}
public
string
shop_id
{
get
;
set
;
}
[
ApiMember
(
Description
=
"商户交易编号"
)]
[
ApiMember
(
Description
=
"商户交易编号"
)]
[
Unique
]
[
Unique
,
IgnoreUpdate
]
[
StringLength
(
200
)]
[
StringLength
(
200
)]
public
string
pay_mer_tran_no
{
get
;
set
;
}
public
string
pay_mer_tran_no
{
get
;
set
;
}
...
@@ -82,4 +82,34 @@ namespace Njzj.Bocoms.Openapis.Entities
...
@@ -82,4 +82,34 @@ namespace Njzj.Bocoms.Openapis.Entities
public
string
tran_content
{
get
;
set
;
}
public
string
tran_content
{
get
;
set
;
}
}
}
[
Api
(
Description
=
"收款码明细"
)]
[
Alias
(
Configs
.
TableNameReceiveCodeDetail
)]
public
class
ReceiveCodeDetail
:
EntityWithMetadata
{
[
DefaultEmptyGuid
]
public
Guid
ReceiveCodeKvid
{
get
;
set
;
}
[
ApiMember
(
Description
=
"商户交易编号"
)]
[
StringLength
(
200
)]
public
string
PayMerTranNo
{
get
;
set
;
}
[
ApiMember
(
Description
=
"付款单位"
)]
[
StringLength
(
500
)]
public
string
PayerName
{
get
;
set
;
}
[
IgnoreUpdate
]
[
DefaultEmptyGuid
]
public
Guid
BizKvid
{
get
;
set
;
}
[
ApiMember
(
Description
=
"业务流水号"
)]
[
IgnoreUpdate
]
[
StringLength
(
200
)]
public
string
BizId
{
get
;
set
;
}
[
ApiMember
(
Description
=
"业务类型"
)]
[
IgnoreUpdate
]
[
StringLength
(
100
)]
public
string
BizType
{
get
;
set
;
}
}
}
}
Extension.cs
View file @
b4715d90
...
@@ -200,24 +200,17 @@ namespace Com.Bocom.OpenApi
...
@@ -200,24 +200,17 @@ namespace Com.Bocom.OpenApi
var
amount
=
settlements
.
Sum
(
o
=>
o
.
Amount
);
var
amount
=
settlements
.
Sum
(
o
=>
o
.
Amount
);
if
(
amount
<=
0
)
return
null
;
if
(
amount
<=
0
)
return
null
;
var
uniqueCode
=
Guid
.
NewGuid
().
ToString
();
//生成二维码的唯一性交易编号
var
uniqueCode
=
Guid
.
NewGuid
().
ToString
();
//生成二维码的唯一性交易编号
var
bizIds
=
settlements
.
ConvertAll
(
o
=>
o
.
BizId
).
Join
(
"、"
);
var
summary
=
$"
{
settlements
[
0
].
BizId
}
等共
{
settlements
.
Count
}
条结算进行扫码支付!"
;
var
remark
=
settlements
.
ConvertAll
(
o
=>
o
.
BizId
).
Join
(
"、"
);
var
remark
=
settlements
[
0
].
PayerName
;
//var rtnTests = new MPNG210001ResponseV1();
if
(
bizIds
.
Length
>
200
)
bizIds
=
bizIds
.
Substring
(
0
,
200
);
//根据对接要求长度限制长度
//rtnTests.rsp_body = new MPNG210001ResponseV1.RspBody();
if
(
remark
.
Length
>
500
)
remark
=
remark
.
Substring
(
0
,
500
);
//根据对接要求长度限制长度
//rtnTests.SetBizState("S");
//rtnTests.SetRspCode("1");
var
rtnTests
=
new
MPNG210001ResponseV1
();
//rtnTests.SetRspMsg("1");
rtnTests
.
rsp_body
=
new
MPNG210001ResponseV1
.
RspBody
();
//rtnTests.rsp_body.display_code_text = "http://yunbanktest.bankcomm.com/tcipp/pmss/cipp.jsp?qrCode=https://qr.95516.com/03010000/kl6im4od20200804123754";
rtnTests
.
SetBizState
(
"S"
);
//rtnTests.rsp_body.pay_mer_tran_no = uniqueCode;
rtnTests
.
SetRspCode
(
"1"
);
rtnTests
.
SetRspMsg
(
"1"
);
//return rtnTests;
rtnTests
.
rsp_body
.
display_code_text
=
"http://yunbanktest.bankcomm.com/tcipp/pmss/cipp.jsp?qrCode=https://qr.95516.com/03010000/kl6im4od20200804123754"
;
rtnTests
.
rsp_body
.
pay_mer_tran_no
=
uniqueCode
;
return
rtnTests
;
DefaultBocomClient
client
=
new
DefaultBocomClient
(
Configs
.
QR_CODE_APP_ID
,
Configs
.
QR_CODE_MY_PRIVATE_KEY
,
Configs
.
QR_CODE_APIGW_PUBLIC_KEY
,
BocomConstants
.
ENCRYPT_TYPE_RSA_AND_AES
);
DefaultBocomClient
client
=
new
DefaultBocomClient
(
Configs
.
QR_CODE_APP_ID
,
Configs
.
QR_CODE_MY_PRIVATE_KEY
,
Configs
.
QR_CODE_APIGW_PUBLIC_KEY
,
BocomConstants
.
ENCRYPT_TYPE_RSA_AND_AES
);
/**
/**
* 测试环境可以忽略SSL证书告警,生产环境不可忽略
* 测试环境可以忽略SSL证书告警,生产环境不可忽略
...
@@ -239,7 +232,7 @@ namespace Com.Bocom.OpenApi
...
@@ -239,7 +232,7 @@ namespace Com.Bocom.OpenApi
bizContent
.
req_body
.
total_amount
=
amount
.
ToString
();
bizContent
.
req_body
.
total_amount
=
amount
.
ToString
();
bizContent
.
req_body
.
location
=
"ONLINE"
;
bizContent
.
req_body
.
location
=
"ONLINE"
;
bizContent
.
req_body
.
currency
=
"CNY"
;
bizContent
.
req_body
.
currency
=
"CNY"
;
bizContent
.
req_body
.
tran_content
=
bizIds
;
bizContent
.
req_body
.
tran_content
=
summary
;
bizContent
.
req_body
.
mer_memo
=
remark
;
bizContent
.
req_body
.
mer_memo
=
remark
;
request
.
SetBizContent
(
bizContent
);
request
.
SetBizContent
(
bizContent
);
var
response
=
client
.
Execute
(
request
,
uniqueCode
.
Replace
(
"-"
,
""
));
var
response
=
client
.
Execute
(
request
,
uniqueCode
.
Replace
(
"-"
,
""
));
...
@@ -248,6 +241,7 @@ namespace Com.Bocom.OpenApi
...
@@ -248,6 +241,7 @@ namespace Com.Bocom.OpenApi
{
{
//-----------------------记录下这份收款码的数据的信息,如果这份订单取消了就要作废--------------------------------
//-----------------------记录下这份收款码的数据的信息,如果这份订单取消了就要作废--------------------------------
var
rtns
=
response
as
MPNG210001ResponseV1
;
var
rtns
=
response
as
MPNG210001ResponseV1
;
//rtns.rsp_body.display_code_text = $"http://yunbanktest.bankcomm.com/tcipp/pmss/cipp.jsp?qrCode={rtns.rsp_body.display_code_text}";
return
rtns
;
return
rtns
;
}
}
else
else
...
@@ -256,31 +250,9 @@ namespace Com.Bocom.OpenApi
...
@@ -256,31 +250,9 @@ namespace Com.Bocom.OpenApi
}
}
}
}
public
static
MPNG020702ResponseV1
GetReceiveCodeOrder
(
string
payMerTranNo
,
List
<
Settlement
>
settlements
)
public
static
MPNG020702ResponseV1
GetReceiveCodeOrder
(
string
payMerTranNo
)
{
{
payMerTranNo
.
ThrowIfNullOrEmpty
(
"缺少订单号信息"
);
payMerTranNo
.
ThrowIfNullOrEmpty
(
"缺少订单号信息"
);
if
(
settlements
.
IsNullOrEmpty
())
return
null
;
if
(
settlements
.
Exists
(
o
=>
o
.
OffsetKvid
!=
Guid
.
Empty
||
o
.
AmountPayment
>
0
))
throw
new
Exception
(
"存在不符合生成收款码条件的结算"
);
var
amount
=
settlements
.
Sum
(
o
=>
o
.
Amount
);
if
(
amount
<=
0
)
return
null
;
var
uniqueCode
=
Guid
.
NewGuid
().
ToString
();
//生成二维码的唯一性交易编号
var
bizIds
=
settlements
.
ConvertAll
(
o
=>
o
.
BizId
).
Join
(
"、"
);
var
remark
=
settlements
.
ConvertAll
(
o
=>
o
.
BizId
).
Join
(
"、"
);
if
(
bizIds
.
Length
>
200
)
bizIds
=
bizIds
.
Substring
(
0
,
200
);
//根据对接要求长度限制长度
if
(
remark
.
Length
>
500
)
remark
=
remark
.
Substring
(
0
,
500
);
//根据对接要求长度限制长度
var
rtnTests
=
new
MPNG020702ResponseV1
();
rtnTests
.
SetBizState
(
"S"
);
rtnTests
.
SetRspCode
(
"1"
);
rtnTests
.
SetRspMsg
(
"1"
);
rtnTests
.
rsp_body
=
new
MPNG020702ResponseV1
.
RspBody
();
rtnTests
.
rsp_body
.
mer_memo
=
remark
;
rtnTests
.
rsp_body
.
total_amount
=
amount
.
ToString
();
rtnTests
.
rsp_body
.
tran_content
=
bizIds
;
return
rtnTests
;
DefaultBocomClient
client
=
new
DefaultBocomClient
(
Configs
.
QR_CODE_APP_ID
,
Configs
.
QR_CODE_MY_PRIVATE_KEY
,
Configs
.
QR_CODE_APIGW_PUBLIC_KEY
,
BocomConstants
.
ENCRYPT_TYPE_RSA_AND_AES
);
DefaultBocomClient
client
=
new
DefaultBocomClient
(
Configs
.
QR_CODE_APP_ID
,
Configs
.
QR_CODE_MY_PRIVATE_KEY
,
Configs
.
QR_CODE_APIGW_PUBLIC_KEY
,
BocomConstants
.
ENCRYPT_TYPE_RSA_AND_AES
);
/**
/**
* 测试环境可以忽略SSL证书告警,生产环境不可忽略
* 测试环境可以忽略SSL证书告警,生产环境不可忽略
...
...
RestfulMpng.cs
View file @
b4715d90
...
@@ -31,29 +31,58 @@ namespace Njzj.Bocoms.Openapis
...
@@ -31,29 +31,58 @@ namespace Njzj.Bocoms.Openapis
var
results
=
Extension
.
GenerateReceiveCode
(
settlements
);
var
results
=
Extension
.
GenerateReceiveCode
(
settlements
);
var
payMerTranNo
=
results
.
rsp_body
.
pay_mer_tran_no
;
var
payMerTranNo
=
results
.
rsp_body
.
pay_mer_tran_no
;
var
order
=
Extension
.
GetReceiveCodeOrder
(
payMerTranNo
,
settlements
);
var
order
=
Extension
.
GetReceiveCodeOrder
(
payMerTranNo
);
order
.
pay_mer_tran_no
=
payMerTranNo
;
order
.
pay_mer_tran_no
=
payMerTranNo
;
order
.
display_code_text
=
results
.
rsp_body
.
display_code_text
;
order
.
display_code_text
=
results
.
rsp_body
.
display_code_text
;
var
connB
=
KiviiContext
.
GetOpenedDbConnection
<
ReceiveCode
>();
var
connB
=
KiviiContext
.
GetOpenedDbConnection
<
ReceiveCode
>();
var
item
=
new
ReceiveCode
();
var
codeKvid
=
Guid
.
NewGuid
();
item
.
trans_code
=
results
.
rsp_head
.
trans_code
;
var
code
=
new
ReceiveCode
();
item
.
response_code
=
results
.
rsp_head
.
response_code
;
code
.
Kvid
=
codeKvid
;
item
.
response_status
=
results
.
rsp_head
.
response_status
;
code
.
trans_code
=
results
.
rsp_head
.
trans_code
;
item
.
response_time
=
results
.
rsp_head
.
response_time
;
code
.
response_code
=
results
.
rsp_head
.
response_code
;
item
.
response_msg
=
results
.
rsp_head
.
response_msg
;
code
.
response_status
=
results
.
rsp_head
.
response_status
;
item
.
shop_id
=
results
.
rsp_body
.
shop_id
;
code
.
response_time
=
results
.
rsp_head
.
response_time
;
item
.
pay_mer_tran_no
=
payMerTranNo
;
code
.
response_msg
=
results
.
rsp_head
.
response_msg
;
item
.
display_code_text
=
results
.
rsp_body
.
display_code_text
;
code
.
shop_id
=
results
.
rsp_body
.
shop_id
;
code
.
pay_mer_tran_no
=
payMerTranNo
;
code
.
display_code_text
=
results
.
rsp_body
.
display_code_text
;
item
.
tran_state
=
order
.
rsp_body
.
tran_state
;
code
.
tran_state
=
order
.
rsp_body
.
tran_state
;
item
.
tran_state_code
=
order
.
rsp_body
.
tran_state_code
;
code
.
tran_state_code
=
order
.
rsp_body
.
tran_state_code
;
item
.
tran_state_msg
=
order
.
rsp_body
.
tran_state_msg
;
code
.
tran_state_msg
=
order
.
rsp_body
.
tran_state_msg
;
item
.
mer_memo
=
order
.
rsp_body
.
mer_memo
;
code
.
mer_memo
=
order
.
rsp_body
.
mer_memo
;
item
.
total_amount
=
order
.
rsp_body
.
total_amount
;
code
.
total_amount
=
order
.
rsp_body
.
total_amount
;
item
.
order_status
=
order
.
rsp_body
.
order_status
;
code
.
order_status
=
order
.
rsp_body
.
order_status
;
item
.
tran_content
=
order
.
rsp_body
.
tran_content
;
code
.
tran_content
=
order
.
rsp_body
.
tran_content
;
connB
.
Insert
(
item
);
List
<
ReceiveCodeDetail
>
codeDetails
=
new
List
<
ReceiveCodeDetail
>();
foreach
(
var
item
in
settlements
)
{
var
detail
=
new
ReceiveCodeDetail
();
detail
.
PayMerTranNo
=
payMerTranNo
;
detail
.
ReceiveCodeKvid
=
code
.
Kvid
;
detail
.
PayerName
=
item
.
PayerName
;
detail
.
BizId
=
item
.
BizId
;
detail
.
BizType
=
item
.
BizType
;
detail
.
BizKvid
=
item
.
Kvid
;
codeDetails
.
Add
(
detail
);
}
var
trans
=
connB
.
OpenTransaction
();
try
{
foreach
(
var
item
in
codeDetails
)
{
connB
.
Insert
(
item
);
}
connB
.
Insert
(
code
);
trans
.
Commit
();
}
catch
(
Exception
ex
)
{
trans
.
Rollback
();
throw
ex
;
}
if
(
View
.
IsNullOrEmpty
())
if
(
View
.
IsNullOrEmpty
())
{
{
...
@@ -75,4 +104,50 @@ namespace Njzj.Bocoms.Openapis
...
@@ -75,4 +104,50 @@ namespace Njzj.Bocoms.Openapis
}
}
}
}
}
}
public
class
ReceiveCodeCheckState
:
RestfulExecution
<
ReceiveCode
>
{
public
string
PayMerTranNo
{
get
;
set
;
}
public
override
object
OnExecution
(
IRequest
req
,
IResponse
res
)
{
PayMerTranNo
.
ThrowIfNullOrEmpty
(
"请传入订单号!"
);
var
conn
=
KiviiContext
.
GetOpenedDbConnection
<
ReceiveCode
>();
var
existCode
=
conn
.
Single
<
ReceiveCode
>(
o
=>
o
.
pay_mer_tran_no
==
PayMerTranNo
);
if
(
existCode
==
null
)
throw
new
Exception
(
"未找到此扫码订单"
);
var
rtns
=
new
RestfulExecutionResponse
<
ReceiveCode
>();
rtns
.
Results
=
new
List
<
ReceiveCode
>();
if
(
existCode
.
tran_state
!=
"PROCESS"
)
{
rtns
.
Results
.
Add
(
existCode
);
return
rtns
;
}
var
order
=
Extension
.
GetReceiveCodeOrder
(
PayMerTranNo
);
if
(
order
.
rsp_body
.
tran_state
!=
existCode
.
tran_state
)
{
existCode
.
tran_state
=
order
.
rsp_body
.
tran_state
;
existCode
.
AddOnlyProperties
(
o
=>
o
.
tran_state
);
existCode
.
tran_state_code
=
order
.
rsp_body
.
tran_state_code
;
existCode
.
AddOnlyProperties
(
o
=>
o
.
tran_state_code
);
existCode
.
tran_state_msg
=
order
.
rsp_body
.
tran_state_msg
;
existCode
.
AddOnlyProperties
(
o
=>
o
.
tran_state_msg
);
existCode
.
mer_memo
=
order
.
rsp_body
.
mer_memo
;
existCode
.
AddOnlyProperties
(
o
=>
o
.
mer_memo
);
existCode
.
total_amount
=
order
.
rsp_body
.
total_amount
;
existCode
.
AddOnlyProperties
(
o
=>
o
.
total_amount
);
existCode
.
order_status
=
order
.
rsp_body
.
order_status
;
existCode
.
AddOnlyProperties
(
o
=>
o
.
order_status
);
existCode
.
tran_content
=
order
.
rsp_body
.
tran_content
;
existCode
.
AddOnlyProperties
(
o
=>
o
.
tran_content
);
conn
.
UpdateOnly
(
existCode
);
existCode
.
RemoveAllOnlyProperties
();
rtns
.
Results
.
Add
(
existCode
);
}
return
rtns
;
}
}
}
}
Sdk/response/WriteOffResultResponseV2.cs
View file @
b4715d90
This diff is collapsed.
Click to expand it.
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