无法在 PayPal HTMLButton 上为每个付款请求指定“金额”
Posted
技术标签:
【中文标题】无法在 PayPal HTMLButton 上为每个付款请求指定“金额”【英文标题】:Not able to specify "amount" per payment request on PayPal HTMLButton 【发布时间】:2017-03-05 18:34:15 【问题描述】:我正在尝试使用“html 按钮”方法与 PayPal 集成。 结帐流程相当简单, 用户点击“立即购买” -> 转移到 PayPal -> 付款已处理 -> 返回网站。
根据客户想要“立即购买”的商品,提交表格中的“金额”会有所不同,我无法让 PayPal 接受我发送的金额。当重定向到 PayPal 时,我总是看到一个为空的文本输入。
我尝试了托管和非托管按钮,但仍然无法看到所需的效果。
托管按钮 HTML 示例:
<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="HOSTEDBTNVALUE">
<input type="image" src="https://www.sandbox.paypal.com/en_GB/SG/i/btn/btn_buynowCC_LG.gif" name="submit" style="border: 0;">
<img src="https://www.sandbox.paypal.com/en_GB/i/scr/pixel.gif" style="border: 0; width: 1; height: 1;">
<input type="text" readonly="true" name="item_name" value="Test PayPal integration payment">
<div class="form-group" id="amount_field">
<label class="control-label col-md-2" for="amount">Amount</label>
<div class="col-md-5">
<input type="text" id="amount" name="amount" value="100" aria-describedby="amount_info_0" class="form-control"><span id="amount_info_0" class="help-block">Real</span></div>
</div>
<div class="form-group" id="txnRef_field">
<label class="control-label col-md-2" for="txnRef">Transaction Ref</label>
<div class="col-md-5">
<input type="text" id="txnRef" name="txnRef" value="8d724ad470af4d9d91d49f84068c4bab" aria-describedby="txnRef_info_0" class="form-control"><span id="txnRef_info_0" class="help-block">Required</span></div>
</div>
<input type="hidden" name="currency_code" value="SGD">
</form>
上面的“金额”目前是一个文本输入,因为这是我的集成测试页面,在实际应用中它将是嵌入在表单中的隐藏/只读输入。
这里是非托管按钮示例代码:
<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="encrypted" value="-----BEGIN PKCS7-----ReallyLongKey-----END PKCS7-----">
<input type="image" src="https://www.sandbox.paypal.com/en_GB/SG/i/btn/btn_buynowCC_LG.gif" name="submit" style="border: 0;"><img src="https://www.sandbox.paypal.com/en_GB/i/scr/pixel.gif" style="border: 0; width: 1; height: 1;">
<input type="hidden" name="notify_url" value="https://myapplication.com/transaction/paypal/status">
<input type="hidden" name="currency_code" value="SGD">
<input type="hidden" name="custom" value="ad4a63e2f2f04b908ddb8e7c67f9c67a">
<input type="text" readonly="true" name="item_name" value="Test PayPal integration payment">
<div class="form-group" id="amount_field">
<label class="control-label col-md-2" for="amount">Amount</label>
<div class="col-md-5">
<input type="text" id="amount" name="amount" value="100" aria-describedby="amount_info_0" class="form-control"><span id="amount_info_0" class="help-block">Real</span></div>
</div>
<div class="form-group" id="txnRef_field">
<label class="control-label col-md-2" for="txnRef">Transaction Ref</label>
<div class="col-md-5">
<input type="text" id="txnRef" name="txnRef" value="ad4a63e2f2f04b908ddb8e7c67f9c67a" aria-describedby="txnRef_info_0" class="form-control"><span id="txnRef_info_0" class="help-block">Required</span></div>
</div>
</form>
我在下面有应用程序页面的屏幕截图以及我在 PayPal 支付页面上看到的结果。请原谅缺乏对齐和样式。这意味着在它变得漂亮之前是一个概念证明。
我的应用程序集成测试页面
paypal 页面,其中金额预计将根据我的请求进行固定且不可编辑。
不知道我在这里做错了什么。请帮忙。
谢谢。
【问题讨论】:
如果某些东西不起作用,我建议您尝试最简单的代码。另外,请务必了解每个参数 means 的含义。此外,请尝试the following code。如果它不适合您,请提供 paypal 使用默认设置生成的代码(创建按钮时)。应该没有hosted_button_id
参数。
就像我在另一个问题中所说的那样,使用托管按钮时,您不能覆盖表单中的价格等内容。价格在贝宝上“托管”。据我所知。
@x-yuri 感谢您的反馈。我可以通过使用以下设置让 PayPal 生成按钮来实现它: 1. 商家帐户 ID:使用我的主电子邮件地址 [未使用安全的商家帐户 ID] 2. 取消选中“在 PayPal 上保存按钮”复选框。另外,在html按钮生成界面中,我点击了链接“删除代码保护”,使“cmd”值从“_s-xclick”变为“_xclick”,我使用的选项有什么问题吗?
我不是贝宝专家,我已经有一段时间没有处理它了,我现在只能访问贝宝个人帐户。话虽如此,我认为您选择的设置没有任何问题。据我所知,所有这些设置都与隐藏您传递给贝宝的内容有关。隐藏电子邮件、托管按钮和加密(代码保护)的商家 ID 是隐藏所有要传递到贝宝的数据...
...但是由于安全问题经常发生,您永远不知道可以用来对付您的东西。所以如果很容易做到,为什么不采取一些额外的步骤呢? IIRC,您可以在您身边加密表单数据,无需为此使用托管按钮。至于托管按钮,如果它只是一个或几个带有静态数据的按钮,那么托管它们是有意义的。如果不是,那么它很可能是一个拖累,如果可能的话,所以切换到非托管按钮是有意义的。但这一切都取决于您正在开发的项目。想一想万一出现问题的后果。
【参考方案1】:
我可以通过使用以下设置让 PayPal 生成按钮来实现它:
1.Merchant account IDs: Use my primary email address
[未使用安全商户账号]
2. 取消选中save button at PayPal
复选框。另外,在html按钮生成界面,我点击链接remove code protection
,使cmd
的值从_s-xclick
变为_xclick
【讨论】:
以上是关于无法在 PayPal HTMLButton 上为每个付款请求指定“金额”的主要内容,如果未能解决你的问题,请参考以下文章
您如何在 iPhone 上为 PayPal 的电话 SDK 保护您的 PayPal 应用程序 ID?