我一直在使用快速结帐API将我网站上的人员帐户转换为付款后的高级帐户。唯一的问题是它不会将用户发回网站,直到他们点击按钮返回,并在发生这种情况时更新他们的权限。大约40%的用户似乎没有这样做....所以他们的帐户永远不会在付款后得到记入。
虽然paypal在成功付款后立即回复,但我从来没有能够立即更新用户的帐户,因为我无法让它发回某些信息,这些信息会识别用户只是完成了付款。当你被送回发送交易ID的网站时,我只能这样做,我用回发后记录。它会搜索它,并在数据库中找到它时授予权限。
有没有办法向paypal提交某种变量,然后它会发回给我?像& user_id = 123这样的东西,可以非常方便地更新用户的权限。
答案 0 :(得分:33)
Iten_number
隐藏变量在我的应用程序中不起作用。但我发现custom
隐藏字段工作正常。只需将此字段添加到由paypal生成的表单:<input type="hidden" name="custom" value="YOUR VALUE FROM DB"/>
。之后,您可以读取此值以识别,例如,已购买的产品。 (Java代码):String custom = request.getParameter("custom");
答案 1 :(得分:27)
是的,如果您发送item_number
,则IPN notification会在其发回给您时包含该内容。我在用户启动付款流程时在数据库中记录一个唯一的ID,并在将它们发送到PayPal时包含该ID。当IPN进入时,该唯一ID与数据库中的记录匹配,为我提供了所需的所有信息。
修改重新评论:
我希望在上面链接的网站上有一个代码示例,但基本上在我的情况下我使用的是一个表格,我发布到https://www.paypal.com/cgi-bin/webscr。在该表单中,IPN内容中记录了各种隐藏字段(cmd
表示要执行的命令,business
表示您的业务ID,item_name
表示PayPal UI中的良好描述,{ {1}}对于我上面提到的项目编号等,等等。当IPN回复到您的IPN地址时,它会包含各种字段(例如item_number
- 一种重要的字段!&mdash以及您在发帖时输入的payment_status
。
答案 2 :(得分:18)
只是添加这个老问题......
有些选项参数通常用于通过PayPal发送自定义数据。
这些选项标记 on0 , on1 或 on2 表示自定义字段名称, os0 ,<自定义字段值的strong> os1 和 os2 。
我会发送 on0 ,其值为“UserID”, os0 为实际ID。
这些值将在IPN中表示如下:
os0 表示为 option_selection1
os1 表示为 option_selection2
os2 表示为 option_selection3
on0 表示为 option_name1
on1 表示为 option_name2
on2 表示为 option_name3
答案 3 :(得分:7)
根据HTML Variables for PayPal Payments Standard,您可以发送所有&#34;传递&#34;变量:
item_number 用于跟踪产品或服务的传递变量 购买或作出的贡献。您指定的值将被传递 付款完成后返回给您。如果您需要此变量 希望PayPal跟踪库存或跟踪物品的盈亏 按钮卖了。
自定义传递变量用于您自己的跟踪目的,买家看不到。默认 - 没有变量传回给您。
和
发票可用于识别此次购买的发票号的传递变量。默认 - 没有传递回变量 你。
所有这些传递变量都由IPN在付款响应信息中发回。
您只需在服务器端呈现HTML模板,然后将字段写回HTML代码中,如
<input type="hidden" name="item_number" value="{{ productID }}">
<input type="hidden" name="invoice_id" value="{{ invoiceID }}">
<input type="hidden" name="custom" value="{{ jsonInfo }}">
从技术上讲,该领域&#34; custom&#34;如果要处理更多数据,如
,则可以是JSON编码的字符串myItemObject = {
"customerEmail" : "john@doe.com
"customerID: "AAFF324"
}
jsonInfo = json.dumps( myItemObject )
return render_template(tmpl_name, jsonInfo=jsonInfo, productID=productID, invoiceID=invoiceID)
答案 4 :(得分:6)
我终于得到了这个答案,我希望与大家分享一下:
在您的HTML表单上放置此代码(这是Paypal沙箱):
form action="https://www.sandbox.paypal.com/cgi-bin/webscr?custom=YOUR_VAR" method="post"
在Paypal重定向到您的网页成功后的PHP上:使用cm
GET变量:
$example = $_GET["cm"];
答案 5 :(得分:4)
我希望this URL解决您的问题。因为它也解决了我的问题。将自定义变量添加到表单,然后在成功付款页面上检索它。
示例:
<input type='hidden' name='custom' value='<?php echo $email; ?>'/>
然后将其检索为:
$_POST['custom']
答案 6 :(得分:1)
2021 年对我有用的是在我的客户端应用中将“custom_id”(在“purchase_units”数组内)传递给 PayPal,并在我的后端检查“custom”。
是的,PayPal 似乎出于某种原因重命名了参数。
答案 7 :(得分:0)
<input type="hidden" name="on0" value="Ajay Gadhavana">
<input type="hidden" name="on1" value="my_phone_number">
<input type="hidden" name="on2" value="my_third_extra_field">
来自paypal的回复将是
[option_name1] => Ajay Gadhavana
[option_name1] => my_phone_number
[option_name1] => my_third_extra_field