جزئیات شغل

پیاده‌سازی ساختار ماژولار Converter / Wallet / Payment Gateway در Go برای خرید و فروش دوطرفه PSC ( manager of backend )

تجربه: 3

سن: 18 الی 30

محدوده حقوق و دستمزد: قابل مذاکره

جای خالی: 1

طبیعت شغلی : پیمانی

تاریخ ارسال : 2026.02.18

آخرین تاریخ : 2026.04.22

برای پیاده‌سازی این درخواست، ما به یک ساختار ماژولار در زبان Go (Golang) نیاز داریم که منطق تبدیل ارز (Converter Logic)، مدیریت کیف پول (Wallet Management) و شبیه‌سازی درگاه پرداخت (Payment Gateway) را مدیریت کند.

با توجه به اینکه PSC یک توکن بر بستر اتریوم (یا L2) است و ریال یک ارز فیات، این سیستم معمولاً به صورت Off-chain (روی سرور) برای محاسبه و اتصال به درگاه عمل کرده و در نهایت تراکنش را روی بلاکچین (On-chain) نهایی می‌کند.


در ادامه کد کامل و توضیحات فنی الگوریتم آورده شده است:


ساختار و منطق الگوریتم


بخش اول: کد به‌روزرسانی شده (خرید و فروش دوطرفه)


در این نسخه، تابع SellPSC اضافه شده است که موجودی PSC کاربر را بررسی کرده و معادل ریالی آن را محاسبه می‌کند


package main

import (
"fmt"
"time"
)

// نرخ تبدیل فرضی (در سیستم واقعی از API یونی‌سواپ گرفته می‌شود)
var PricePerPSC = 50000.0 // هر 1 واحد PSC = 50000 ریال

// UserWallet ساختار کیف پول کاربر
type UserWallet struct {
Address string // آدرس کیف پول بلاکچینی
RialBalance float64 // موجودی ریالی (نزد صرافی/پلتفرم)
PSCBalance float64 // موجودی توکن PSC (روی بلاکچین)
}

// Converter ساختار مبدل
type Converter struct {
CurrentRate float64
}

// NewConverter ایجاد مبدل با نرخ فعلی
func NewConverter(rate float64) *Converter {
return &Converter{CurrentRate: rate}
}

// RialToPSC محاسبه تعداد PSC دریافتی در ازای ریال
func (c *Converter) RialToPSC(rialAmount float64) float64 {
if c.CurrentRate == 0 {
return 0
}
return rialAmount / c.CurrentRate
}

// PSCToRial محاسبه ریال دریافتی در ازای فروش PSC
func (c *Converter) PSCToRial(pscAmount float64) float64 {
return pscAmount * c.CurrentRate
}

// PaymentGateway شبیه‌سازی درگاه پرداخت (برای خرید)
func PaymentGateway(amount float64) bool {
fmt.Printf("\n--- اتصال به درگاه پرداخت شاپرک ---\n")
fmt.Printf("مبلغ پرداختی: %.0f ریال\n", amount)
time.Sleep(1 * time.Second)
fmt.Println("پرداخت موفق. ✅")
return true
}

// PayoutSystem شبیه‌سازی سیستم تسویه (پایا/ساتنا برای فروش)
func PayoutSystem(amount float64, userAccount string) bool {
fmt.Printf("\n--- اتصال به سیستم تسویه بانکی ---\n")
fmt.Printf("مبلغ واریزی به حساب کاربر: %.0f ریال\n", amount)
time.Sleep(1 * time.Second)
fmt.Println("واریز به حساب بانکی انجام شد. ✅")
return true
}

// BuyPSC فرآیند خرید PSC
func BuyPSC(user *UserWallet, calculator *Converter, inputRial float64) {
fmt.Printf("\n>>> درخواست خرید PSC به مبلغ %.0f ریال\n", inputRial)
pscAmount := calculator.RialToPSC(inputRial)

// بررسی موجودی ریالی داخلی
if user.RialBalance < inputRial xss=removed>needed := inputRial - user.RialBalance
fmt.Printf("موجودی ناکافی. انتقال به درگاه برای پرداخت %.0f ریال...\n", needed)
if PaymentGateway(needed) {
user.RialBalance += needed
} else {
fmt.Println("خطا در پرداخت.")
return
}
}

// انجام تراکنش
user.RialBalance -= inputRial
// اینجا باید تراکنش واقعی بلاکچین (Transfer) انجام شود
user.PSCBalance += pscAmount
fmt.Printf("خرید انجام شد! %.4f PSC به کیف پول %s واریز شد.\n", pscAmount, user.Address)
}

// SellPSC فرآیند فروش PSC
func SellPSC(user *UserWallet, calculator *Converter, inputPSC float64) {
fmt.Printf("\n>>> درخواست فروش %.4f واحد PSC\n", inputPSC)

// محاسبه مبلغ ریالی
rialAmount := calculator.PSCToRial(inputPSC)
fmt.Printf("نرخ فروش: %.0f ریال | مبلغ دریافتی: %.0f ریال\n", calculator.CurrentRate, rialAmount)

// بررسی موجودی PSC کاربر (در محیط واقعی باید موجودی بلاکچین چک شود)
if user.PSCBalance < inputPSC xss=removed>fmt.Println("خطا: موجودی PSC کافی نیست.")
return
}

// 1. کاربر باید توکن‌ها را به آدرس صرافی/خزانه ارسال کند (شبیه‌سازی)
// در واقعیت: کاربر Approve می‌کند و قرارداد هوشمند transferFrom را صدا می‌زند
user.PSCBalance -= inputPSC
fmt.Println("توکن‌ها از کیف پول کاربر کسر و به خزانه منتقل شد.")

// 2. واریز ریال به حساب بانکی یا کیف پول ریالی کاربر
success := PayoutSystem(rialAmount, "IR1234...")
if success {
// یا افزایش موجودی ریالی داخلی
// user.RialBalance += rialAmount
fmt.Printf("فروش موفق! مبلغ %.0f ریال تسویه شد.\n", rialAmount)
} else {
// بازگرداندن توکن در صورت خطای بانکی
user.PSCBalance += inputPSC
fmt.Println("خطا در تسویه ریالی. توکن‌ها برگشت داده شد.")
}
}

func main() {
// کیف پول اولیه کاربر
user :=
}
-------------------------------------------------------------------------------------------------------------

    منابع تسک:


    لینک سایت رسمی پروژه :

    https://rgb.irpsc.com/fa

    دسترسی به سامانه مدیریت بر مدیران :

    https://crm.irpsc.com

    مشخصات کار تعریف شده

    عنوان شغلی: پیاده‌سازی ساختار ماژولار Converter / Wallet / Payment Gateway در Go برای خرید و فروش دوطرفه PSC

    تعیین: manager of backend

    تجربه: 3

    سن: 18 الی 30

    محدوده حقوق و دستمزد: قابل مذاکره

    جای خالی: 1

    طبیعت شغلی : پیمانی

    تاریخ ارسال : 2026.02.18

    آخرین تاریخ : 2026.04.22

    اکنون درخواست دهید