我创建了一个带有文本输入的非托管 PayPal按钮,以便用户定义要支付的金额.这是一个订阅按钮.
现在的问题是必须有最低支付金额,比如101(瑞士法郎 - 瑞士法郎).
根据PayPal HTML-Variables的文档,我可以在隐藏的输入中添加以下变量到我的表单,以使其工作.
set_customer_limit 价值为 max_limit_ownmin_amount 价值为 101这set_customer_limit是工作但不是min_amount.任何金额都被接受.
我在技术支持处开了一张票,但到目前为止还没有回复.
这是我的表格:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<!-- //... -->
<input type="hidden" name="cancel_return" value="mydomain.com/cancel">
<input type="hidden" name="return" value="mydomain.com/paid">
<input type="hidden" name="token" value="<?php echo $token; ?>">
<input type="hidden" name="src" value="1">
<input type="text" name="a3" value="101.00">
<input type="hidden" name="p3" value="1">
<input type="hidden" name="t3" value="Y">
<input type="hidden" name="currency_code" value="CHF">
<input type="hidden" name="bn" value="PP-SubscriptionsBF:btn_subscribeCC_LG.gif:NonHostedGuest">
<!-- the concerned inputs -->
<input type="hidden" name="set_customer_limit" value="max_limit_own">
<input type="hidden" name="min_amount" value="101">
<!-- ---- -->
<input type="image" src="https://www.paypalobjects.com/de_DE/CH/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
</form>
Run Code Online (Sandbox Code Playgroud)
至于目前,我只是使用JavaScript验证最低金额,这不是很安全......
编辑
作为一个想法,我可以实现另一种形式(通过AJAX,onchange,onkeyup等提交),它设置用户在PayPal表单之前给出的最小金额,然后将其放入PayPal输入中(再次设置为隐藏) ):
<input type="hidden" name="a3" value="<?php echo $_POST['pre_min_amount'] ?>">
Run Code Online (Sandbox Code Playgroud)
这样我就可以在提交PayPal表格之前用PhP验证最低金额.但这对我来说似乎并不干净.如果有人能给我一个提示,真的很高兴!
toe*_*lab 29
PayPal技术支持的答案是:不,这是不可能的!
(回答日期是05/02/2015)希望将来有可能.如果是这样,请发布您的答案!
我真的建议使用PayPal API进行此类事情(包括创建开发人员帐户,通过文档等).
所以这个"解决方案"是一个快速而肮脏的解决方法.
首先,在页面中添加一个小表单(我将其称为min_amount-form)(告诉用户,他必须先设置金额):
<form id="min_amount" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<input type="text" id="pre_min_amount" name="pre_min_amount" value="101">
<input type="submit" value="Set min. Amount">
</form>
Run Code Online (Sandbox Code Playgroud)
然后,整个贝形式添加至PHP变量与NowDoc并从添加张贴值min_amount-形式的a3输入:
$min_amount = 0;
$payPalForm = <<<SOME
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<!-- //... -->
<input type="hidden" name="a3" value="$min_amount">
</form>
SOME;
Run Code Online (Sandbox Code Playgroud)
提交后,检查最低金额是否为真,然后只显示PayPal表格:
if (isset($_POST['pre_min_amount']) && is_numeric($_POST['pre_min_amount']) && floatval($_POST['pre_min_amount']) >= 101) {
$min_amount = htmlspecialchars($_POST['pre_min_amount']);
echo $payPalForm;
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,它快速而又脏(没有更多时间用于此项目),但您确保在服务器端验证最小数量,而不仅仅是使用Javascript.您也可以使用AJAX调用提交min_amount-form,但是此调用的返回是在客户端,这也不是很安全.(当然你也可以)
顺便说一句,我对这个解决方案并不感到自豪,但有时候,程序员的生活很艰难,我确信你们所有的编码员都必须以某种方式做某些q&d代码; - )...
更新: 2015年5月8日
全部取决于相关帐户注册的国家/地区.PayPal仅在美国和加拿大提供全面服务
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |