#payment-gateway #realex-payments-api #global-payments-api
#платежный шлюз #realex-payments-api #global-payments-api
Вопрос:
Я пытаюсь создать повторяющийся платеж для глобального платежного шлюза. Но появляется ошибка ниже —
Выбранный шлюз не поддерживает этот тип транзакции.
$config = new ServicesConfig();
$config->merchantId = "MerchantId";
$config->accountId = "AccountId";
$config->sharedSecret = "SharedSecret";
$config->serviceUrl = "https://pay.sandbox.realexpayments.com/pay";
$config->hostedPaymentConfig = new HostedPaymentConfig();
$config->hostedPaymentConfig->version = HppVersion::VERSION_2;
if ($recurring){
$config->hostedPaymentConfig->cardStorageEnabled = "1";
}
$service = new HostedService(
$config
);
$hostedPaymentData = new HostedPaymentData();
$hostedPaymentData->offerToSaveCard = true; // display the save card tick box
$hostedPaymentData->customerExists = false; // new customer
echo $service->Authorize($amount)
->withCurrency($currency_code)
->withRecurringInfo(RecurringType::FIXED, RecurringSequence::FIRST)
->withOrderId($order_id)
->withHostedPaymentData($hostedPaymentData)
->serialize();
На стороне сервера я получаю POST-ответ от платежного шлюза с идентификатором клиента и идентификатором платежа.
$parsedResponse = $service->parseResponse(json_encode($_POST));
$responseValues = $parsedResponse->responseValues; // get values accessible by key
$schedule = createSchedule($responseValues);
function createSchedule($responseValues)
{
$schedule = new Schedule();
$customerKey = $responseValues['SAVED_PAYER_REF'];
$paymentMethodKey = $responseValues['SAVED_PMT_REF'];
$orderId = $responseValues['ORDER_ID'];
$amount = $responseValues['AMOUNT'];
$schedule->id = getIdentifier('CreditV');
$schedule->customerKey = $customerKey;
$schedule->paymentKey = $paymentMethodKey;
$schedule->amount = $amount;//$_REQUEST['a3'] * 100;
$schedule->currency = 'EUR';//$_REQUEST['cc']
$schedule->startDate = date('mdY'); //, strtotime("last day of next month")
$schedule->paymentSchedule = PaymentSchedule::DYNAMIC; //or PaymentSchedule::FIRST_DAY_OF_THE_MONTH
$schedule->frequency = ScheduleFrequency::WEEKLY; //'Monthly', 'Bi-Monthly', 'Quarterly', 'Semi-Annually'
$schedule->numberOfPayments = 4;
$schedule->description = 'Test';
$schedule->poNumber = $orderId;
$schedule->reprocessingCount = 1;
$schedule->emailReceipt = 'Never';
$schedule->status = 'Active';
$response = $schedule->create();
return $response;
}
function getIdentifier($id)
{
$identifierBase = '%s-%s' . substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);
return sprintf($identifierBase, date('Ymd'), $id);
}
Ответ №1:
Спасибо за ваш вопрос. К сожалению, Global Payments SDK прямо сейчас не поддерживает создание запланированных платежей с помощью решения для электронной коммерции Global Payments. Это работает с Heartland gateway, но это отдельный продукт, который в настоящее время доступен только для США.
Если вы подключаете платежные карточки к размещенной странице платежей, вы можете настроить расписания для них, используя наш XML API:https://developer.globalpay.com /#!/api/планировщикплатежей
Комментарии:
1. Не могли бы вы, пожалуйста, указать мне, как я могу создать этот xml? Нужно ли мне писать код для создания Sha1has?
2. И как мы должны отправлять этот xml? Где URL-адрес?
3. Кто-нибудь получил ответ относительно того, какой URL отправлять для запроса XML?
4. Конечные точки XML API описаны здесь: developer.globalpay.com /#!/api/начало работы