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

43 paypal

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

尽管paypal在成功支付后立即回复,但我从来没有能够立即更新用户的帐户,因为我无法将其发送回某些信息,以确定刚完成付款的用户.当你被送回发送交易ID的网站时,我只能这样做,我用回发后记录.它搜索它,并在DB中找到它时授予权限.

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

dsp*_*nov 34

Iten_number隐藏变量在我的应用程序中不起作用.但我发现custom隐藏的领域工作得很好.只需将此字段添加到由paypal生成的表单中:<input type="hidden" name="custom" value="YOUR VALUE FROM DB"/>.之后,您可以读取此值以识别,例如,已购买的产品.(Java代码):String custom = request.getParameter("custom");

  • 最佳答案!在PHP中,您可以使用ipn脚本中的`$ _POST ['custom']`轻松读取此字段. (3认同)

T.J*_*der 27

是的,如果您发送item_number,IPN通知将在其发回给您时包含该通知.我在用户启动付款流程时在数据库中记录一个唯一的ID,并在将它们发送到PayPal时包含该ID.当IPN进入时,该唯一ID与数据库中的记录匹配,为我提供了所需的所有信息.

编辑重新评论:

我希望在上面链接的网站上有一个代码示例,但基本上在我的情况下,我使用的是一个表格,我发布到https://www.paypal.com/cgi-bin/webscr.在该表格中,IPN内容中记录了各种隐藏字段(cmd要执行的命令,business指定您的业务ID,item_namePayPal UI中的良好描述,item_number上面提到的项目编号等等).当IPN回复到您的IPN地址时,它包含各种字段(例如payment_status - 一种重要的字体!&mdash以及item_number您在发布给他们时输入的内容).

  • 我认为item_number不适合这种用途.item_number必须是product数据库的内部id,不应修改.要传回值,您可以使用可选字段on0,on1 ...并在IPN中获取它们的值. (3认同)

jum*_*art 18

只是为了补充这个老问题......

有一些选项参数通常用于通过paypal发送自定义数据.

自定义字段名称的这些选项标签为on0,on1on2,自定义字段值为os0,os1os2.

我会发送on0值为"UserID",os0发送实际ID.

这些值将在IPN中表示如下:

os0表示为option_selection1

os1表示为option_selection2

os2表示为option_selection3

on0表示为option_name1

on1表示为option_name2

on2表示为option_name3

这是有关PayPal HTML参数的信息


lor*_*isi 7

根据PayPal付款标准的HTML变量,您可以发送所有"传递"变量:

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 }}">
Run Code Online (Sandbox Code Playgroud)

从技术上讲,如果要处理更多数据,"自定义"字段可以是JSON编码的字符串

myItemObject = {
   "customerEmail" : "john@doe.com
   "customerID: "AAFF324"
}
jsonInfo = json.dumps( myItemObject )
return render_template(tmpl_name, jsonInfo=jsonInfo, productID=productID, invoiceID=invoiceID)
Run Code Online (Sandbox Code Playgroud)


小智 6

我终于得到了这个答案,我希望与大家分享一下:

在您的HTML表单上放置此代码(这是Paypal沙箱):

form action="https://www.sandbox.paypal.com/cgi-bin/webscr?custom=YOUR_VAR" method="post"
Run Code Online (Sandbox Code Playgroud)

在Paypal重定向到您的页面成功后的PHP上:使用cmGET变量:

$example = $_GET["cm"];
Run Code Online (Sandbox Code Playgroud)