PayPal Adaptive Payment Api 预填充用户数据
Posted
技术标签:
【中文标题】PayPal Adaptive Payment Api 预填充用户数据【英文标题】:PayPal Adaptive Payment Api pre-populate user data 【发布时间】:2012-08-08 01:07:43 【问题描述】:我正在创建一个网站,我们将在其中举办活动,并希望用户“USER A”能够开始活动 - 输入他们的贝宝帐户信息并设置价格。然后其他用户可以注册他们的活动并直接向用户 A 付款,而无需我们处理他们的信用卡。我们希望没有贝宝帐户的用户能够使用信用卡付款。
看起来 Paypal 的自适应支付是我们用来完成此任务的最佳 API。我让它在沙盒环境中工作。我的问题是——用户点击注册用户 A 的活动,然后他们输入所有信息(姓名、地址、公司等),我们需要将此信息保存在我们的数据库中,因此需要先完成此操作。然后他们会点击一个按钮,上面写着“Paypal 支付”。这会创建一个 paykey 并将用户重定向到 Paypal 登录页面,用户有 2 个选项(a. 登录 paypal 或 b. 再次输入个人信息和信用卡信息)
我想知道如何在 Paypal 页面中填写所有字段,这样用户就不必再次输入所有信息。如果帐单地址恰好不同,他们将能够删除文本框中的数据。但是我见过的所有网站,如果它们相同,则不会让用户输入此信息两次。现在我知道这是可能的,因为我已经看到其他网站这样做了。我已经研究过 SetPaymentOptions API,但不是很清楚它是如何工作的,我需要传递用户信息,即使 Paypal 还不知道这些信息。
我尝试按照这样的 Paypal 教程中的建议添加值
<INPUT TYPE="hidden" NAME="first_name" VALUE="John">
<INPUT TYPE="hidden" NAME="last_name" VALUE="Doe">
<INPUT TYPE="hidden" NAME="address1" VALUE="9 Elm Street">
但这不起作用,这是来自 Fiddler 请求的原始数据:
POST https://svcs.sandbox.paypal.com/AdaptivePayments/Pay HTTP/1.1
Content-Type: text/xml;charset=utf-8
X-PAYPAL-SECURITY-USERID: scotts_XXXXXXXXX_biz_api1.live.com
X-PAYPAL-SECURITY-PASSWORD: 1344XXXXX
X-PAYPAL-SECURITY-SIGNATURE: AOLbPDojAEUdeQJ3wXagJXkxYeJDARg4IXXXXXXXXXXXXXXXXXXX
X-PAYPAL-SERVICE-VERSION: 1.1.0
X-PAYPAL-APPLICATION-ID: APP-80W2844XXXXXXXXX
X-PAYPAL-REQUEST-DATA-FORMAT: XML
X-PAYPAL-RESPONSE-DATA-FORMAT: XML
Host: svcs.sandbox.paypal.com
Content-Length: 810
Expect: 100-continue
Connection: Keep-Alive
【问题讨论】:
我一直在研究这个问题,可能有一个想法,但是我想知道您采用了哪种方法,以便我可以正确构建一个(可能的)答案。你是按照这里提到的***.com/questions/2849314/… 做的,还是使用了xadaptivepayments.codeplex.com 之类的库或完全不同的库?是否有机会发布您向贝宝提出请求的代码以及任何支持方法? 我在你有链接的问题中采用了方法,codeplex 库不会是一个选项,因为他们的 dll 文件没有源代码,并且使用的是未编写的 dll由我们,并且不包含源将不允许我们保持 pci 兼容,我将发布来自 fiddler 的示例请求 【参考方案1】:我认为对您而言,问题实际上不是在弹出窗口中登录贝宝,而是贝宝注册过程能够使用信用卡付款。自适应支付 api 中有一个 api 调用,允许您代表用户处理注册。
您可以使用自己的设计直接在页面上预先填写贝宝信息。提交时,您使用自适应支付 API 创建一个贝宝帐户,此过程的最后一步需要您打开一个贝宝弹出窗口,要求用户通过添加密码和信用卡信息来完成注册。
在此之后,您会发现与使用简单的 paypal 登录时相同的付款行为。
请注意,要通过贝宝进一步整合您的所有网站,您可以添加预先批准,然后用户只会看到一次贝宝网站:当他接受预先批准时(在轻量贝宝弹出窗口中的两个步骤:登录>接受)。
当用户第一次结账时:
-
在创建帐户(使用我上面解释的方式)或使用 paypal 付款之间进行选择
创建一个preapproval key(见api上的doc,不需要知道用户paypal登录),作为returnUrl,指定一个带有本地user_id的url
使用上一步返回的 url 打开一个 paypal 弹出客户端。用户将需要使用他的贝宝帐户登录,然后接受您预先批准的特征(时间限制,资金限制)
paypal会重定向到step2的returnUrl,可以是一个页面,当你说“这个窗口会自动关闭”,用js关闭页面
您现在可以使用预批准密钥代表用户付款
当用户第一次结帐后:
-
要求确认“$XX 将在您链接的贝宝上收取
帐户”
使用预批准密钥付款,大功告成!
希望对您有所帮助!
【讨论】:
【参考方案2】:来自 PayPal 的官方回应:
“自适应付款在文档中没有执行此操作的任何功能。对于由此可能造成的不便,我深表歉意。”
我会留下这个问题,但万一有人有更好的路线让我去完成我在问题中解释的内容。
编辑:
如果其他人遇到这种情况,这实际上是 100% 不可能的 - 我最终使用了 Express Payment API,使用它很容易传递用户参数。
【讨论】:
【参考方案3】:不要使用自适应支付 API
自适应付款已于 2017 年 1 月 12 日停止,PayPal Marketplace 等同于自适应付款。
您可以在 PayPal 开发者门户网站上了解有关 Marketplaces 产品的更多信息:https://developer.paypal.com/docs/marketplaces/pp4mp/?mark=marketplaces
【讨论】:
【参考方案4】:您好,我认为以下链接会对您有所帮助
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_APIntro
【讨论】:
以上是关于PayPal Adaptive Payment Api 预填充用户数据的主要内容,如果未能解决你的问题,请参考以下文章
paypal Adaptive Payment-您无权限制资金来源
PayPal Adaptive Payment API,多个接收者,哪个 apiUsername/apiPassword/apiSignature?
通过 Adaptive Payment API 进行的简单付款需要多长时间才能发送?