Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建具有可覆盖变量的PayPal按钮_Php_Html_Paypal - Fatal编程技术网

Php 如何创建具有可覆盖变量的PayPal按钮

Php 如何创建具有可覆盖变量的PayPal按钮,php,html,paypal,Php,Html,Paypal,你好,我想创建一个贝宝购买按钮,有一个动态设置的金额。 我希望通过表单中的文本输入字段传递金额,通过隐藏字段传递项目编号 问题是,无论我做什么,我都会从贝宝网站上得到一个加密的s-xclick按钮。 此按钮不允许在表单中放置隐藏变量 我想我需要的是一个xclick按钮。我的目标是允许用户增加他们对我的网站的内部信用 编辑(将问题答案中添加的内容移动到问题中)(从这里@tokam: 要将此添加到讨论中,我想展示我目前针对该问题的解决方案: 这里我们有一些Javascript验证,可以帮助用户进行输

你好,我想创建一个贝宝购买按钮,有一个动态设置的金额。 我希望通过表单中的文本输入字段传递金额,通过隐藏字段传递项目编号

问题是,无论我做什么,我都会从贝宝网站上得到一个加密的s-xclick按钮。 此按钮不允许在表单中放置隐藏变量

我想我需要的是一个xclick按钮。我的目标是允许用户增加他们对我的网站的内部信用

编辑(将问题答案中添加的内容移动到问题中)(从这里@tokam:

要将此添加到讨论中,我想展示我目前针对该问题的解决方案:

这里我们有一些Javascript验证,可以帮助用户进行输入

function validatePaypalForm()
{
    var val = $('#paypalPaymentAmount').val().replace(/\s*$/, "").replace(/,/ , ".").replace(/€$/, "");
    var errormsg = '';
    var ret, amountField;
    if( val==='' || isNaN( parseFloat(val) ) || !isFinite(val) )
    {
        errormsg = 'Bitte geben Sie einen gültigen Betrag an';
}else if( parseFloat( val ) < <?php echo $this->minimum?>  )
{
    errormsg = 'Das Einzahlungsminimum betr&auml;gt <?php echo $this->minimum?>&euro;';
}

ret = ( errormsg === '' );


amountField = $( '#paypalAmountField' );
if( ret )
{
    amountField.removeClass( 'error' );     
    $('#paypalAmountErrorMessage').html( '&nbsp;' );
    $('#paypalPaymentAmount').val( val );
    fb.start( 
        '<p><strong>Sie werden in kürze zur Seite von Paypal weitergeleitet.</strong></p>',
        'width:700 showPrint:false modal:true showClose:false showOuterClose:true showItemNumber:false closeOnNewWindow:false outsideClickCloses:true innerBorder:0 imageClickCloses:false scrolling: no'
    );

}else{
    amountField.addClass( 'error' );
    $('#paypalAmountErrorMessage').html( errormsg );
}

return ret;
函数validatePaypalForm()
{
var val=$(“#paypalPaymentAmount”).val().替换(/\s*$/,”).替换(/,/,”).替换(/€$/,”);
var errormsg='';
var-ret,amountField;
如果(val==''|| isNaN(parseFloat(val))| |!isFinite(val))
{
errormsg='bite geben Sie einen gü;ltigen Betrag an';
}否则如果(parseFloat(val)<)
{
errormsg='Das Einzahlungsminimum beträ;gt&euro;';
}
ret=(errormsg=='');
amountField=$(“#paypalAmountField”);
如果(ret)
{
removeClass('error');
$('#paypalAmountErrorMessage').html('');
$('paypalPaymentAmount').val(val);
fb.开始(
“你是贝宝·韦特盖利特的朋友。”,
'宽度:700 showPrint:false模式:true showClose:false showOuterClose:true showItemNumber:false closeOnNewWindow:false Outside ClickCloses:true innerBorder:0图像ClickCloses:false滚动:否'
);
}否则{
amountField.addClass('error');
$('#paypalAmountErrorMessage').html(errormsg);
}
返回ret;
} 现在我的按钮来了。我遇到的问题是,用户很容易设置其他货币代码。我可以在我的IPN侦听器中通过退款来处理这一问题。未加密的可更改按钮是否还有其他问题

<form onsubmit="return validatePaypalForm();" class="stn-form" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<fieldset id="fieldset-p"><legend><span>2.</span>myproject Guthaben aufladen per Paypal Zahlung</legend>
<div id='paypalAmountField' class="field">
<label for='paypalPaymentAmount' >Betrag &euro;:</label>
<input id='paypalPaymentAmount' type="text" name='amount' value='' />
<span style='display:block;' id='paypalAmountErrorMessage' class='errorText'>'&nbsp;</span>

</div>
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="THE_ID_OF_MY_CLIENT">
<input type="hidden" name="lc" value="DE">
<input type="hidden" name="item_name" value="myproject Advertiser Vorkasse">
<input type="hidden" name='item_number' value="11500">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_paynowCC_LG.gif:NonHosted">
<input type="hidden" name="rm" value="1">
<input type="hidden" name='cbt' value="Zu myproject.de zur&uuml;ckkehren">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="return" value="http://myproject.somedomain.net/advertiser/guthaben-aufladen/ret/success" />
<input type="hidden" name="cancel_ return" value="http://myproject.somedomain.net/advertiser/guthaben-aufladen/ret/canceled" />
<div class="actionrow">

<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_paynowCC_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">
</div>
</fieldset>
</form>

2.我的项目Guthaben aufladen per Paypal Zahlung
贝特拉格&欧元;:
' 

您不应该使用未加密的xclick。我解决这个问题的方法是使用-在客户端中使用某种缓存,这样您就不会每次都执行整个http请求响应

请注意,paypal使用了两种类型的api—一种是restful(也不是真正的),另一种是SOAP(我使用了NVP方法)

您也可以使用openssl在服务器上生成加密按钮,但我使用这种方法遇到了无法解决的问题,无论是在这里还是在paypal开发者论坛上,都无法获得任何帮助

编辑:未加密按钮的问题是,任何使用firebug(不谈更先进的工具)的人都可能会收到付款并更改成本等等


如果您坚持这个方向,您可以按照paypal提供的简单html表单创建此按钮。您可以在paypal网站中创建一个未加密的按钮,然后编辑html并将所需字段更改为
。我强烈建议不要使用此路径。

无法动态覆盖金额的原因是:因为您有一个所谓的“贝宝托管按钮”。
通过托管按钮,金额存储在PayPal端,不能用“amount”变量覆盖。 您可以使用非托管按钮,也可以使用API调用动态更新按钮的数量。
要使用非托管按钮,只需在按钮创建工具中找到“步骤2”,然后取消选中“主机按钮与PayPal”

备选案文2: 仍然使用hosted按钮,并使用BMUpdateButton API更新金额。BMUpdateButton请求示例如下所示:

USER=Your API username
PWD=Your API password
SIGNATURE=Your API signature
VERSION=82.0
HOSTEDUBTTONID=The value of <input type="hidden" name="hosted_button_id" value="">
BUTTONTYPE=The type of button. E.g. BUYNOW
BUTTONCODE=The type of code you want to get back. E.g. HOSTED
L_BUTTONVAR0=amount=The new amount with a period as separator
L_BUTTONVAR1=item_name=Optional: a new item name if you wish
USER=您的API用户名
PWD=您的API密码
签名=您的API签名
版本=82.0
HOSTEDUBTTONID=的值
BUTTONTYPE=按钮的类型,例如BUYNOW
BUTTONCODE=要返回的代码类型。例如,托管
L_BUTTONVAR0=金额=以句点为分隔符的新金额
L_BUTTONVAR1=项目_名称=可选:如果您愿意,请输入新的项目名称
同样,您也可以使用API创建新按钮,或者使用API搜索所有存储的托管按钮列表(例如,自动查找按钮的托管按钮id)


使用托管按钮的原因是因为它更安全。非托管、未加密的按钮基本上会将金额留给操纵。欺诈交易等待发生。

我认为如果您更新…,这可能对您有效。”you@yoursite.com"…它是非加密的,似乎仍在贝宝的网站上进行清算

删除:value=“我的默认价格” 如果您希望用户将其输入空白文本框…对于我的页面,价格与黄金价格相关联,因此我必须动态更新变量“amount”,并且只保留值=

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="you@yoursite.com">
<input type="hidden" name="item_name" value="example description">
<input type="hidden" name="item_number" value="">
<input type="text" name="amount" value="my_default_price">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="return" value="http://www.yoursite.com/returnpage.php">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="bn" value="PP-BuyNowBF">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but02.gif" border="0" name="submit" alt="Make your payments with PayPal. It is free, secure, effective.">
<img alt="" border="0" src="https://www.paypal.com/it_IT/i/scr/pixel.gif" width="1" height="1">
</form>


你尝试过什么?结果在哪里?你希望其他人为你写吗?你真的明白我不是在要求代码吗?我是在要求paypal网站上的功能来创建一个非托管按钮或允许cmd类型xlick而不是s-xclick!!!!一个简单的网络搜索会给你这个!你的答案是什么使用api的先进性?非加密按钮的风险是什么?在1a-android.de上,我运行了一个非加密按钮,工作正常,但它是一个捐赠按钮,我忘记了我是如何在没有api和s-xclick的情况下获得一个按钮的。例如,我现在在这里发现了这个按钮,但我不确定它是否足够安全。我必须检查货币code将不会被用户更改。这是不安全的未加密方式!但它会工作,我尝试了它。我希望允许用户键入金额,但最好是