Thank you for your purchase.
Payment Request ID: @PaymentRequestId
@code { [Parameter] [SupplyParameterFromQuery] public Guid? PaymentRequestId { get; set; } protected override async Task OnInitializedAsync() { if (PaymentRequestId.HasValue) { // The payment is already completed at this point. // Perform application-specific actions here: // e.g., activate subscription, send confirmation email, // update order status, grant access to purchased content, etc. } } } ``` > **Note:** By the time the user reaches your callback page, the payment request status has already been set to **Completed** by the PostPayment page. Your callback page is for performing additional application-specific logic. It is also your responsibility to handle if a payment request is used more than once. If you have already delivered your product for a given `PaymentRequestId`, you should not deliver it again when the callback URL is visited a second time. ### Angular UI For Angular applications, you need to read and apply the steps explained in the following sections: #### Configurations In order to configure the application to use the payment module, you first need to import `PaymentAdminConfigModule` from `@volo/abp.ng.payment/admin/config` to the root configuration. `PaymentAdminConfigModule` has a static `forRoot` method which you should call for a proper configuration: ```js // app.config.ts import { ApplicationConfig, importProvidersFrom } from '@angular/core'; import { PaymentAdminConfigModule } from '@volo/abp.ng.payment/admin/config'; export const appConfig: ApplicationConfig = { providers: [ // ... importProvidersFrom([ PaymentAdminConfigModule.forRoot() ]), ], }; ``` The payment admin module should be imported and lazy-loaded in your routing array as below: ```js // app.routes.ts const APP_ROUTES: Routes = [ // ... { path: 'payment', loadChildren: () => import('@volo/abp.ng.payment/admin').then(c => c.createRoutes()), }, ]; ``` ### Pages #### Public Pages ##### Payment Gateway Selection This page allows selecting a payment gateway. If there is only one payment gateway configured for the application, this page will be skipped.  ##### PrePayment Page Some payment gateways require additional information before redirecting to the payment gateway. For example, PayU and Iyzico require customer information (Name, Surname, Email Address, etc.) before processing the payment.  #### Admin Pages ##### Payment Plans Page Payment plans for subscriptions can be managed on this page. You can connect external subscriptions for each gateway to a plan.   ##### Payment Request List This page lists all the payment request operations in the application.  ## Options ### PaymentOptions `PaymentOptions` is used to store list of payment gateways. You don't have to configure this manually for existing payment gateways. You can, however, add a new gateway like below; ````csharp Configure