使用自定义按钮将价格变量传递给PayPal

Den*_*one 28 php paypal

我有一个表单和一个自定义PayPal按钮,但如何将价值/价格变量传递给PayPal?

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="ZEFZFYBY2SZB8">
    <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
    <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
Run Code Online (Sandbox Code Playgroud)

我有一个变量 $total = "238.00";

小智 25

之前的代码对我不起作用.经过深思熟虑之后我终于想通了你必须进入Pay​​Pal并在创建按钮代码的第2步确保你点击了unhosted按钮,然后复制未加密的按钮代码,这将给你这样的东西(我把我的空白安全的商业价值):

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="XXX">
    <input type="hidden" name="lc" value="CA">
    <input type="hidden" name="item_name" value="Tangled Roots">
    <input type="hidden" name="button_subtype" value="services">
    <input type="hidden" name="no_note" value="0">
    <input type="hidden" name="cn" value="Add special instructions to the seller">
    <input type="hidden" name="no_shipping" value="2">
    <input name="amount" value="16.99">
    <input type="hidden" name="currency_code" value="CAD">
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted">
    <input type="image" src="https://www.paypalobjects.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.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
Run Code Online (Sandbox Code Playgroud)

此代码创建一个按钮,用户可以在其中输入金额,默认情况下从16.99开始,但您可以轻松地将其替换为PHP变量.

  • 这不应被视为op的问题的答案.OP有一个托管按钮,可以避免客户端的任何表单数据被篡改.如果您只是添加表单并且不执行任何服务器端验证,则用户可以根据需要编辑产品的实际值.即使你隐藏了字段,它仍然不够好,因为你可以使用inspect元素编辑值并提交.我很乐意在这篇文章中投票. (5认同)
  • 如果添加type ="hidden"到金额更好:) (3认同)

Sha*_*ngh 14

为金额添加一个隐藏字段

<input type="hidden" name="amount" value="<?php echo $total; ?>">
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于托管按钮. (7认同)
  • @ x-yuri我尝试过托管和非托管按钮,两者似乎都不适合我.我的问题:http://stackoverflow.com/questions/40210676/not-able-to-specify-amount-per-payment-request-on-paypal-htmlbutton (2认同)
  • @HarkályGergő抱歉,我才注意到你的问题.我现在还没有处理过PayPal,但我相信原因是因为所有托管按钮的数据(如价格)应该存储在paypal上.无法从表单中更改它们.如果你想要一个价格不同的按钮,你应该使用非托管按钮.也就是说,没有任何东西存储在paypal中,你指定了表单中的所有参数. (2认同)

Ian*_*van 13

我尝试过以上所有的失败.我发现这是PayPal网站的答案.

<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="me@mybusiness.com">
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="item_name" value="Teddy Bear">
    <input type="hidden" name="amount" value="12.99">
    <input type="image" src="http://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif"         border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>
Run Code Online (Sandbox Code Playgroud)

测试这个,你就会明白它是如何工作的......将业务改为你要支付的人的电子邮件地址等.


Phi*_*ins 5

这是2013版本:转到创建按钮,当您转到步骤2时,取消选中该框,继续执行步骤3,然后创建按钮.获得代码后,它将如下所示:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="XXXXXXXX">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="Payments">
<input type="hidden" name="amount" value="100.00">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="cn" value="Add special instructions to the seller:">
<input type="hidden" name="no_shipping" value="2">
<input type="hidden" name="rm" value="1">
<input type="hidden" name="return" value="http://YOURSITE.com/">
<input type="hidden" name="cancel_return"     value="http://YOURSITE.com/payments.html">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest">
<input type="image" src="https://www.paypalobjects.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.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
Run Code Online (Sandbox Code Playgroud)

您的"商家"价值不会是XXXXXXXX,因此请务必留下Paypal为您提供的价值.您还可以设置取消和返回URL.

对于更高级的PHP用户:我实际上设置了一个PHP字符串,它工作得很好!例如,见下文:

 https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&businesss=XXXXXXXXX&lc=US&item_name=$mydescription&amount=$myprice&........
Run Code Online (Sandbox Code Playgroud)

等等......正如你所看到的,$ mydescription是一个PHP变量,$ myprice是一个PHP变量.我所做的是设置一个HTML表单来收集数据并将该表单用作付款处理表单.一旦用户点击提交,我就会将其转到PHP页面,用作邮件程序,数据库插入,自动回复,最后是Header重定向.重定向的URL是Paypal URL,字符串中包含变量!这个帖子实际上帮助我找到了正确的Paypal按钮代码,这样字符串就可以在价格变化时正常工作!仅供参考 - 如果您是初学PHP用户,则不会在字符串中使用图像字段.只有URL,然后是隐藏的名称和值.

  • 我认为现在不行.Paypal似乎阻止任何客户端在立即购买按钮中更改预设付款金额..至少我无法让它工作. (3认同)