У меня есть простое приложение ASP. NET Core RAZOR (НЕ MVC), которое добавляет записи в базу данных, прекрасно работает. У меня также есть простое приложение ASP. NET Core MVC, которое добавляет единый платеж с Stripe Checkout, прекрасно работает. Мне нужно объединить их, желательно иметь простую страницу RAZOR, которая записывает в БД и затем вызывает Stripe Checkout сразу после записи записи. Не имеет значения, работает ли он наоборот, когда посредством Stripe производится оплата, а затем происходит запись в БД. Предпочтительно, я хотел бы получить одну кнопку отправки, но если ей нужны две кнопки для создания записи и одна для отправки платежа, нет проблем. Как получить кнопку для запуска обеих подпрограмм ie добавить запись в БД и вызвать подпрограмму оплаты Stripe. Любые указатели будут очень признательны.
ASP. NET Core RAZOR Pages
Create.cs html:
<div class="form-group">
<label asp-for="Amtratable.id" class="control-label"></label>
<input asp-for="Amtratable.id" class="form-control" />
<span asp-validation-for="Amtratable.id" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Amtratable.surname" class="control-label"></label>
<input asp-for="Amtratable.surname" class="form-control" />
<span asp-validation-for="Amtratable.surname" class="text-danger"></span>
</div> .....
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
Create.cshtml.cs:
public class CreateModel : PageModel
{
private readonly StripeRazorTest.Data.StripeRazorTestContext _context;
public CreateModel(StripeRazorTest.Data.StripeRazorTestContext context)
{
_context = context;
}
public IActionResult OnGet()
{
return Page();
}
[BindProperty]
public AmtraTestCl AmtraTestCl { get; set; }
public async Task<IActionResult> OnPostAsync()
{
//if (!string.IsNullOrEmpty(Create))
{
if (!ModelState.IsValid)
{
return Page();
}
_context.AmtraTestCl.Add(AmtraTestCl);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
}
}
ASP. NET Core MVC
Index.cs html:
@ с использованием (Html .BeginForm ("Index", "Home", FormMethod.Post)) {Name @ Html .TextBoxFor (m => m.Name) @ Html .ValidationMessageFor (m => m.Name) Адрес электронной почты @ Html .TextBoxFor (m => m.Email) @ Html .ValidationMessageFor (m => m.Email) Пятница ночью Взрослые @ Html .TextBoxFor (m => m.FridayAdults) @ Html .ValidationMessageFor ( m => m.FridayAdults)
<div>
<input type="submit" value="Submit" />
</div> }
HomeController.cs:
publi c class HomeController: Controller {publi c IActionResult Index () {RegistrationModel model = new RegistrationModel (); обратный просмотр (модель); }
[HttpPost]
public IActionResult Index(RegistrationModel model)
{
if (ModelState.IsValid)
{
List<SessionLineItemOptions> items = new List<SessionLineItemOptions>();
{
items.Add(new SessionLineItemOptions
{
Name = "Surname",
Description = "The name",
Amount = 700,
Currency = "gbp",
Quantity = 1
});
}
var options = new SessionCreateOptions
{
PaymentMethodTypes = new List<string>
{
"card"
},
LineItems = items,
SuccessUrl = "https://localhost:44329/",
//SuccessUrl = "https://localhost:44318/",
CancelUrl = "http://localhost:5000/"
};
SessionService service = new SessionService();
Session session = service.Create(options);
PaymentModel paymodel = new PaymentModel
{
ChargeID = session.Id
};
return View("Payment", paymodel);
}
return View(model);
}
public IActionResult Payment(PaymentModel model)
{
return View();
}
}
}