Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mall.oytour.com
Project
Project
Details
Activity
Releases
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
黄奎
mall.oytour.com
Commits
7b071047
Commit
7b071047
authored
May 28, 2020
by
吴春
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交微信退款
parent
2da0098e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
69 additions
and
64 deletions
+69
-64
PayUtil.cs
Mall.WebApi/App_Code/PayUtil.cs
+0
-64
WeChatPayController.cs
Mall.WebApi/Controllers/AppletWeChat/WeChatPayController.cs
+69
-0
No files found.
Mall.WebApi/App_Code/PayUtil.cs
View file @
7b071047
...
@@ -41,70 +41,6 @@ namespace Mall.WebApi.App_Code
...
@@ -41,70 +41,6 @@ namespace Mall.WebApi.App_Code
public
PayUtil
()
{
}
public
PayUtil
()
{
}
// <summary>
/// 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分),
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public
BaseResult
Refund
(
PayParam
param
)
{
if
(
param
.
TotalFee
==
null
||
param
.
RefundFee
==
null
||
string
.
IsNullOrWhiteSpace
(
param
.
OrderNumber
)
||
string
.
IsNullOrWhiteSpace
(
param
.
RefundNumber
))
{
return
new
BaseResult
()
{
IsSuccess
=
false
,
Message
=
"参数错误!"
};
}
#
region
微信退款
RB_MiniProgram
model
=
new
RB_MiniProgram
();
var
packageReq
=
new
RequestHandler
();
packageReq
.
SetKey
(
model
.
WeChatApiSecret
);
packageReq
.
SetParameter
(
"appid"
,
model
.
MiniAppId
);
packageReq
.
SetParameter
(
"mch_id"
,
model
.
WeChatPayMerchants
);
packageReq
.
SetParameter
(
"nonce_str"
,
GetNoncestr
());
//packageReq.SetParameter("transaction_id", param.OrderNumber);
packageReq
.
SetParameter
(
"out_trade_no"
,
param
.
OrderNumber
);
packageReq
.
SetParameter
(
"out_refund_no"
,
param
.
RefundNumber
);
packageReq
.
SetParameter
(
"total_fee"
,
(
param
.
TotalFee
.
Value
).
ToString
(
CultureInfo
.
InvariantCulture
));
packageReq
.
SetParameter
(
"refund_fee"
,
param
.
RefundFee
.
Value
.
ToString
(
CultureInfo
.
InvariantCulture
));
//packageReq.SetParameter("op_user_id", param.WeChatType.Equals(WeChatType.Public) ? EheMall.WeChat.Common.WeChatConfig.GetMchId() : EheMall.WeChat.Common.WeChatConfig.GetOpenMchID());//操作员,默认为商户号
packageReq
.
SetParameter
(
"sign"
,
packageReq
.
CreateMd5Sign
());
var
reqXml
=
packageReq
.
ParseXml
();
var
result
=
Common
.
Pay
.
WeChatPat
.
HttpHelper
.
Post
(
new
HttpParam
()
{
Url
=
"https://api.mch.weixin.qq.com/secapi/pay/refund"
,
PostParam
=
reqXml
,
Encoding
=
Common
.
Pay
.
WeChatPat
.
HttpHelper
.
GetRequestEncoding
(
_accessor
.
HttpContext
.
Request
),
//HttpContext.Current.Request.ContentEncoding,
CertPath
=
model
.
WeChatPayCertificateUrl
,
//Path.Combine(AppDomain.CurrentDomain.BaseDirectory, param.WeChatType.Equals(WeChatType.Public) ? EheMall.WeChat.Common.WeChatConfig.GetCertPath() : EheMall.WeChat.Common.WeChatConfig.GetOpenCertPath()),
CertPwd
=
model
.
WeChatApiSecret
// param.WeChatType.Equals(WeChatType.Public) ? EheMall.WeChat.Common.WeChatConfig.GetCertPwd() : EheMall.WeChat.Common.WeChatConfig.GetOpenCertPwd()
});
var
xe
=
XElement
.
Parse
(
result
,
LoadOptions
.
SetLineInfo
);
var
returnCode
=
xe
.
GetElement
(
"return_code"
).
Value
;
//退款成功
if
(
returnCode
.
Equals
(
"SUCCESS"
))
{
var
resultCode
=
xe
.
GetElement
(
"result_code"
).
Value
;
if
(
resultCode
.
Equals
(
"SUCCESS"
))
{
var
outTradeNo
=
xe
.
GetElement
(
"out_trade_no"
).
Value
;
//在外面回写订单
return
new
BaseResult
()
{
IsSuccess
=
true
,
Data
=
new
Dictionary
<
string
,
string
>
{
{
"OrderNumber"
,
outTradeNo
}
}
};
}
}
var
errCodeDes
=
xe
.
GetElement
(
"err_code_des"
)
==
null
?
""
:
xe
.
GetElement
(
"err_code_des"
).
Value
;
var
returnMsg
=
xe
.
GetElement
(
"return_msg"
)
==
null
?
""
:
xe
.
GetElement
(
"return_msg"
).
Value
;
return
new
BaseResult
()
{
IsSuccess
=
false
,
Message
=
returnMsg
+
errCodeDes
};
#
endregion
}
...
...
Mall.WebApi/Controllers/AppletWeChat/WeChatPayController.cs
View file @
7b071047
...
@@ -236,5 +236,74 @@ namespace Mall.WebApi.Controllers.AppletWeChat
...
@@ -236,5 +236,74 @@ namespace Mall.WebApi.Controllers.AppletWeChat
}
}
// <summary>
/// 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分),
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public
BaseResult
Refund
(
PayParam
param
)
{
App_Code
.
PayUtil
payUtil
=
new
App_Code
.
PayUtil
();
if
(
param
.
TotalFee
==
null
||
param
.
RefundFee
==
null
||
string
.
IsNullOrWhiteSpace
(
param
.
OrderNumber
)
||
string
.
IsNullOrWhiteSpace
(
param
.
RefundNumber
))
{
return
new
BaseResult
()
{
IsSuccess
=
false
,
Message
=
"参数错误!"
};
}
#
region
微信退款
RB_MiniProgram_Extend
model
=
new
RB_MiniProgram_Extend
();
var
packageReq
=
new
RequestHandler
();
packageReq
.
SetKey
(
model
.
WeChatApiSecret
);
packageReq
.
SetParameter
(
"appid"
,
model
.
MiniAppId
);
packageReq
.
SetParameter
(
"mch_id"
,
model
.
WeChatPayMerchants
);
packageReq
.
SetParameter
(
"nonce_str"
,
payUtil
.
GetNoncestr
());
//packageReq.SetParameter("transaction_id", param.OrderNumber);
packageReq
.
SetParameter
(
"out_trade_no"
,
param
.
OrderNumber
);
packageReq
.
SetParameter
(
"out_refund_no"
,
param
.
RefundNumber
);
packageReq
.
SetParameter
(
"total_fee"
,
(
param
.
TotalFee
.
Value
).
ToString
(
System
.
Globalization
.
CultureInfo
.
InvariantCulture
));
packageReq
.
SetParameter
(
"refund_fee"
,
param
.
RefundFee
.
Value
.
ToString
(
System
.
Globalization
.
CultureInfo
.
InvariantCulture
));
packageReq
.
SetParameter
(
"sign"
,
packageReq
.
CreateMd5Sign
(
_accessor
));
var
reqXml
=
packageReq
.
ParseXml
();
var
result
=
Common
.
Pay
.
WeChatPat
.
HttpHelper
.
Post
(
new
HttpParam
()
{
Url
=
"https://api.mch.weixin.qq.com/secapi/pay/refund"
,
PostParam
=
reqXml
,
Encoding
=
Common
.
Pay
.
WeChatPat
.
HttpHelper
.
GetRequestEncoding
(
_accessor
.
HttpContext
.
Request
),
CertPath
=
model
.
WeChatPayCertificateUrl
,
CertPwd
=
model
.
WeChatApiSecret
});
var
xe
=
XElement
.
Parse
(
result
,
LoadOptions
.
SetLineInfo
);
var
returnCode
=
xe
.
GetElement
(
"return_code"
).
Value
;
//退款成功
if
(
returnCode
.
Equals
(
"SUCCESS"
))
{
var
resultCode
=
xe
.
GetElement
(
"result_code"
).
Value
;
if
(
resultCode
.
Equals
(
"SUCCESS"
))
{
var
outTradeNo
=
xe
.
GetElement
(
"out_trade_no"
).
Value
;
//在外面回写订单
return
new
BaseResult
()
{
IsSuccess
=
true
,
Data
=
new
Dictionary
<
string
,
string
>
{
{
"OrderNumber"
,
outTradeNo
}
}
};
}
}
var
errCodeDes
=
xe
.
GetElement
(
"err_code_des"
)
==
null
?
""
:
xe
.
GetElement
(
"err_code_des"
).
Value
;
var
returnMsg
=
xe
.
GetElement
(
"return_msg"
)
==
null
?
""
:
xe
.
GetElement
(
"return_msg"
).
Value
;
return
new
BaseResult
()
{
IsSuccess
=
false
,
Message
=
returnMsg
+
errCodeDes
};
#
endregion
}
}
}
}
}
\ No newline at end of file
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