برونسپاری
آموزش آنلاین
کسب درآمد
×
افزایش شانس استخدام
خانه پروژه ها برنامه نویسی پیاده‌سازی ماژولار Converter / Wallet / Payment در Go

پیاده‌سازی ماژولار Converter / Wallet / Payment در Go

۲۱ روز پیش
بودجه
از
۷,۰۰۰,۰۰۰ تومان
تا
۲۰,۰۰۰,۰۰۰ تومان
زمان پیشنهادی
۲۰ روز
کارفرمای جدید
قزوین
کارلنسر
وضعیت
منتشر شده
ثبت پیشنهاد روی پروژه
ثبت پروژه مشابه
کارلنسر
پیاده‌سازی ساختار ماژولار Converter / Wallet / Payment Gateway در Go برای خرید و فروش دوطرفه برای پیاده‌سازی این درخواست، ما به یک ساختار ماژولار در زبان 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 := }
ثبت پیشنهاد روی پروژه
ثبت پروژه مشابه
پروژه را با دوستان خود به اشتراک بگذارید
کپی لینک
کارلنسر را در شبکه های اجتماعی دنبال کنید
شماره تماس ۲۸۴۲۶۴۴۳ ۰۲۱
آدرس ایمیل info@karlancer.com
پشتیبانی