راه اندازی روش پرداخت

یک تراکنش پرداخت با استفاده از پرداخت‌های وب با کشف برنامه پرداخت شما آغاز می‌شود. یاد بگیرید که چگونه یک روش پرداخت تنظیم کنید و برنامه پرداخت خود را برای انجام پرداخت‌ها توسط بازرگانان و مشتریان آماده کنید.

منتشر شده: ۲۷ سپتامبر ۲۰۱۷، آخرین به‌روزرسانی: ۱ ژوئیه ۲۰۲۵

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

اگر با مفهوم پرداخت‌های وب یا نحوه‌ی عملکرد تراکنش‌های پرداخت از طریق اپلیکیشن‌های پرداخت آشنا نیستید، ابتدا مقالات زیر را بخوانید:

پشتیبانی مرورگر

پرداخت‌های وب از چندین فناوری مختلف تشکیل شده است و وضعیت پشتیبانی آن به مرورگر بستگی دارد.

کروم سافاری فایرفاکس
دسکتاپ اندروید دسکتاپ موبایل دسکتاپ/موبایل
رابط برنامه‌نویسی کاربردی درخواست پرداخت
رابط برنامه‌نویسی کاربردی مدیریت پرداخت مبتنی بر وب
اپلیکیشن پرداخت iOS/Android ✔* ✔*

چگونه یک مرورگر یک برنامه پرداخت را کشف می‌کند

هر اپلیکیشن پرداخت باید موارد زیر را ارائه دهد:

  • شناسه روش پرداخت مبتنی بر URL
  • مانیفست روش پرداخت (به جز زمانی که شناسه روش پرداخت توسط شخص ثالث ارائه می‌شود)
  • مانیفست برنامه وب
نمودار: چگونه یک مرورگر، برنامه پرداخت را از طریق شناسه روش پرداخت مبتنی بر URL کشف می‌کند

فرآیند کشف زمانی شروع می‌شود که یک تاجر تراکنشی را آغاز می‌کند:

  1. مرورگر درخواستی را به URL شناسه روش پرداخت ارسال می‌کند و مانیفست روش پرداخت را دریافت می‌کند.
  2. مرورگر، آدرس اینترنتی مانیفست برنامه وب را از مانیفست روش پرداخت تعیین می‌کند و مانیفست برنامه وب را دریافت می‌کند.
  3. مرورگر از طریق مانیفست برنامه وب، تعیین می‌کند که آیا برنامه پرداخت سیستم عامل یا برنامه پرداخت مبتنی بر وب را اجرا کند.

بخش‌های بعدی به تفصیل توضیح می‌دهند که چگونه روش پرداخت خود را تنظیم کنید تا مرورگرها بتوانند آن را کشف کنند.

مرحله ۱: شناسه روش پرداخت را ارائه دهید

شناسه روش پرداخت ، یک رشته مبتنی بر URL است. برای مثال، شناسه Google Pay، https://google.com/pay است. توسعه‌دهندگان برنامه‌های پرداخت می‌توانند هر URL را به عنوان شناسه روش پرداخت انتخاب کنند، مادامی که بر آن کنترل داشته باشند و بتوانند محتوای دلخواه و هدرهای HTTP را ارائه دهند. در این مقاله، ما https://bobbucks.dev/pay به عنوان شناسه روش پرداخت استفاده خواهیم کرد.

نحوه استفاده فروشندگان از شناسه روش پرداخت

یک شیء PaymentRequest با فهرستی از شناسه‌های روش پرداخت ساخته می‌شود که برنامه‌های پرداختی را که یک فروشنده تصمیم به پذیرش آنها دارد، مشخص می‌کند. شناسه‌های روش پرداخت به عنوان مقداری برای ویژگی supportedMethods تنظیم می‌شوند. برای مثال:

[فروشنده] درخواست پرداخت می‌کند:

const request = new PaymentRequest([{
  supportedMethods: 'https://bobbucks.dev/pay'
}], {
  total: {
    label: 'total',
    amount: { value: '10', currency: 'USD' }
  }
});

مرحله ۲: ارائه مانیفست روش پرداخت

مانیفست روش پرداخت یک فایل JSON است که مشخص می‌کند کدام برنامه پرداخت می‌تواند از این روش پرداخت استفاده کند.

مانیفست روش پرداخت را ارائه دهید

وقتی یک فروشنده تراکنش پرداخت را آغاز می‌کند، مرورگر یک درخواست HTTP HEAD به URL شناسه روش پرداخت ارسال می‌کند . URL شناسه روش پرداخت با یک سرآیند HTTP Link پاسخ می‌دهد که به URL اشاره می‌کند که مرورگر می‌تواند مانیفست روش پرداخت را از آنجا دریافت کند.

سرور روش پرداخت را طوری پیکربندی کنید که با یک هدر HTTP Link با ویژگی rel="payment-method-manifest" و URL مانیفست روش پرداخت پاسخ دهد. برای مثال، اگر مانیفست در https://bobbucks.dev/pay/payment-manifest.json باشد، هدر پاسخ شامل موارد زیر خواهد بود:

Link: <https://bobbucks.dev/pay/payment-manifest.json>; rel="payment-method-manifest"

این URL می‌تواند یک نام دامنه کاملاً واجد شرایط یا یک مسیر نسبی باشد. برای مشاهده مثال، ترافیک شبکه https://bobbucks.dev/pay را بررسی کنید. همچنین می‌توانید از دستور curl استفاده کنید:

curl --include https://bobbucks.dev/pay

مرورگر در مرحله بعد یک درخواست HTTP GET به آدرس اینترنتی manifest روش پرداخت ارسال می‌کند. سرور با متن manifest روش پرداخت پاسخ می‌دهد.

یک مانیفست روش پرداخت دارای دو فیلد است، default_applications و supported_origins .

نام ملک توضیحات
default_applications (الزامی) آرایه‌ای از URLها که به مانیفست‌های برنامه وب اشاره می‌کند، جایی که برنامه‌های پرداخت میزبانی می‌شوند. (URL می‌تواند یک نسبی باشد). انتظار می‌رود این آرایه به مانیفست توسعه، مانیفست تولید و غیره اشاره کند.
supported_origins آرایه‌ای از URLها که به مبدأهایی اشاره می‌کند که ممکن است میزبان برنامه‌های پرداخت شخص ثالث باشند که همان روش پرداخت را پیاده‌سازی می‌کنند. توجه داشته باشید که یک روش پرداخت می‌تواند توسط چندین برنامه پرداخت پیاده‌سازی شود.
فیلدهای مانیفست روش پرداخت

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

[مدیریت پرداخت] /payment-manifest.json:

{
  "default_applications": ["https://bobbucks.dev/manifest.json"],
  "supported_origins": [
    "https://alicepay.friendsofalice.example"
  ]
}

وقتی مرورگر فیلد default_applications را می‌خواند، فهرستی از لینک‌ها به مانیفست‌های برنامه‌های وبِ برنامه‌های پرداخت پشتیبانی‌شده را پیدا می‌کند.

مرحله ۳: ارائه مانیفست برنامه وب

همانطور که از نامش پیداست، از مانیفست برنامه وب برای تعریف یک برنامه وب استفاده می‌شود. این یک فایل مانیفست پرکاربرد برای تعریف یک برنامه وب پیش‌رونده (PWA) است.

مانیفست یک برنامه وب معمولی به این شکل خواهد بود:

[پردازنده پرداخت] /manifest.json:

{
  "name": "Pay with Bobpay",
  "short_name": "Bobpay",
  "description": "This is an example of the Payment Handler API.",
  "icons": [
    {
      "src": "images/manifest/icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "images/manifest/icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ],
  "serviceworker": {
    "src": "service-worker.js",
    "scope": "/",
    "use_cache": false
  },
  "start_url": "/",
  "display": "standalone",
  "theme_color": "#3f51b5",
  "background_color": "#3f51b5",
  "related_applications": [
    {
      "platform": "play",
      "id": "com.example.android.samplepay",
      "min_version": "1",
      "fingerprints": [
        {
          "type": "sha256_cert",
          "value": "4C:FC:14:C6:97:DE:66:4E:66:97:50:C0:24:CE:5F:27:00:92:EE:F3:7F:18:B3:DA:77:66:84:CD:9D:E9:D2:CB"
        }
      ]
    }
  ]
}

اطلاعات شرح داده شده در مانیفست یک برنامه وب، برای تعریف نحوه نمایش یک برنامه پرداخت در رابط کاربری درخواست پرداخت نیز استفاده می‌شود.

نام ملک توضیحات
name (الزامی) به عنوان نام برنامه پرداخت استفاده می‌شود.
icons (الزامی) به عنوان نماد برنامه پرداخت استفاده می‌شود. فقط Chrome از این نمادها استفاده می‌کند؛ اگر آنها را به عنوان بخشی از ابزار پرداخت مشخص نکنید، سایر مرورگرها ممکن است از آنها به عنوان نمادهای جایگزین استفاده کنند.
serviceworker برای شناسایی سرویس ورکر (service worker) که به عنوان برنامه پرداخت مبتنی بر وب اجرا می‌شود، استفاده می‌شود.
serviceworker.src آدرس اینترنتی (URL) برای دانلود اسکریپت سرویس ورکر.
serviceworker.scope رشته‌ای که نشان‌دهنده‌ی یک URL است که محدوده‌ی ثبت‌نام یک سرویس ورکر را تعریف می‌کند.
serviceworker.use_cache آدرس اینترنتی (URL) برای دانلود اسکریپت سرویس ورکر.
related_applications برای شناسایی برنامه‌ای که به عنوان برنامه پرداخت ارائه شده توسط سیستم عامل عمل می‌کند، استفاده می‌شود. جزئیات بیشتر را در راهنمای توسعه‌دهندگان برنامه‌های پرداخت اندروید بیابید.
prefer_related_applications برای تعیین اینکه کدام برنامه پرداخت باید راه‌اندازی شود، زمانی که هم برنامه پرداخت ارائه شده توسط سیستم عامل و هم برنامه پرداخت مبتنی بر وب در دسترس هستند، استفاده می‌شود.
فیلدهای مهم مانیفست برنامه وب

از ویژگی name در مانیفست برنامه وب به عنوان نام برنامه پرداخت و از ویژگی icons به عنوان آیکون برنامه پرداخت استفاده می‌شود.

چگونه کروم تعیین می‌کند کدام برنامه پرداخت را اجرا کند

راه‌اندازی اپلیکیشن پرداخت ویژه پلتفرم

برای راه‌اندازی اپلیکیشن پرداخت ویژه پلتفرم، شرایط زیر باید رعایت شود:

  • فیلد related_applications در مانیفست برنامه وب مشخص شده است و:
    • شناسه بسته و امضای برنامه نصب شده مطابقت دارند، در حالی که حداقل نسخه ( min_version ) در مانیفست برنامه وب کمتر یا مساوی نسخه برنامه نصب شده است.
  • فیلد prefer_related_applications true است.
  • برنامه پرداخت مخصوص پلتفرم نصب شده است و دارای موارد زیر است:
    • یک فیلتر هدف از نوع org.chromium.action.PAY .
    • شناسه روش پرداخت که به عنوان مقدار برای ویژگی org.chromium.default_payment_method_name مشخص شده است.

برای جزئیات بیشتر در مورد نحوه تنظیم این موارد ، به راهنمای توسعه‌دهندگان برنامه‌های پرداخت اندروید مراجعه کنید.

[مدیریت پرداخت] /manifest.json

"prefer_related_applications": true,
"related_applications": [{
  "platform": "play",
  "id": "xyz.bobpay.app",
  "min_version": "1",
  "fingerprints": [{
    "type": "sha256_cert",
    "value": "92:5A:39:05:C5:B9:EA:BC:71:48:5F:F2:05:0A:1E:57:5F:23:40:E9:E3:87:14:EC:6D:A2:04:21:E0:FD:3B:D1"
  }]
}]

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

راه‌اندازی اپلیکیشن پرداخت اینترنتی

برنامه پرداخت مبتنی بر وب باید در فیلد serviceworker در مانیفست برنامه وب مشخص شود.

[پردازنده پرداخت] /manifest.json:

"serviceworker": {
  "src": "payment-handler.js"
}

مرورگر با ارسال رویداد paymentrequest به سرویس ورکر، برنامه پرداخت مبتنی بر وب را اجرا می‌کند. سرویس ورکر نیازی به ثبت قبلی ندارد. می‌توان آن را به صورت خودکار ثبت کرد .

آشنایی با بهینه‌سازی‌های ویژه

چگونه مرورگرها می‌توانند رابط کاربری درخواست پرداخت را نادیده بگیرند و مستقیماً یک برنامه پرداخت را اجرا کنند

در کروم، وقتی متد show() از PaymentRequest فراخوانی می‌شود، API درخواست پرداخت، یک رابط کاربری ارائه شده توسط مرورگر به نام "رابط کاربری درخواست پرداخت" را نمایش می‌دهد. این رابط کاربری به کاربران اجازه می‌دهد تا یک برنامه پرداخت را انتخاب کنند. پس از فشردن دکمه Continue در رابط کاربری درخواست پرداخت، برنامه پرداخت انتخاب شده اجرا می‌شود.

رابط کاربری درخواست پرداخت قبل از اجرای برنامه پرداخت، مداخله می‌کند.

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

از رابط کاربری درخواست پرداخت عبور کنید و مستقیماً برنامه پرداخت را اجرا کنید.

برای راه‌اندازی مستقیم یک اپلیکیشن پرداخت، باید شرایط زیر را داشته باشید:

  • show() با یک حرکت کاربر (مثلاً کلیک ماوس) فعال می‌شود.
  • فقط یک برنامه پرداخت واحد وجود دارد که:
    • از شناسه روش پرداخت درخواستی پشتیبانی می‌کند.

چه زمانی یک اپلیکیشن پرداخت مبتنی بر وب به صورت «به موقع» (JIT) ثبت می‌شود؟

برنامه‌های پرداخت مبتنی بر وب می‌توانند بدون مراجعه قبلی کاربر به وب‌سایت برنامه پرداخت و ثبت نام سرویس دهنده راه‌اندازی شوند. سرویس دهنده می‌تواند به محض اینکه کاربر تصمیم به پرداخت با برنامه پرداخت مبتنی بر وب می‌گیرد، ثبت شود. دو زمان مختلف برای ثبت نام وجود دارد:

  • اگر رابط کاربری درخواست پرداخت به کاربر نشان داده شود، برنامه به صورت خودکار ثبت شده و با کلیک کاربر روی «ادامه» اجرا می‌شود.
  • اگر رابط کاربری درخواست پرداخت نادیده گرفته شود، برنامه پرداخت به صورت خودکار ثبت شده و مستقیماً اجرا می‌شود. نادیده گرفتن رابط کاربری درخواست پرداخت برای اجرای یک برنامه ثبت شده به صورت خودکار، نیاز به یک اشاره کاربر دارد که از ثبت غیرمنتظره سرویس ورکرهای بین مبدا جلوگیری می‌کند.

مراحل بعدی

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