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));
        }
Esempio n. 2
0
            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;
 }