Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

درگاه سامان کیش #14

Open
akbarazimifar opened this issue Jul 3, 2022 · 33 comments
Open

درگاه سامان کیش #14

akbarazimifar opened this issue Jul 3, 2022 · 33 comments

Comments

@akbarazimifar
Copy link

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

@akbarazimifar akbarazimifar changed the title درگاه بانک سامان درگاه سامان کیش Jul 3, 2022
@alitnk
Copy link
Owner

alitnk commented Jul 4, 2022

سلام، لطف دارین.
درگاه سامان پیاده سازی شده ولی هنوز امتحان نشده و حدس می‌زنم مشکلاتی داشته باشه. نحوه استفاده مثل سایر درگاه‌ها هست، می‌تونید تستش کنید. اگر مشکلی دیدین می‌تونین PR بسازین براش 🙌

@akbarazimifar
Copy link
Author

akbarazimifar commented Jul 4, 2022

سلام . من تست کردم . گفتم شاید نحوه پیاده سازی من مشکل داشته .
saman: { merchantId: 'your-merchant-id', }

بعد این کد رو استفاده کردم

` app.get('/purchase', async (req, res) => {
try {
const driver = getPaymentDriver(chosenDriver, monopayConfiguration[chosenDriver]);

    const paymentInfo = await driver.requestPayment({
        amount: 20000,
        callbackUrl: 'http://127.0.0.1:3000/user/callback',
    })

    // Store the payment info in a database //

    res.send(`<html>
    <body>
        <h1> We're redirecting you to the payment gateway... </h1>
        <script>${paymentInfo.getScript()}</script>
    </body>
    </html>`)
} catch (e) {
    console.log(e.message)
}

})`
متاسفانه هیچ خطایی نمیده و منتقل هم نمیشه درگاه بانک

@alitnk
Copy link
Owner

alitnk commented Jul 4, 2022

درسته...
متاسفانه موقع ساختش دسترسی به اطلاعات درگاه سامان نداشتم که بخوام تستش کنم. درگاه‌هایی که دسترسی بهشون داشتم به صورت کامل کار می‌کنند (مثل زرین‌پال، زیبال، آیدی‌پی و...)

@akbarazimifar
Copy link
Author

سلام. الان راه حل شما برای رفع این مشکل چیه ؟ چون من نود جی اس زیاد وارد نیستم . ممنون میشم راهنمایی کنید .حداقل بدونم کجاش مشکل داره .

@alitnk
Copy link
Owner

alitnk commented Jul 10, 2022

مخزن رو Fork کنید و سعی کنید ازش لاگ بگیرید و بفهمید مشکل از کجاست و بر اساس مشکل اقدام به حل کردنش کنید.

@akbarazimifar
Copy link
Author

akbarazimifar commented Jul 17, 2022

سلام. من ایراد کار رو پیدا کردم اطلاعات ارسال میشه ، پاسخ هم به درستی دریافت میشه. مشکل ریدایرکت رو هم حل کردم الان فقط بعد از پرداخت و هدایت کاربر به صفحه کال بک توی کنسول خطای زیر میده
Cannot set headers after they are sent to the client
Unexpected root element of WSDL or include

ممنون میشم راهنمایی بفرمایید.

@alitnk
Copy link
Owner

alitnk commented Jul 17, 2022

فکر میکنم سرور ‌Express تون چند بار ریسپانس برمیگردونه.
https://bobbyhadz.com/blog/javascript-error-cannot-set-headers-after-they-are-sent-to-client
پیشنهاد میدم خطا رو سرچ کنید توی گوگل.

@Hossein-Nadimi
Copy link

سلام، ممنون بابت پکیج فوق العادتون، من با ارور Error: Request failed with status code 500 مواجه میشم این کدم هست:

`const express = require('express')
const { getPaymentDriver } = require('monopay')

const app = express()
app.use(express.urlencoded({ extended: true }));
const port = 3000

// 1)
const config = {
merchantId: "xxxxxxxxxxxxxxxx"
};

app.get('/purchase', async (req, res) => {
try {
const driver = getPaymentDriver('saman', config);

  const paymentInfo = await driver.requestPayment({
      amount: 20000,
      callbackUrl: 'http://localhost:3000/callback',
  })

  res.send(`<html>
  <body>
      <h1> We're redirecting you to the payment gateway... </h1>
      <script>${paymentInfo.getScript()}</script>
  </body>
  </html>`)

} catch (e) {
console.log(e.message)
}
})

app.all('/callback', async (req, res) => {
try {
const driver = getPaymentDriver('saman', config)

  const receipt = await driver.verifyPayment({
    amount: 2000,
    referenceId: 1234
  }, { ...req.query, ...req.body });

  res.json({
      referenceId: receipt.referenceId,
      success: true,
  })

} catch (e) {
console.log(e.message)
}
})

app.listen(port, () => {
console.log(Example app listening at http://localhost:${port})
})`
برای استفاده از درگاه بانک سامان چه مشخصاتی رو ارسال میکنین؟ بجز شماره پذیرنده برای من یه رمز پذیرنده هم فرستاده بانک سامان.

@alitnk
Copy link
Owner

alitnk commented Jul 26, 2022

@Hossein-Nadimi سلام، درگاه سامان در مونوپی تست شده نیست - بنده تابحال با درگاه سامان کار نکردم و مستنداتش در اختیارم نیست. پیشنهاد می‌کنم به پکیج‌های درگاه پرداخت در زبان‌های دیگه مراجعه کنید (مثلا این پکیج برای PHP) و مراحل ایجاد تراکنش رو مقایسه کنید.

اگر تونستید مشکلش رو برطرف کنید ممنون میشم با ساختن PR پکیج رو بهتر کنید.

@akbarazimifar
Copy link
Author

@Hossein-Nadimi سلام، درگاه سامان در مونوپی تست شده نیست - بنده تابحال با درگاه سامان کار نکردم و مستنداتش در اختیارم نیست. پیشنهاد می‌کنم به پکیج‌های درگاه پرداخت در زبان‌های دیگه مراجعه کنید (مثلا این پکیج برای PHP) و مراحل ایجاد تراکنش رو مقایسه کنید.

اگر تونستید مشکلش رو برطرف کنید ممنون میشم با ساختن PR پکیج رو بهتر کنید.

من تقریبا عیب یابی رو انجام دادم . ولی فقط مشکل تایید تراکنش هست که متاسفانه چون گرفتاری برام پیش اومد نتونستم حلش کنم .مشکل بر طرف کنم قطعا منتشر میکنم تا بقیه هم استفاده کنند .

@akbarazimifar
Copy link
Author

سلام، ممنون بابت پکیج فوق العادتون، من با ارور Error: Request failed with status code 500 مواجه میشم این کدم هست:

`const express = require('express') const { getPaymentDriver } = require('monopay')

const app = express() app.use(express.urlencoded({ extended: true })); const port = 3000

// 1) const config = { merchantId: "xxxxxxxxxxxxxxxx" };

app.get('/purchase', async (req, res) => { try { const driver = getPaymentDriver('saman', config);

  const paymentInfo = await driver.requestPayment({
      amount: 20000,
      callbackUrl: 'http://localhost:3000/callback',
  })

  res.send(`<html>
  <body>
      <h1> We're redirecting you to the payment gateway... </h1>
      <script>${paymentInfo.getScript()}</script>
  </body>
  </html>`)

} catch (e) { console.log(e.message) } })

app.all('/callback', async (req, res) => { try { const driver = getPaymentDriver('saman', config)

  const receipt = await driver.verifyPayment({
    amount: 2000,
    referenceId: 1234
  }, { ...req.query, ...req.body });

  res.json({
      referenceId: receipt.referenceId,
      success: true,
  })

} catch (e) { console.log(e.message) } })

app.listen(port, () => { console.log(Example app listening at http://localhost:${port}) })` برای استفاده از درگاه بانک سامان چه مشخصاتی رو ارسال میکنین؟ بجز شماره پذیرنده برای من یه رمز پذیرنده هم فرستاده بانک سامان.

کد پذیرنده باید ارسال کنید جهت دریافت توکن . به همراه شماره فاکتور فقط همین دو مورد

@Hossein-Nadimi
Copy link

@akbarazimifar
پس همراه با merchantId یه پارامتر دیگه به نام شماره فاکتور باید ارسال کنم درسته؟ نام پارامتر چی باید باشه؟

و اینکه میشه به کدم یه نگاه بکنین ببینین ایرادش چیه که ارور Request failed with status code 500 دریافت میکنم؟

@akbarazimifar
Copy link
Author

نگاه بکنین ببینین ایرادش

آره . مرچنت آیدی باید ارسال کنید بعد شماره فاکتور Resnum لینک ها هم باید تغییر کنه . الان دسترسی ندارم دقیقا ببینم کجاها رو تغییر دادم . اما لینک ها باید تغییر کنه ، مرچنت آیدی و resnum هم باید ارسال بشن . اگه مشکل تایید پرداخت رو تونستید حل کنید منتشر کنید ماهم استفاده کنیم .

@akbarazimifar
Copy link
Author

akbarazimifar commented Jul 27, 2022

من تغییراتی که اعمال کردم رو منتشر میکنم شما هم اگه مشکل رو رفع کردین درجریان قرار بدین . منم اگه رفع کردم اطلاع میدم . فقط بی معرفت بازی درنیارین

new 65.txt

کد بالا برای هدایت به درگاه پرداخت با سامان هست. توی لینک زیر پوشه dist رو با پوشه خودتون جایگزین کنید . چون دقیقا خاطرم نیست کجاها رو تغییر دادم متاسفانه
https://github.com/akbarazimifar/monopayment

@Hossein-Nadimi
Copy link

متاسفانه با پکیج نتونستم حل کنم و درخواست مستندات از بانک کردم مثل اینکه یکم تغییر کرده، مستنداتو برای شما هم می فرستم، با مستندات آنلاین پی جی به راحتی پیاده سازی شد.
SEP_OnlinePG_Merchant Document_Minimal_3.0.pdf
راهنمای فنی استفاده از سرویس های سپ_تایید تراکتش__1.8.pdf

@akbarazimifar
Copy link
Author

سلام . ممنون . نمونه کد رو ارسال نمی کنید ؟ ممنون میشم اگه ارسال کنید .
@Hossein-Nadimi

@Hossein-Nadimi
Copy link

مستنداتو بخونین خیلی سادست، بازم اگه مشکلی داشتین بگین تا حد توان راهنمایی کنم. @akbarazimifar

آقا علی چطور میشه این تغییراتو تو پکیج اعمال کرد تا همه راحت استفاده کنن؟ پکیج با تایپ اسکریپته منم متاسفانه کار نکردم. @alitnk

@alitnk
Copy link
Owner

alitnk commented Aug 11, 2022

باید یکی از دوستان که تایپ‌اسکریپت بلده زحمتش رو بکشه و تغییرات رو روی درایور مربوطه اعمال کنه. یه فایل تایپ هست که صرفا تایپ های TS هستند و یک فایل برای لاجیک.

@mobinco
Copy link

mobinco commented Nov 7, 2022

سلام به دوستان. من تغییراتی روی درگاه سامان کیش انجام دادم که مشکل رو حل کرده. لااقل روی پروژه‌ی خودم خیلی خوب کار می کنه
https://github.com/mobinco/monopay

فقط فایل ‌js رو ویرایش کردم و تایپ اسکریپت مونده

دستور نصب:
npm install mobinco/monopay

@akbarazimifar
Copy link
Author

سلام به دوستان. من تغییراتی روی درگاه سامان کیش انجام دادم که مشکل رو حل کرده. لااقل روی پروژه‌ی خودم خیلی خوب کار می کنه https://github.com/mobinco/monopay

فقط فایل ‌js رو ویرایش کردم و تایپ اسکریپت مونده

دستور نصب: npm install mobinco/monopay

سلام . خیلی عالی . تشکر از زحمات شما . اگه مابقی درگاه ها هم حل میشد عالی بود .

@akbarazimifar
Copy link
Author

سلام به دوستان. من تغییراتی روی درگاه سامان کیش انجام دادم که مشکل رو حل کرده. لااقل روی پروژه‌ی خودم خیلی خوب کار می کنه https://github.com/mobinco/monopay

فقط فایل ‌js رو ویرایش کردم و تایپ اسکریپت مونده

دستور نصب: npm install mobinco/monopay

سلام . متاسفانه نصب نمیشه

@mobinco
Copy link

mobinco commented Nov 8, 2022

سلام . متاسفانه نصب نمیشه

اگه از دستور npm install mobinco/monopay استفاده کنید بایستی بدون مشکل نصب بشه.
قبلش نسخه‌ی قدیمی monopay رو حذف کنید. npm uninstall monopay
اگه هم خطای خاصی نمایش میده، ارسال کنید تا بررسی بشه

@akbarazimifar
Copy link
Author

سلام . متاسفانه نصب نمیشه

اگه از دستور npm install mobinco/monopay استفاده کنید بایستی بدون مشکل نصب بشه. قبلش نسخه‌ی قدیمی monopay رو حذف کنید. npm uninstall monopay اگه هم خطای خاصی نمایش میده، ارسال کنید تا بررسی بشه

سلام .نشخه قبلی رو اول حذف کردم . بعد دستور نصب نسخه شما رو زدم . با این خطا مواجه شدم .

npm ERR! code 128
npm ERR! An unknown git error occurred
npm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/mobinco/monopay.git
npm ERR! Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-11-08T14_43_12_931Z-debug-0.log

البته روی لوکال نصب میشه ولی پروژه اجرا نمیشه و خطای دیگه ای میده

@akbarazimifar
Copy link
Author

سلام . متاسفانه نصب نمیشه

اگه از دستور npm install mobinco/monopay استفاده کنید بایستی بدون مشکل نصب بشه. قبلش نسخه‌ی قدیمی monopay رو حذف کنید. npm uninstall monopay اگه هم خطای خاصی نمایش میده، ارسال کنید تا بررسی بشه

خطایی که روی لوکال میده :
`node_modules/monopay/dist/drivers/saman/index.js:52
const responseStatus = response[0]?.result?.$value;
^

SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/akbar/Desktop/node taxi/node_modules/monopay/dist/drivers.js:11:17)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/akbar/Desktop/node taxi/node_modules/monopay/dist/index.js:17:14)
at Module._compile (internal/modules/cjs/loader.js:999:30)
`

@mobinco
Copy link

mobinco commented Nov 8, 2022

خطای اول که ظاهرا مربوط به سرورتون هست که دسترسی نداره. شاید با vpn مشکل تون رفع بشه

برای خطای دوم، تغییراتی انجام دادم. حذف و مجدد نصب کنید.

@akbarazimifar
Copy link
Author

خطای اول که ظاهرا مربوط به سرورتون هست که دسترسی نداره. شاید با vpn مشکل تون رفع بشه

برای خطای دوم، تغییراتی انجام دادم. حذف و مجدد نصب کنید.

هنوزم خطا میده . یکبار خذف کردم . مجدد نصب کردم

/home/akbar/Desktop/node_taxi/node_modules/monopay/dist/drivers/saman/index.js:52
const responseStatus = response[0]?.result && response[0]?.result['$value'];
^

SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/akbar/Desktop/node_taxi/node_modules/monopay/dist/drivers.js:11:17)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/akbar/Desktop/node_taxi/node_modules/monopay/dist/index.js:17:14)
at Module._compile (internal/modules/cjs/loader.js:999:30)

@mobinco
Copy link

mobinco commented Nov 8, 2022

من از این دستور برای verify استفاده می کنم:

driver.verifyPayment({
    amount: payment.amount,    // مبلغی که زمان ارسال به درگاه ثبت شده
    referenceId: form.RefNum,  // شماره سفارش که زمان ارسال ایجاد شده
}, {...req.body });            // req.body = محتوای فرمی که پس از پرداخت از طریق درگاه به سرور ارسال شده

راستش این اطلاعات به روشی که من نوشتم در هیچ سند آموزشی ندیدم و تقریباً با آزمون و خطا روش‌ش رو پیدا کردم.

ممکنه اطلاعات دریافتی برای شما متفاوت باشه

قبل از خط خطا، یک لاگ بذارید ببینید چه اطلاعاتی رو بر می گردونه
console.log(response)

@akbarazimifar
Copy link
Author

akbarazimifar commented Nov 8, 2022

من از این دستور برای verify استفاده می کنم:

driver.verifyPayment({
    amount: payment.amount,    // مبلغی که زمان ارسال به درگاه ثبت شده
    referenceId: form.RefNum,  // شماره سفارش که زمان ارسال ایجاد شده
}, {...req.body });            // req.body = محتوای فرمی که پس از پرداخت از طریق درگاه به سرور ارسال شده

راستش این اطلاعات به روشی که من نوشتم در هیچ سند آموزشی ندیدم و تقریباً با آزمون و خطا روش‌ش رو پیدا کردم.

ممکنه اطلاعات دریافتی برای شما متفاوت باشه

قبل از خط خطا، یک لاگ بذارید ببینید چه اطلاعاتی رو بر می گردونه console.log(response)

اصلا پروژه اجرا نمیشه که بخواد پاسخی برگردونه . وقتی دستور node app.js میزنم خطای بالایی میده
با پکیج قبلی به راحتی اجرا میشه پروژه .که بخاطر اینکه پروژه اجرا نمیشد خودم تغییراتی داخلش انجام دادم و وصل میشه درگاه . اما توی وریفای مشکل داشت و دیگه ادامه ندادم .اما با پکیج شما اصلا اجرا نمیشه که بخواد بره درگاه پرداخت

@mobinco
Copy link

mobinco commented Nov 8, 2022

این بخش از اسکریپت مربوط به بازگشت از درگاه پرداخته.
عجیبه که موقع راه اندازی خطا میده
توی کدهاتون بخشی که مربوط به درگاه پرداخته حذف و دوباره تست کنید.

@akbarazimifar
Copy link
Author

این بخش از اسکریپت مربوط به بازگشت از درگاه پرداخته. عجیبه که موقع راه اندازی خطا میده توی کدهاتون بخشی که مربوط به درگاه پرداخته حذف و دوباره تست کنید.

اینکار رو هم کردم .کد های پرداخت رو که حذف می کنم پروژه به خوبی اجرا میشه .

@mobinco
Copy link

mobinco commented Nov 8, 2022

باید دیگه بررسی کنید طبق مستندات همین صفحه کدوم قسمت از کدهای ارسال به درگاه و تأیید پرداخت شما مشکل داره.

@akbarazimifar
Copy link
Author

باید دیگه بررسی کنید طبق مستندات همین صفحه کدوم قسمت از کدهای ارسال به درگاه و تأیید پرداخت شما مشکل داره.

ظاهرا ایراد از نسخه نود جی اس بود . ارتقا دادم نسخه 16 درست شد . فقط الان خطای وریفای میده :

شرح پیام: 03 (عملیات ناموفق)

Repository owner deleted a comment Dec 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants
@akbarazimifar @mobinco @alitnk @Hossein-Nadimi and others