using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Hncore.Infrastructure.Common;
using Hncore.Infrastructure.Data;
using Hncore.Infrastructure.Serializer;
using Hncore.Pass.PaymentCenter.WeiFuTong.SwipeCard;
namespace Hncore.Pass.PaymentCenter.WeiFuTong.ClientExtension
{
public static class SwipeCard
{
///
/// 刷卡支付下单
///
///
///
/// need_query为Y时需要轮询查询支付状态,不为Y则支付成功
public static async Task SwipeCardCreateOrderAsync(
this WeiFuTongClient weiFuTongClient
, SwipeCardCreateOrderRequest request)
{
StringBuilder log = new StringBuilder();
var body = request.ToXml();
log.Append("请求:\r\n" + body);
var response = await weiFuTongClient.CreateHttpClient()
.PostAsync(request.PaymentChannel.GetUrl(), new StringContent(body));
var resText = await response.Content.ReadAsStringAsync();
log.Append("\r\n响应:" + resText);
LogHelper.Trace("威富通-刷卡支付下单", log.ToString());
if (response.StatusCode != HttpStatusCode.OK)
{
throw new HttpException(response.StatusCode) {Content = resText};
}
Util.CheckSignFromXml(resText, request.MchInfo);
var res = XML.XmlDeserialize(resText);
if (res.HasError() && res.NeedQuery != "Y" && res.NeedQuery != "")
{
res.HandleError();
}
return res;
}
}
}