Интеграция регулярных платежей с Realex / Global payment - PullRequest
1 голос
/ 09 марта 2019

Я пытаюсь создать регулярный платеж для Глобального платежного шлюза. Но получается ошибка ниже -

Выбранный шлюз не поддерживает этот тип транзакции.

$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 Ответ

0 голосов
/ 11 марта 2019

Спасибо за ваш вопрос.К сожалению, сейчас Global Payments SDK не поддерживает создание запланированных платежей с помощью решения для электронной коммерции Global Payments.Он работает со шлюзом Heartland, но это отдельный продукт, который в настоящее время используется только в США.

Если вы используете строковые карты на странице размещенных платежей, вы можете настроить для них расписания с помощью нашего API XML: https://developer.globalpay.com/#!/api/payment-scheduler

...