2017-02-02 4 views
0

Идея заключается в том, что у меня есть стандартная кнопка PayPal Buy Now на моем тестовом сайте. Я смог узнать, как передать одну переменную на страницу обработки платежей PayPal и вернуть ее на странице моего слушателя/успеха. Я делаю это, вводя значение в скрытое «пользовательское» поле в форме, содержащей кнопку. Пока нет проблем.отправить json encoded var через настраиваемое поле кнопки PayPal Купить сейчас

Однако, поскольку мне нужен массив данных, а не только одно значение для одной переменной, я пытаюсь применить метод JSON ENCODE для отправки данных, а затем использовать метод JSON DECODE в URL-адресе моего успешного сообщения. У меня есть три определенные переменные: $ st_id, $ selected_mod, $ selected_tut.

К сожалению, никто из них не может пройти. Как я могу заставить его работать? Благодарю.

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="JKXXXXXXXXXXXXX"> 
<input type="hidden" name="rm" value="2"> 
<input type="hidden" name="custom" value="<?php json_encode(array($st_id,$selected_mod,$selected_tut,JSON_FORCE_OBJECT)) ;?>"> 
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 
// THE FOLLOWING IS MY CODE IN SUCCESS MESSAGE URL 
<?php 
$ipn_post_data = $_POST; 
    //$st_id=$_POST['custom']; //this works if I use a simple variable than a json encoded array 

$posted_json = json_decode($_POST['custom']); 
$json_st_id= $posted_json['0']; 
$json_mod_code= $posted_json['1']; 
$json_tut_id= $posted_json['2']; 

echo "Wow! Payment was done."; 

echo "Your student ID:&nbsp".$json_st_id."<br />"; 

echo "Module:&nbsp".$json_mod_code."<br />"; 

echo "Selected Tutor:&nbsp".$json_tut_id."<br />"; 

echo "Please save the above information until you will receive a confirmation from us. Thank you." 
?> 

ответ

0

Во-первых, вы не echo -ную закодированный массив JSON, чтобы ваш атрибут value будет пустым.

Во-вторых, вы получите вложенные двойные кавычки для всех строковых значений в массиве, например

value="[123,"some mod","some tut",16]" 

Вы должны правильно кодировать значение атрибута HTML

value="<?= htmlspecialchars(json_encode([$st_id,$selected_mod,$selected_tut])) ?>" 

Кроме того, я действительно Wouldn» t используйте JSON_FORCE_OBJECT (что вы делали неправильно) с массивом.

См http://php.net/manual/function.htmlspecialchars.php

+0

следующий код работал отлично для меня: "> Спасибо вам большое! @Фил – Ali