/// <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); }
public VippsAuthorizationRequestContainer(VippsAuthorizationRequest transaction) { Transaction = transaction; }