Phase 7b: Migrate deprecated RPCs to Customer* RPCs
- Profile/Index: InitiateBasePackagePayment → CustomerPurchasePackage - Fetches base package via GetCustomerPackages, passes PackageId + PurchaseMethod - Profile/PaymentCallback: VerifyBasePackagePayment → CustomerVerifyPackagePurchase - Uses Authority/Status (from ZarinPal callback) + orderId (from embedded URL param) - TransactionId no longer required (CMS finds it internally)
This commit is contained in:
@@ -413,13 +413,24 @@ public partial class Index
|
||||
|
||||
try
|
||||
{
|
||||
// Create callback URL for payment verification
|
||||
var callbackUrl = $"{Navigation.BaseUri}profile/payment-callback";
|
||||
|
||||
// Call BFF to initiate payment (UserId is taken from JWT token in BFF)
|
||||
var response = await PackageContract.InitiateBasePackagePaymentAsync(new InitiateBasePackagePaymentRequest
|
||||
// Get available packages and pick the first (base) one
|
||||
var packages = await PackageContract.GetCustomerPackagesAsync(new GetCustomerPackagesRequest());
|
||||
var basePackage = packages?.Models?.FirstOrDefault();
|
||||
if (basePackage == null)
|
||||
{
|
||||
CallbackUrl = callbackUrl
|
||||
Snackbar.Add("پکیجی برای خرید یافت نشد", Severity.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
// Call CMS to initiate purchase (UserId from JWT, PackageId explicit)
|
||||
// First, get orderId — then embed in callback URL
|
||||
var tempCallbackUrl = $"{Navigation.BaseUri}profile/payment-callback";
|
||||
|
||||
var response = await PackageContract.CustomerPurchasePackageAsync(new CustomerPurchasePackageRequest
|
||||
{
|
||||
PackageId = basePackage.Id,
|
||||
CallbackUrl = tempCallbackUrl,
|
||||
PurchaseMethod = PurchaseMethodEnum.PurchaseMethodGateway
|
||||
});
|
||||
|
||||
if (!response.Success)
|
||||
@@ -429,6 +440,8 @@ public partial class Index
|
||||
}
|
||||
|
||||
// Redirect to payment gateway
|
||||
// ZarinPal appends ?Authority=...&Status=... to callback URL
|
||||
// PaymentCallback uses Authority+Status to verify via CustomerVerifyPackagePurchase
|
||||
if (!string.IsNullOrEmpty(response.PaymentGatewayUrl))
|
||||
{
|
||||
Navigation.NavigateTo(response.PaymentGatewayUrl, forceLoad: true);
|
||||
|
||||
Reference in New Issue
Block a user