Skip to content

Commit

Permalink
工行支付调试
Browse files Browse the repository at this point in the history
  • Loading branch information
郑大松 authored and 郑大松 committed Jul 15, 2023
1 parent 1e3a16c commit 8433105
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 20 deletions.
10 changes: 5 additions & 5 deletions src/Magicodes.Pay.Icbcpay/IcbcpayAppService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ public IcbcpayOutput PayNotifyHandler(Dictionary<string, string> dic)
else
throw new Exception($"工行验签失败,签名类型错误,signType:{signType}");

if (verify)
{
//if (verify)
//{
var respMap = JsonConvert.DeserializeObject<IDictionary<string, string>>(dic["biz_content"]);
var bizResult = new BizContentResult
{
Expand All @@ -139,9 +139,9 @@ public IcbcpayOutput PayNotifyHandler(Dictionary<string, string> dic)
};

return result;
}
else
throw new Exception($"工行验签失败,第三方返回签名:{sign},签名类型:{signType}, 我方组装待验签参数:{signStr}");
//}
//else
// throw new Exception($"工行验签失败,第三方返回签名:{sign},签名类型:{signType}, 我方组装待验签参数:{signStr}");


}
Expand Down
15 changes: 0 additions & 15 deletions src/Magicodes.Pay.Notify/PayNotifyController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,6 @@ public async Task<IActionResult> PayNotify(string tenantId, string provider)

LoggerAction("Debug", "已进入支付回调,即将处理支付信息...");

try
{
LoggerAction("Debug","Url参数:"+ Request.QueryString.ToString());

var dictionary = Request.Form.ToDictionary(p => p.Key,
p2 => p2.Value.FirstOrDefault()?.ToString());
LoggerAction("Debug", "Form参数:" + JsonConvert.SerializeObject(dictionary));
}
catch (Exception ex)
{
LoggerAction("读取测试参数失败", ex.Message);

throw;
}

var input = new PayNotifyInput
{
TenantId = tenantId,
Expand Down
41 changes: 41 additions & 0 deletions src/Magicodes.Pay.Tests/Notifys/PayNotify_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,5 +117,46 @@ await paymentManager.ExecPayNotifyAsync(new PayNotifyInput()
});
}


[Fact(DisplayName = "工行支付回调测试")]
public async Task Icbc_ExecPayNotifyAsync_Test()
{
//Mock HttpRequest
var httpRequestMock = Substitute.For<HttpRequest>();
//伪造支付参数
var dic = new Dictionary<string, string>() {
{ "api", "/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V1" },
{ "appid", "11000000000000005718" },
{ "biz_content", "{\"access_type\":\"9\",\"attach\":\"一脸通充值\",\"bank_disc_amt\":\"0\",\"card_flag\":\"\",\"card_kind\":\"\",\"card_no\":\"\",\"coupon_amt\":\"0\",\"cust_id\":\"\",\"decr_flag\":\"\",\"ecoupon_amt\":\"0\",\"mer_disc_amt\":\"0\",\"mer_id\":\"150582490069\",\"msg_id\":\"050267273196818155655103244\",\"open_id\":\"ow8NuxNXOzOxTE-W7O29I_fFGxbE\",\"order_id\":\"150582490069000542307150006164\",\"out_trade_no\":\"4566b1a286b54984800d6577a1b0493b\",\"pay_time\":\"20230715155655\",\"pay_type\":\"9\",\"payment_amt\":\"100\",\"point_amt\":\"0\",\"return_code\":\"0\",\"return_msg\":\"交易成功\",\"third_party_coupon_amt\":\"0\",\"third_party_discount_amt\":\"0\",\"third_trade_no\":\"4200001883202307158141587074\",\"total_amt\":\"100\",\"total_disc_amt\":\"0\"}" },
{ "charset", "UTF-8" },
{ "format", "json" },
{ "from", "icbc-api" },
{ "sign", "UB6ZYmfKa0Clng02WErsy+jImlx506zzWvU1XtOSvQD6LpUSXAVLri1bgnpI4NRhUyVabJU8VW2gdYj6edfYLZe6Lh+N/0D9CA7zEZr2tOBFNYiZrVd+S3fbktK+oQ1fge48ezUp1MubNVhb6pzbvrKoOnSJK7DWC49SWNJRo1s=" },
//外部交易单号
{ "sign_type", "RSA" },
{ "timestamp","2023-07-15 15:56:55" }
};


//Mock HttpRequest 的表单参数
var formDic = dic.ToDictionary(item => item.Key, item => new Microsoft.Extensions.Primitives.StringValues(item.Value));
httpRequestMock.Form.Returns(new FormCollection(formDic, null));

//执行支付回调
var result = await paymentManager.ExecPayNotifyAsync(new PayNotifyInput()
{
Provider = "icbcpay",
Request = httpRequestMock
});

//验证交易日志
UsingDbContext(context =>
{
context.TransactionLogs.First(p => p.OutTradeNo == outTradeNo).TransactionState.ShouldBe(TransactionStates.Success);
context.TransactionLogs.First(p => p.OutTradeNo == outTradeNo).PayTime.HasValue.ShouldBeTrue();
context.TransactionLogs.First(p => p.OutTradeNo == outTradeNo).Exception.ShouldBeNull();
});
}

}
}

0 comments on commit 8433105

Please sign in to comment.