پرش به محتویات

کامندهای سیستم پرداخت

کامند های مربوط به پرداخت همگی در فضای نامی AbrAbi.Common.Messaging.Messages.Payment قابل دسترس میباشند:

ایجاد کیف پول (WalletCreateCommandV1)

این کامند برای ایجاد یک کیف پول استفاده می شود . که در زمان ایجاد شعبه و کاربر جدید به صورت خودکار بعد از ثبت موجودیت فراخوانی میشود
همچنین این کامند دارای ریسپانس نمی باشد و ورودی آن به شرح زیر است:

public class WalletCreateCommandV1 : ICommandMessage
{
    public Guid ReferenceId { get; set; }
    public string ReferenceType { get; set; }
    public string ReferenceWalletType { get; set; }
    public string ReferenceTitle { get; set; }
    public string ReferenceAccountOwnerName { get; set; }
}

ReferenceId: شناسه موجودیت
ReferenceType: نوع موجودیت
ReferenceTitle: عنوان موجودیت
ReferenceAccountOwnerName: عنوان نمایشی صاحب حساب در سیستم رایان پی ReferenceWalletType: نوع کیف پول که این نوع ها سمت رایان پی تعریف شده است و در حال حاضر به شرح زیر است:

namespace AbrAbi.Common.Constants
{
    public class ReferenceWalletType
    {
        public const string System = "System";
        public const string BranchMain = "BranchMain";
        public const string BranchReservation = "BranchReservation";
        public const string CustomerMain = "CustomerMain";
    }
}

نمونه درخواست:

await _commonMessagingClient.Send(new WalletCreateCommandV1
{
    ReferenceId = 1004,
    ReferenceType = "Branch",
    ReferenceWalletType = ReferenceWalletType.BranchMain,
    ReferenceTitle = $"شعبه-اصلی-لئون-الهیه",
    ReferenceAccountOwnerName = $"شعبه-لئون-الهیه"
});

موجودی کیف پول (WalletGetBalanceCommandV1)

این کامند برای بدست آوردن موجودی کیف پول های یک موجودیت (کاربر،شعبه، ...) استفاده می شود و به شرح زیر می باشد:

ورودی:

public class WalletGetBalanceCommandV1 : IRequestMessage<WalletGetBalanceCommandResponseV1>
{
    public Guid ReferenceId { get; set; }
    public string ReferenceType { get; set; }
}

ReferenceId: شناسه یکتای موجودیت
ReferenceType: نوع موجودیت

خروجی:

public class WalletGetBalanceCommandResponseV1 : IResponseMessage
{
    public IEnumerable<WalletBalance> Balances { get; set; }
    public string Error { get; set; }
}

Error: اگر خطایی وجود داشته باشد در این فیلد برگرداننده می شود
Balances: لیستی از WalletBalance ها را برمیگرداند که در آن موجودی تمام کیف پول های آن کاربر مشخص است که به شرح زیر است:

public class WalletBalance
{
    public string ReferenceWalletType { get; set; }
    public long Balance { get; set; }
}

ReferenceWalletType: نوع کیف پول
Balance: موجودی

نمونه درخواست:

var response = await _messagingClient.Request<WalletGetBalanceCommandV1, WalletGetBalanceCommandResponseV1>(
    new WalletGetBalanceCommandV1
    {
        ReferenceId = new Guid("68700794-F63B-46CA-B10B-D4B54C6081F8"),
        ReferenceType = "Branch"
    });

شارژ کیف پول کاربر (WalletUserChargeCommandV1)

این کامند برای شارژ کیف پول یک کاربر استفاده می شود و به شرح زیر می باشد:

ورودی:

public class WalletUserChargeCommandV1 : IRequestMessage<WalletUserChargeCommandResponseV1>
{
    public Guid? Guid { get; set; }
    public long UserId { get; set; }
    public Guid UserGuid { get; set; }
    public string UserName { get; set; }
    public long Amount { get; set; }
    public string CallbackUrl { get; set; }
}

Guid: شناسه یکتا که در صورت پر نکردن توسط خود سرور ساخته می شود
UserId: شناسه عددی کاربر
UserGuid: شناسه یکتای کاربر
UserName: نام کاربری
Amount: مبلغ
CallbackUrl: آدرسی که بعد از پرداخت به آن ریدایرکت می شود

خروجی:

public class WalletUserChargeCommandResponseV1 : IResponseMessage
{
    public long OnlineDepositId { get; set; }
    public Guid OnlineDepositGuid { get; set; }
    public string RedirectUrl { get; set; }
    public string Error { get; set; }
}

OnlineDepositId: شناسه عددی واریز آنلاین
OnlineDepositGuid: شناسه یکتای واریز آنلاین
RedirectUrl: آدرسی که برای پرداخت آنلاین باید به آن ریدایرکت کرد
Error: اگر خطایی وجود داشته باشد در این فیلد برگرداننده می شود

نمونه درخواست:

var response = await _messagingClient.Request<WalletUserChargeCommandV1, WalletUserChargeCommandResponseV1>(
    new WalletUserChargeCommandV1
    {
        UserId = 15,
        UserGuid = new Guid("54700794-F63B-46CA-B10B-D4B54C6081F2"),
        UserName = "mohsen",
        Guid = new Guid("15700794-F63B-46CA-B10B-D4B54C6025c3"),
        Amount = 50000,
        CallbackUrl = "marketplace.ir/wallet"
    });

تسویه پرداخت (PaymentSettleCommandV1)

این کامند برای تسویه یک پرداخت که شامل پرداخت آنلاین بوده استفاده می شود و پس از رفتن به درگاه بانکی و انجام شدن عملیات بانکی باید صدا زده شود که به شرح زیر می باشد:

ورودی:

public class PaymentSettleCommandV1 : IRequestMessage<ResponseMessageBase>
{
    public Guid Guid { get; set; }
    public string BankAuthority { get; set; }
    public string BankStatus { get; set; }
}

Guid: شناسه پرداخت
BankAuthority: این فیل یک شناسه یکتا می باشد که بعد از پرداخت در درگاه بانکی بانک بر می گرداند
BankStatus: این فیلد وضعیت پرداخت بانکی می باشد که از بانک بر میگردد

خروجی:

public class ResponseMessageBase : IResponseMessage
{
    public string Error { get; set; }
}

Error: اگر خطایی وجود داشته باشد در این فیلد برگرداننده می شود
در صورتی که خطایی بر نگردد یعنی عملیات با موفقیت انجام شده

نمونه درخواست:

var response = await _messagingClient.Request<PaymentSettleCommandV1, ResponseMessageBase>(
    new PaymentSettleCommandV1
    {
        Guid = new Guid("54700794-F63B-46CA-B10B-D4B54C6081F2"),
        BankAuthority = "1f41a9c5-57b3-4712-89c4-f90eae422f19",
        BankStatus = "OK"
    });

لغو دستور پرداخت (PaymentRejectCommandV1)

این کامند برای لغو دستور پرداخت استفاده می شود و تمام اجزای یک دستور پرداخت (تراکنش ها ، واریز آنلاین ها ) و خود دستور پرداخت را منقضی می نماید که به شرح زیر می باشد:

ورودی:

public class PaymentRejectCommandV1 : ICommandMessage
{
    public Guid ReferenceId { get; set; }
    public string ReferenceType { get; set; }
}

ReferenceId: شناسه موجودیت
ReferenceType: نوع موجودیت

این کامند خروجی ندارد

نمونه درخواست:

await _messagingClient.Send(new PaymentRejectCommandV1
{
    ReferenceId = new Guid("1f41a9c5-57b3-4712-89c4-f90eae422f19"),
    ReferenceType = "Branch"
});

لغو واریز آنلاین (OnlineDepositRejectCommandV1)

این کامند برای منقضی کردن یک واریز آنلاین به کار می رود و به شرح زیر می باشد:

ورودی:

public class OnlineDepositRejectCommandV1 : ICommandMessage
{
    public Guid Guid { get; set; }
}

Guid: شناسه یکتای واریز آنلاین

این کامند خروجی ندارد

نمونه درخواست:

await _messagingClient.Send(new OnlineDepositRejectCommandV1
{
    Guid = new Guid("1f41a9c5-57b3-4712-89c4-f90eae422f19"),
});

ایجاد دستور پرداخت (منقضی شده) (PaymentCreateCommandV1)

این کامند برای ایجاد یک دستور پرداخت استفاده می شود و به شرح زیر است:

ورودی:

public class PaymentCreateCommandV1 : IRequestMessage<PaymentCreateCommandResponseV1>
{
    public Guid? Guid { get; set; }
    public long UserId { get; set; }
    public string UserName { get; set; }
    public Guid ReferenceId { get; set; }
    public string ReferenceType { get; set; }
    public long Amount { get; set; }
    public bool UseWalletCredit { get; set; }
    public WalletReference SourceWallet { get; set; }
    public IEnumerable<TransactionWalletAmount> DestinationWallets { get; set; }
    public IEnumerable<PaymentMetaDataV1> MetaData { get; set; }
    public string CallbackUrl { get; set; }
}

Guid: شناسه یکتای پرداخت که در صورتی که ارسال نشود توسط سرور ایجاد می شود
UserId: شناسه عددی کاربر
UserName: نام کاربری
ReferenceId: شناسه موجودیت
ReferenceType: نوع موجودیت
Amount: مبلغ
UseWalletCredit: این پارامتر مشخص می کند که آیا از موجودی حساب کاربر استفاده بشود یا نه
CallbackUrl: آدرسی که بعد از پرداخت به آن ریدایرکت می شود
MetaData: متا دیتا که میتواند با توجه به نیاز لیستی را در آن ذخیره کرد
SourceWallet: کیف پول مبدا که از نوع زیر می باشد:

public class WalletReference
{
    public Guid ReferenceId { get; set; }
    public string ReferenceType { get; set; }
    public string ReferenceWalletType { get; set; }
}

DestinationWallets: لیست کیف پول های مقصد که از نوع زیر می باشد:

public class TransactionWalletAmount : WalletReference
{
    public long Amount { get; set; }
}

خروجی:

public class PaymentCreateCommandResponseV1 : IResponseMessage
{
    public long PaymentId { get; set; }
    public Guid PaymentGuid { get; set; }
    public string RedirectUrl { get; set; }
    public string Error { get; set; }
}

PaymentId: شناسه عددی پرداخت
PaymentGuid: شناسه یکتای پرداخت
RedirectUrl: آدرسی که برای پرداخت آنلاین باید به آن ریدایرکت کرد

نمونه درخواست:

var response = await _messagingClient.Request<PaymentCreateCommandV1, PaymentCreateCommandResponseV1>(
    new PaymentCreateCommandV1
    {
        Guid = new Guid("54700794-F63B-46CA-B10B-D4B54C6081F2"),
        UserId = 11,
        UserName = "ali",
        ReferenceId = reserve.Guid,
        ReferenceType = nameof(Reservation),
        Amount = 100000,
        UseWalletCredit = true,
        SourceWallet = new WalletReference
        {
            ReferenceId = customer.Id,
            ReferenceType = nameof(User),
            ReferenceWalletType = ReferenceWalletType.CustomerMain
        },
        DestinationWallets = new TransactionWalletAmount[]
        {
            new TransactionWalletAmount
            {
                ReferenceId = ReservationAcceptPaymentCommand.Branch.Guid,
                ReferenceType = nameof(Branch),
                ReferenceWalletType = ReferenceWalletType.BranchReservation,
                Amount = 100000
            }
        },
        CallbackUrl = "https://restora.keepapp.ir/api/payment/callback",
        Metadata = new PaymentMetaDataV1[]
        {
            new PaymentMetaDataV1 { Name = "meta name", Value = "meta value" }
        }
    });