protected virtual RequestContext CreateRequest(PayRequestModel requestModel, IRequestMap <RequestMapField> requestMapper) { //设置订单号 if (string.IsNullOrWhiteSpace(requestModel.OrderId)) { requestModel[RequestMapField.OrderId] = GenerateOrderId(); } //var evt = WorkContext.Resolve<IPaymentEventHandler>(); // evt.Posting(requestModel); //兼容Money格式 requestModel.Amount = ConvertAmount(requestModel.Amount); requestModel[RequestMapField.Amount] = requestModel.Amount.ToString(CultureInfo.InvariantCulture); requestModel[RequestMapField.Mid] = Settings.Mid; AttachRequest(requestModel, requestMapper); //合并映射到参数 requestMapper.Combine(requestModel.MapValues); var request = requestMapper.GetMapResult(); request[SignFieldName] = Sign(request); return(CreateRequestContext(request, requestModel, GateWay)); }
public async Task ShouldRemovePromiseFromMap( Response response, [Frozen, Substitute] IRequestMap requestMap, [Target] DefaultResponseService service ) { var promise = new TaskCompletionSource <Response>(); requestMap.TryGetValue(Any <Guid>(), out Any <TaskCompletionSource <Response> >() !).Returns(x => { x[1] = promise; return(true); }); service.HandleResponse(response); var result = await promise.Task; result.Should().Be(response); requestMap.Received().Remove(Is(response.RequestId)); }
/// <summary> /// Initializes a new instance of the <see cref="DefaultResponseService" /> class. /// </summary> /// <param name="requestMap">Map that keeps track of requests waiting for a response.</param> public DefaultResponseService( IRequestMap requestMap ) { this.requestMap = requestMap; }