Beispiel #1
0
        /// <summary>
        /// Triggers an authorization from the customer in the Vipps app, a.k.a POSTing an `authorization`.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="vippsAuthorization"></param>
        /// <returns></returns>
        public async Task <AuthorizationResponseContainer> PostVippsAuthorization(string id, VippsAuthorizationRequest vippsAuthorization)
        {
            var payment = await GetPayment(id);

            var httpOperation = payment.Operations.FirstOrDefault(o => o.Rel == "create-authorization");

            if (httpOperation == null)
            {
                if (payment.Operations.Any())
                {
                    var availableOps = payment.Operations.Select(o => o.Rel).Aggregate((x, y) => x + "," + y);
                    throw new CouldNotAuthorizePaymentException(id, "state", $"This payment cannot be authorized. Available operations: {availableOps}");
                }
                throw new NoOperationsLeftException();
            }
            var url = httpOperation.Href;

            Func <ProblemsContainer, Exception> onError = m => new CouldNotAuthorizePaymentException(id, m);
            var payload = new VippsAuthorizationRequestContainer(vippsAuthorization);
            var res     = await CreateInternalClient().HttpPost <VippsAuthorizationRequestContainer, AuthorizationResponseContainer>(url, onError, payload);

            return(res);
        }
Beispiel #2
0
 public VippsAuthorizationRequestContainer(VippsAuthorizationRequest transaction)
 {
     Transaction = transaction;
 }