我需要帮助。 我试图隐含一次用Bluesnap付款。 付款后,我需要将用户返回到具有所需参数的站点。
我在文档中发现了两种隐含方式。 我可以使用encription或自定义参数的thankyou.backtosellerurl。
我尝试了thankyou.backtosellerurl参数,但是付款后没有任何反应。我有默认的Bluesnap谢谢页面。
比我尝试使用custom1参数,但也没有得到所需的结果。对于自定义参数,我在管理面板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'];
}
答案 0 :(得分:1)
要使用thankyou.backtosellerurl
BlueSnap,必须允许您的帐户具有特定权限。
您应该联系BlueSnap support,并要求他们这样做
答案 1 :(得分:0)
使用thankyou.backtosellerurl参数需要BlueSnap来启用您帐户的权限,但是仅当您打算在不同的交易/产品/购物者位置传递不同的回调URL或最终需要传递任何其他逻辑时,才应使用此参数您仅在创建结帐页面时才将回调URL设置为参数。如果是这种情况,则需要联系BlueSnap支持并要求他们为您的帐户启用相关权限。
如果您有一个固定的回调URL,则可以通过Page Design->设置在BlueSnap帐户控制台上进行设置。