通过 PayPal Buy Now 按钮的自定义字段发送一个 json 编码的 var
Posted
技术标签:
【中文标题】通过 PayPal Buy Now 按钮的自定义字段发送一个 json 编码的 var【英文标题】:send a json encoded var via custom field of PayPal Buy Now button 【发布时间】:2017-06-19 01:58:15 【问题描述】:我的想法是在我的测试网站上有一个标准的 PayPal Buy Now 按钮。我能够学习如何将单个变量传递到 PayPal 支付处理页面并将其返回到我的侦听器/成功页面。我通过向包含按钮的表单中的隐藏 "custom" 字段引入一个值来做到这一点。目前没问题。
但是,由于我需要一个数据数组,而不仅仅是单个变量的单个值,因此我尝试应用 JSON ENCODE 方法来发送数据,然后在我的成功消息 url 中使用 JSON DECODE 方法。我定义了三个变量:$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" >
<img border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" >
</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: ".$json_st_id."<br />";
echo "Module: ".$json_mod_code."<br />";
echo "Selected Tutor: ".$json_tut_id."<br />";
echo "Please save the above information until you will receive a confirmation from us. Thank you."
?>
【问题讨论】:
【参考方案1】:首先,您不是 echo
-ing JSON 编码数组,因此您的 value
属性将为空。
其次,您将获得数组中任何字符串值的嵌套双引号,例如
value="[123,"some mod","some tut",16]"
您需要正确编码 html 属性值
value="<?= htmlspecialchars(json_encode([$st_id,$selected_mod,$selected_tut])) ?>"
另外,我真的不会在数组中使用 JSON_FORCE_OBJECT
(你做错了)。
见http://php.net/manual/function.htmlspecialchars.php
【讨论】:
以下代码非常适合我: 非常非常感谢! @菲尔以上是关于通过 PayPal Buy Now 按钮的自定义字段发送一个 json 编码的 var的主要内容,如果未能解决你的问题,请参考以下文章
Paypal Buy Now IPN 在 POST vars 中返回空 item_number