我可以向PayPal发送变量,并在付款完成后将其发回给我吗?

时间:2010-05-17 06:45:19

标签: paypal

我一直在使用快速结帐API将我网站上的人员帐户转换为付款后的高级帐户。唯一的问题是它不会将用户发回网站,直到他们点击按钮返回,并在发生这种情况时更新他们的权限。大约40%的用户似乎没有这样做....所以他们的帐户永远不会在付款后得到记入。

虽然paypal在成功付款后立即回复,但我从来没有能够立即更新用户的帐户,因为我无法让它发回某些信息,这些信息会识别用户只是完成了付款。当你被送回发送交易ID的网站时,我只能这样做,我用回发后记录。它会搜索它,并在数据库中找到它时授予权限。

有没有办法向paypal提交某种变量,然后它会发回给我?像& user_id = 123这样的东西,可以非常方便地更新用户的权限。

8 个答案:

答案 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

Here's the info on PayPal's HTML parameters

答案 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