This document provides the integration details between the merchant & the PointCheckout systems. The integration allows the merchant system with its own shopping and order processing system to work in conjunction with PointCheckout system for the payments. The merchant would need the API credentials & the private secret key to access the PointCheckout API.
The process is outlined below:
When a customer is ready to pay for their order/shopping cart on the merchant system, a “Pay using PointCheckout / Card” option is presented.
On submitting the “Pay using Pointcheckout / Card” button, the merchant system processes the order & makes the “NEW CHECKOUT REQUEST” API call to PointCheckout & obtains a checkout key.
On successfully obtaining the token from PointCheckout in the previous step, the merchant system then redirects the customer to PointCheckout passing in this checkout key (See PAYMENT PAGE REDIRECT).
The customer then may either successfully complete the payment or cancel the payment.
In any of the cases in the previous step, the customer is finally returned to the merchant system.
Once the customer has been returned to the merchant system from PointCheckout, the merchant system makes the “GET CHECKOUT REQUEST” API call to retrieve the status of the payment and at this stage the checkout is now complete.
REQUIREMENTS
Below are the requirements that must be implemented in the shopping cart extension for PointCheckout.
Add a new Payment Method to the checkout page called Card payment or Pay using PointCheckout.
When the payment method to be used is POINTCHECKOUT, PointCheckout Logo from https://www.pointcheckout.com/en/image/logo.png must be presented to the customer at the payment page
Should support the following configuration options:
Support for Test / Live environments.
Ability to restrict payment to users from specific countries
Ability to restrict payment to users from specific user groups
Ability to configure new order status
SETTINGS SCREEN
The settings screen for the PointCheckout payment method should include at minimum the following configuration options.
SUPPORTED ENVIRONMENTS
The PointCheckout Payment Extension / Plugin should support the following two environments; Test and Production. Throughout the API, they will be referred to as $BASE_URL and the admin can select the current environment in the administrator settings screen.
API REQUESTS
There are two relevant API requests within the checkout process:
This requests sends the checkout details to the PointCheckout checkout service. It returns a unique checkout id that would be used for the processing of the payment.
The request is a JSON based object. It includes the following parameters
var jsMessages = {}; jsMessages.complete = "اكمال"; jsMessages.select = "حدد"; jsMessages.pleaseSelect = "الرجاء الاختيار"; jsMessages.recaptchaTerms = "<div class="ltr"><span>This site is protected by reCAPTCHA and the Google</span><span><a href='https://policies.google.com/privacy'> Privacy Policy</a> and </span><span><a href='https://policies.google.com/terms'>Terms of Service</a> apply.</span></div>"; jsMessages.show = "اظهار"; jsMessages.hide = "اخفاء"; jsMessages.loadMore = "تحميل أكثر"; jsMessages.help = "تعليمات"; jsMessages.uploadingAttachments = "تحميل المرفقات"; jsMessages.processingAttachments = "تجهيز المرفقات"; jsMessages.requestSubmitted = "شكرا! تم تقديم طلب الدعم الخاص بك. سنتواصل معك قريبا"; jsMessages.submitFailedWithError = "فشل في إرسال طلب المساعدة بسبب الخطا التالي"; jsMessages.submitFailedTryAgain = "فشل في تقديم طلب المساعدة ، يرجى محاولة أعاده تحميل الصفحة وإرسالها مره أخرى"; jsMessages.faildToUploadAttachment = "فشل تحميل المرفق"; jsMessages.attachmentFileSize = "لا يجوز أن يتجاوز حجم الملف 15 ميغابايت"; jsMessages.fileAlreadyAttached = "هذا الملف مرفق بالفعل"; jsMessages.helpWithCheckout = "المساعدة في هذا الدفع"; jsMessages.attachmentNotAllowed = "نوع ملف المرفق غير مسموح به"; jsMessages.nameCantContainAnySpecialCharacters = "لا يمكن أن يحتوي الاسم على أي أحرف خاصة"; jsMessages.thisFieldIsRequired = "هذا الحقل مطلوب"; jsMessages.mustBeANumber = "Must be a number"; jsMessages.cannotBeLessThan = "لا يمكن أن يكون أقل من"; jsMessages.cannotBeGreaterThan = "لا يمكن أن يكون أكبر من"; jsMessages.mustBeExactly = "يجب أن يكون بالضبط"; jsMessages.charactersLong = "أحرف طويلة"; jsMessages.cannotBeShorterThan = "لا يمكن أن يكون أقصر من"; jsMessages.characters = "characters"; jsMessages.cannotBeLongerThan = "Cannot be longer than"; jsMessages.doesNotMatchFieldRequirements = "لا يتطابق مع متطلبات الحقل"; jsMessages.enterAValidEmailAddress = "أدخل عنوان بريد إلكتروني صالح"; jsMessages.enterAValidNumber = "أدخل رقما صحيحا"; jsMessages.invalidCardNumber = "رقم البطاقة غير صالح"; jsMessages.enterAValidCardNumber = "أدخل رقم بطاقة صحيح"; jsMessages.unableToVerifyCardNumberMissingLibrary = "unable to verify card number. Missing jquery.payment.js library."; jsMessages.cardsAreNotSupported = "البطاقات غير مدعومة لهذا الدفع"; jsMessages.unableToVerifyCardTypeMissingLibrary = "غير قادر على التحقق من نوع البطاقة. مكتبة jquery.payment.js مفقودة."; jsMessages.invalidMustBe4digits = "غير صالح ، يجب أن يتكون من 4 أرقام"; jsMessages.invalidMustBe3digits = "غير صالح ، يجب أن يتكون من 3 أرقام"; jsMessages.mustBe4digits = "Must be 4 digits"; jsMessages.mustBe3digits = "يجب أن يتكون من 3 أرقام"; jsMessages.unableToVerifyCVVMissingLibrary = "غير قادر على التحقق من CVV. مكتبة jquery.payment.js مفقودة."; jsMessages.atLeastOneItemShouldBeSelected = "يجب اختيار عنصر واحد على الأقل"; jsMessages.mustContainAtLeastOneUpperCase = "يجب أن تحتوي على حرف كبير واحد على الأقل"; jsMessages.mustContainAtLeastOneLowerCase = "Must contain at least one lower case character"; jsMessages.mustContainAtLeastOneDigitCharacter = "Must contain at least one digit character"; jsMessages.unableToLoadContentTryReloading = "Unable to load content, try reloading the page"; jsMessages.unableToValidateCardNumber = "غير قادر على التحقق من صحة رقم البطاقة"; jsMessages.enterAValidPhoneNumber = "أدخل رقم هاتف صحيح"; jsMessages.invalidCountryCallingCode = "رمز الاتصال بالدولة غير صالح"; jsMessages.phoneNumberIsTooShort = "رقم الهاتف قصير جدا"; jsMessages.phoneNumberIsTooLong = "رقم الهاتف طويل جدا"; jsMessages.notAValidNameCanOnlyContainLetters = "ليس اسما صالحا ، يمكن أن يحتوي على أحرف فقط"; jsMessages.enterAValidExpiryDate = "أدخل تاريخ انتهاء صلاحية صالح"; jsMessages.CVCMustContainNumbersOnly = "يجب أن تحتوي CVC على أرقام فقط"; jsMessages.unableToValidateCVC = "Unable to validate CVC"; |