Как я могу использовать URL обратного вызова Bluesnap - PullRequest
0 голосов
/ 07 ноября 2018

Мне нужна помощь. Я попытался провести одноразовые платежи с Bluesnap. После оплаты мне необходимо вернуть пользователя на сайт с необходимым параметром.

Я нашел в документации, как можно это сделать. Я мог бы использовать thankyou.backtosellerurl с надписью или пользовательским параметром.

Я попробовал thankyou.backtosellerurl param, но после оплаты ничего не происходит. У меня есть страница благодарности Bluesnap по умолчанию.

Чем я пытался использовать custom1 param, но также не получил необходимого результата. Для Пользовательского параметра я добавляю настройки дизайна страницы в админ-панели http://joxi.ru/p27LM9EsKnXJQA

Мой код.

function generatePaymentLink($amount, $text = 'Pay Now'){
    return '<a class="payment-link" target="_blank" href="'.generatePaymentUrl($amount).'">'.$text.'</a>';
}

function generatePaymentUrl($amount){
    $config = getConfiguration();
    $res = request('https://sandbox.bluesnap.com/services/2/tools/param-encryption');
    if($config['sandbox_mode']){
        return $config['sandbox']['url'].'?merchantid='.$config['sandbox']['merchantid'].'&enc='.$res;
    }
    return $config['production']['url'].'?merchantid='.$config['production']['merchantid'].'&amount='.$amount;
}

function getConfiguration(){
    require_once (__DIR__.'/config.php');
    return $config;
}

function wrapCdata($string)
{
    return '<![CDATA['
    .str_replace(']]>', ']]><![CDATA[', $string)
    .']]>';
}

function paramEncryption(array $params)
{
    // compose request XML
    $params_xml = '';
    foreach ($params as $key => $value)
    {
        $key = wrapCdata($key);
        $value = wrapCdata($value);
        $params_xml .= "<parameter>\n<param-key>$key</param-key>\n
                <param-value>$value</param-value>\n</parameter>\n";
    }
    $request_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<param-encryption xmlns=\"http://ws.plimus.com\">\n
            <parameters>\n".$params_xml."  </parameters>\n</param-encryption>\n";
  return $request_xml;
}

function request($url, $http_method = 'POST')
{
    $request_xml = paramEncryption([
        'thankyou.backtosellerurl' => urlencode('https://siteurl.com/ipn-button.php?test=loremIpsum'),
        'amount' => 22,
        'currency' => 'USD',
        'custom1' => 'loremIpsumCustom'
    ]);
    $username = '//User';
    $password = '//Password';
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_USERAGENT => 'AIOP STORE',
        CURLOPT_COOKIESESSION => true,
        CURLOPT_HEADER => false,
        CURLOPT_HTTPHEADER => array('Content-Type: application/xml'),
        CURLOPT_RETURNTRANSFER => true,
    ]);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$password);

        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request_xml);

    curl_setopt($ch, CURLOPT_URL, $url);
    $response_xml = curl_exec($ch);
    if ($response_xml === false)
    {
        curl_close($ch);
    }

    curl_close($ch);

    $xml = simplexml_load_string($response_xml);
    $json  = json_encode($xml);
    $configData = json_decode($json, true);

    return $configData['encrypted-token'];

}

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Использование параметра thankyou.backtosellerurl требует, чтобы BlueSnap включил разрешение для вашей учетной записи, но этот параметр следует использовать, только если вы намереваетесь передавать разные URL-адреса обратного вызова в разных транзакциях / продуктах / местоположении покупателя или любую другую логику на вашем конце, которая требует Вы должны установить URL обратного вызова в качестве параметра только при создании страницы оформления заказа. В этом случае вам необходимо обратиться в службу поддержки BlueSnap и попросить их включить соответствующее разрешение для вашей учетной записи.

Если у вас есть один фиксированный URL-адрес обратного вызова, вы можете установить его в консоли учетной записи BlueSnap через Дизайн страницы -> настройки.

0 голосов
/ 29 ноября 2018

Для использования thankyou.backtosellerurl BlueSnap необходимо разрешить конкретное разрешение для вашей учетной записи.

Вам следует обратиться в службу поддержки BlueSnap и попросить их сделать это

...