面向 C# ASP.NET 开发人员的PayPal简介

分享于 

38分钟阅读

Web开发

  繁體

索引

警告,2017更新

这篇文章我写了大约 8年前。 要注意很多事情已经改变了。 虽然在大多数情况下,集成仍然可以工作,但PayPal技术和开发支持在最近几年一直在稳步。 最重要的是- 贝宝客户支持现在比以前更糟糕。 PayPal的问题基本上是你的资金可以在任何时候冻结,没有任何坚实的原因。 当这种情况发生时,没有人可以与。 我个人在几个项目上经历了这种情况,这些项目的资金,合法的创新,我建议。

几年前,( 2012之前) 至少可以与决策制造商交谈,并使用公共意义获取帐户解锁。 现在看来大多数智能人员离开贝贝,当你收到帐户时,没人会花时间与你公开谈话。 以下是很少有记录的恐怖故事,它的中人们有大量的资金阻塞,因为大多数奇怪的原因:

现在我是为保护自己的公司。 如果贝贝处理信用卡在你的网站上购买,突然交通会收到,他们会暴露在。 如果人们开始请求退款,他们就需要选择退款。 如果你从贝宝取款到银行,不会 cooparate - 它们是 vurnerable。

但我不知道das操作团队如何从这里跳到我们完全关闭你的帐户- 处理它。 我的意思是他们基本上将死亡sentances签名给。 如果公司在账户上定期付款? 如果公司需要向客户发放退款,该怎么办? 如果你使用PayPal不仅是为了接受付款,还是为了发送资金和支付承包商?

现在,对于每个客户我都要求他们签署免费,如果他们需要我进行贝宝集成。 我强烈建议你做同样的事。 如果你对这个话题有任何疑问,欢迎留言,我会尽力帮助你。

开始使用贝宝

我希望能够进入 PayPal,并愿意推出一些 buck,我将推荐电子商务 这是我最终理解 behind PayPal集成的概念的方式。 对于那些不愿意付费的人,不要担心,这就是本文的原因。 我将浏览书籍封面的大部分内容,但以更简洁简洁的方式。

首先和最重要的- 了解什么类型的集成贝宝提供是最重要的事情,以成功开发你的开发旅程。 我也是一个常见的错误,就是从,和,开始。 我的意思是自然- 我们是开发人员,当他们告诉我们集成的时候,首先是 SDK & api。 PayPal的结果是。 我们对自己说"就是这样"。 开始工作。问题是- 大多数支付场景可以用简单的方法处理。

下面,我们将对PayPal集成进行分类:

  • 网站支付标准( HTML )
  • Postpayment处理
    • AutoReturn
    • 付款数据传送( PDT )
    • 即时付款通知( IPN )
  • PayPal API
    • 快速付款
    • 直接付款( 网站付款专业版)
  • Payflow网关

分类中的项目也按照我建议的方式进行排序。 所以,如果你是贝宝- 先学习所有的选项,你的网站付款标准( HTML )。 然后,如果你需要添加一些基本的付款处理,看看自动返回或者。是否会解决你的问题。 如果没有,IPN是一个更健壮的选择你可以在你的处置。

下一层将涉及PayPal和实现快速结账,这是最灵活的贝宝集成解决方案。 最后,如果你长期能够直接处理你的网站信用卡,你将支付每月费用,并实现直接付款( 有效地获取所谓的网站付款方式)。

我们分类的最后一个项目,Payflow网关,另一方面是不同的野兽。 它并没有按照以前提到的技术进行"更新堆栈"。 这是一个针对那些拥有/想要互联网商户帐户( IMA )的企业的解决方案,只需要支付网关。 为了保持文章一致,我将跳过Payflow网关的细节。 但是,如果你有任何与它相关的问题,请在评论部分留言,我将尽量回答。

也就是说,我们来设置一个测试贝宝帐户,然后我们将深入研究一下所提到的集成。

设置测试帐户

通知- 即使你已经拥有了一个现实贝宝帐户,你也需要遵循这里步骤。 使用测试帐户有以下两个原因:

  • 你不想测试和玩真正的钱
  • 你希望能够访问不同类型的贝宝帐户。
    • 个人帐户- 大多数人拥有这些;只有一个帐户允许你在网上付款时使用贝宝。 从理论上说,你可以使用个人账户接受钱;只知道你将受到严重限制- 每月有 $500个接收限制,你只能接受网站支付标准( HTML )的一次支付。 个人账户的最大优点是,你不需要付费的任何交易费用。 注意,如果一个月收到超过 $500个,则提示你升级到主/业务帐户或者拒绝付款。
    • 主帐户- 从个人帐户上升,为任何想要在线业务运行的人员。 这种类型的帐户拥有所有的集成选项(。接受信用卡,定期付款,PayPal API )。 然而,多数人直接从个人帐户跳到商业帐户,因为在缺少报告。多用户访问以及业务帐户的其他高级商户服务的情况下,客户帐户具有相同的交易费用。
    • 业务帐户- 它有一些主要帐户的特性加上一些( 在你的NAME 业务下操作能力是其中之一)。 如果你在开发一个需要在 99%年中接受付款的网站,你将采用这种类型的帐户。

首先,访问PayPal沙箱并注册一个新帐户。 这个过程很简单,大多数开发人员都应该没有问题。 但是,下面是一些可以帮助你在流程中导航的图片:

Signing up for sandbox account

注册沙箱帐户

Filling in details of your sandbox account

填写沙箱帐户的详细信息

一旦完成了沙箱帐户的详细信息,你需要检查你提供的电子邮件以完成注册。 然后,你将能够登录并开始创建沙箱贝宝帐户。 单击 Test测试帐户 ( 左边的菜单),然后创建帐户: 预先配置的将得到如下图片上的表单:

Creating a Sandbox Test Account

创建沙箱测试帐户

说明帐户类型单选按钮: 通过选择买家,你将创建个人帐户,并通过选择卖家,你将创建一个业务帐户。 为了测试大多数集成场景,你需要两个帐户,所以一定要创建它们。 在你点击测试帐户之后,你应该在屏幕上最终拥有的内容如下:

Overview of your testing accounts

你的测试帐户概述

检查 List 旁边的单选按钮,并点击in站点,将使你能够登录和管理你的帐户。 唯一的区别是你会有一个巨大的PayPal沙箱 header 和文本,显示你的开发者帐户的电子邮件地址。 要查看我讨论的内容,请查看下面的图片:

Administering PayPal Sandbox account

管理PayPal沙箱帐户

但是,为了使用你的沙箱帐户进行测试,你需要使用你的帐户登录。 如果你没有登录,并且你遵循一些付款链接,你将获得以下屏幕:

Login to use the PayPal Sandbox features

登录以使用PayPal沙箱功能

网站支付标准( HTML )

在本节中,我将为你提供一些示例,这些示例将展示如何创建你自己的HTML表单以获取金钱。 你将看到如何使用不同的变量来影响付款详细信息。 在研究详细信息之前,让我们看看两个最基本的变量:

  • 在大多数情况下,表单属性的action 应该是 https://www.paypal.com/cgi-bin/webscr。 如果你使用沙盒来测试付款,你将将它的更改为 https://www. 沙箱。 实际上,你只需将 sandbox字插入到URL服务器中即可。 对于即将举行的示例,我不会使用沙盒 URL,因为大多数你只能获得"。登录以使用PayPal沙箱功能"屏幕( 查找图像)。
  • 我将使用c - 大多数示例,如果你复制代码,你会想用你的PayPal帐户的电子邮件来替换这个代码。

基本付款

好吧,假设你有一个开放的贝宝账户,你只希望能够接受你在你的网站上销售的$10款。 只需将以下HTML插入页面,你就可以设置为:

<formaction="https://www.paypal.com/cgi-bin/webscr"method="post"><inputtype="hidden"name="cmd"value="_xclick"/><inputtype="hidden"name="business"value="youremailaddress@yourdomain.com"/><inputtype="hidden"name="item_name"value="My painting"/><inputtype="hidden"name="amount"value="10.00"/> 
 <inputtype="submit"value="Buy!"/></form>

配送&处理

接下来要注意的是,你将希望在你的表单中添加运输和/或者处理费用。 很简单- 只需添加更多参数:

<formaction="https://www.paypal.com/cgi-bin/webscr"method="post"><inputtype="hidden"name="cmd"value="_xclick"/><inputtype="hidden"name="business"value="youremailaddress@yourdomain.com"/><inputtype="hidden"name="item_name"value="My painting"/><inputtype="hidden"name="amount"value="10.00"/><inputtype="hidden"name="shipping"value="3.00"/> 
 <inputtype="hidden"name="handling"value="2.00"/><inputtype="submit"value="Buy with additional parameters!"/></form>

捐赠&文本链接

如果你不销售任何东西,只是接受一些原因捐赠- 你只需要改变 cmd 变量的值,以 _donations。 如果我们与一个通用需求结合使用超链接而不是按钮- 我们得到以下 URL ( 当然,你可以将这里URL创建方法用于其他贝宝支付类型):

  • https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=youremailaddress@yourdomain.com&item_name=Save polar 熊& amount=10.00 !
结果:

购物车系统

如果你有一系列不同的产品,你只需要一个简单的车系统,而不需要实现任何东西。 基本上,你只需使用 cmd 变量,同时保持它的余的表单与基本付款相同。 让我们看看这两种产品是怎样做的,一个价格在 $10,没有运费,一个价格为 $5,运费为 $1. 我们还需要一个查看购物车按钮:

My Cart Item 1:<formaction="https://www.paypal.com/cgi-bin/webscr"method="post"target="paypal"><inputtype="hidden"name="cmd"value="_cart"><inputtype="hidden"name="add"value="1"><inputtype="hidden"name="business"value="youremailaddress@yourdomain.com"><inputtype="hidden"name="item_name"value="My Cart Item 1"><inputtype="hidden"name="amount"value="10.00"><inputtype="hidden"name="shopping_url"value="http://www.yourwebsite.com/shoppingpage.html"><inputtype="hidden"name="return"value="http://www.yourwebsite.com/success.html"><inputtype="hidden"name="cancel_return"value="http://www.yourwebsite.com/cancel.html"><inputtype="hidden"name="bn"value="PP-ShopCartBF:x-click-but22.gif:NonHosted"><inputtype="image"src="https://www.paypal.com/en_US/i/btn/x-click-but22.gif"border="0"name="submit"alt="Make payments with PayPal - it's fast, free and secure!"><imgalt=""border="0"src="https://www.paypal.com/en_US/i/scr/pixel.gif"width="1"height="1"></form>My Cart Item 2:<formaction="https://www.paypal.com/cgi-bin/webscr"method="post"target="paypal"><inputtype="hidden"name="cmd"value="_cart"><inputtype="hidden"name="add"value="1"><inputtype="hidden"name="business"value="youremailaddress@yourdomain.com"><inputtype="hidden"name="item_name"value="My Cart Item 2"><inputtype="hidden"name="amount"value="5.00"><inputtype="hidden"name="shipping"value="1.00"><inputtype="hidden"name="shopping_url"value="http://www.yourwebsite.com/shoppingpage.html"><inputtype="hidden"name="return"value="http://www.yourwebsite.com/success.html"><inputtype="hidden"name="cancel_return"value="http://www.yourwebsite.com/cancel.html"><inputtype="hidden"name="bn"value="PP-ShopCartBF:x-click-but22.gif:NonHosted"><inputtype="image"src="https://www.paypal.com/en_US/i/btn/x-click-but22.gif"border="0"name="submit"alt="Make payments with PayPal - it's fast, free and secure!"><imgalt=""border="0"src="https://www.paypal.com/en_US/i/scr/pixel.gif"width="1"height="1"></form>View Cart:<formaction="https://www.paypal.com/cgi-bin/webscr"method="post"target="paypal"><inputtype="hidden"name="cmd"value="_cart"><inputtype="hidden"name="display"value="1"><inputtype="hidden"name="business"value="youremailaddress@yourdomain.com"><inputtype="hidden"name="shopping_url"value="http://www.yourwebsite.com/shoppingpage.html"><inputtype="image"src="https://www.paypal.com/en_US/i/btn/view_cart_02.gif"name="submit"alt="Make payments with PayPal - it's fast, free and secure!"></form>

定期付款

如果你销售月份服务而不是产品,你会感兴趣的是贝宝提供的付款选项。 同样,它使用不同含义的不同变量。 假设你希望设置一个免费试用期,用户每月必须支付才能继续使用服务。 下面的HTML表单应该执行以下操作:

<formaction="https://www.paypal.com/cgi-bin/webscr"method="post"><inputtype="hidden"name="cmd"value="_xclick-subscriptions"/> 
 <inputtype="hidden"name="business"value="youremailaddress@yourdomain.com"/> 
 <inputtype="hidden"name="item_name"value="Something"/> 
 <inputtype="submit"value="Subscribe!"/> 
 <inputtype="hidden"name="a1"value="0"/> 
 <inputtype="hidden"name="p1"value="3"/> 
 <inputtype="hidden"name="t1"value="D"/> 
 <inputtype="hidden"name="a3"value="10.00"/> 
 <inputtype="hidden"name="p3"value="1"/> 
 <inputtype="hidden"name="t3"value="M"/> 
 <inputtype="hidden"name="src"value="1"/> 
 <inputtype="hidden"name="srt"value="0"/> 
 <inputtype="hidden"name="sra"value="1"/></form>

HTML变量&资源

在阅读前面的示例之后,你可能想知道某些变量是做什么的( a1? 很幸运,贝宝提供了一个"用于网站支付标准的变量。"页面,你可以阅读你感兴趣的任何变量。

另外,另一个优秀的资源( 我希望有人指点我,当我第一次开始使用聚丙烯集成时) 是" PayPal的滑雪者示例。"。 你可以找到几乎所有的支付场景的例子,而不是使用更多的例子。

PostPayment处理

当你设置你的ruby HTML表单时,你可能会问的第一个问题是- 用户付费后,我可以提供一些? 我们可以想象- 从发送简单的"感谢你"电子邮件,并允许用户访问受限资源。 根据你的知识和所需的鲁棒性水平,可以进行三种方式,你可以组合它们。

AutoReturn

在用户支付后,他是最简单的PostPayment处理解决方案。在用户支付后,他将重定向到你的网站上的指定页面,你可以在该页面上显示某些确认文本。 仔细浏览"网站支付标准的HTML变量",你知道可以使用的返回变量在HTML表单中指定 AutoReturn URL。 如果你希望有默认的AutoReturn URL,请按以下步骤操作:

  • 登录到你的主要或者业务帐户
  • 单击配置文件子标签
  • 点击 Selling Preferences中的网站付款偏好设置
  • 单击自动返回标签旁边的单选按钮
  • 输入你希望用户在标签为返回URL的文本框中返回的URL
  • 单击页面底部的保存按钮

Providing AutoRetremoved removed in your PayPal profile

在你的PayPal配置文件中提供 AutoReturl URL

要知道在你的配置文件中有 AutoReturn URL并且在HTML表单中提供了一个的返回变量,的返回变量将覆盖配置文件的URL值。

现在,当返回页面被击中时,你将获得允许你自定义页面显示和日志支付的变量:

  • tx - 事务 ID
  • st - 付款状态
  • amt - 付款金额
  • cc - 货币代码

在关闭这一节之前,还有。 我在第一句中把这个单词"自动"斜体斜体的原因是: 如果用户使用信用卡付款,他将不会自动重定向到你的返回 URL ;他希望单击"返回商家"按钮。 知道这听起来很奇怪,因为你知道你不是单独但是,由于法律问题,PayPal拒绝了信用卡支付的方式,而且还拒绝了信用卡支付。

付款数据传输( PDT )

查看AutoReturn提供的变量列表后,你可能想知道- 我可以获得关于所发生事务的更多细节? 这正是PDT在AutoReturn功能上的飞跃。 因这里,你需要在你的配置文件中启用 AutoReturn,然后在你的配置文件中进行调用:

  • 登录到你的主要或者业务帐户
  • 单击配置文件子选项卡
  • 点击 Selling Preferences中的Website付款首选项"
  • 单击自动返回标签旁边的单选按钮
  • 输入脚本的URL,该脚本将处理从PayPal发送的PDT请求
  • 在Payment数据传输,单击radio单选button按钮
  • 单击 save。

执行这些步骤之后,你应该得到一个用于查询PayPal所需的PDT身份。 如果在单击保存后不复制粘贴标记,请了解你可以在网站付款首选项中看到它:

Payment Data Transfer and Identity Token

付款数据传输和标识令牌

现在你已经有了标识令牌,你可以在返回URL之后查询shell以获得更多详细信息。 以下是使用PDT时的流程:

SUCCESS
first_name=Firstname
last_name=Lastname
payment_status=Completed
payer_email=firstname%40lastname.com
payment_gross=50.00
mc_currency=USD
custom=Custom+value+you+passed+with+your+HTML+form
etc.
  • 用户支付并被重定向到你的AutoReturn页面,例如: http://www.yourdomain.com/Thanks.aspx?tx=[TransactionID]。
  • 根据 Thanks.aspx的代码,你将解析 tx 值并将一个 HTTP POST 设置为 https://www.paypal.com/cgi-bin/webscr,其中包括以下参数: 你可以使用沙盒( 当然,你会把一个 HTTP POST 设为 。
  • PayPal将按以下格式对你的HTTP POST 作出响应:
  • 用数据做你想做的。

下面是 C# 代码中前面几行中所说的内容:

protectedvoid Page_Load(object sender, EventArgs e)
{
 if (!Page.IsPostBack)
 {
 authToken = WebConfigurationManager.AppSettings["PDTToken"];
 //read in txn token from querystring txToken = Request.QueryString.Get("tx");
 query = string.Format("cmd=_notify-synch&tx={0}&at={1}", 
 txToken, authToken);
 // Create the request backstring url = WebConfigurationManager.AppSettings["PayPalSubmitUrl"];
 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
 // Set values for the request back req.Method = "POST";
 req.ContentType = "application/x-www-form-urlencoded";
 req.ContentLength = query.Length;
 // Write the request back IPN strings StreamWriter stOut = new StreamWriter(req.GetRequestStream(), 
 System.Text.Encoding.ASCII);
 stOut.Write(query);
 stOut.Close();
 // Do the request to PayPal and get the response StreamReader stIn = new StreamReader(req.GetResponse().GetResponseStream());
 strResponse = stIn.ReadToEnd();
 stIn.Close();
 // sanity check Label2.Text = strResponse;
 // If response was SUCCESS, parse response string and output detailsif (strResponse.StartsWith("SUCCESS"))
 {
 PDTHolder pdt = PDTHolder.Parse(strResponse);
 Label1.Text = 
 string.Format("Thank you {0} {1} [{2}] for your payment of {3} {4}!",
 pdt.PayerFirstName, pdt.PayerLastName, 
 pdt.PayerEmail, pdt.GrossTotal, pdt.Currency);
 }
 else {
 Label1.Text = "Oooops, something went wrong...";
 }
 }
}

在随本文附上的代码中,在 PDT目录下,你将看到更多的类,这些类将帮助你在前面提到的流程中进行操作。

和AutoReturn一样,在关闭主题之前一个注意事项- 看看对于你的HTTP POST的custom 变量的响应。 你可以能希望利用这个变量,因为它允许你将一些信息从付款页面传递到post处理页面。 我的一些贝宝实现中,我用它来命名用户,当他开始支付过程时,当他完成支付过程时,我就会跟踪用户。

实时付款通知( IPN )

,的一个大缺点是它是一个用户驱动过程,如果用户在执行付款之后,将失去运行处理逻辑。 这就是为什么你被建议与das合并到网络中的任何重要的集成。

IPN是将httppost发送到页面的后端机制,通知你重要的事件。 它不仅用于PostPayment处理,还适用于后面的事情,比如处理定期付款的用户取消。

作为后端技术,比PDT更难实现和调试。 在开始实现afs之前,你应该注意一些事情:

你必须先激活这里服务,然后才能接收IPN消息,请按以下步骤操作:

  • 登录到你的主要或者业务帐户
  • 单击配置文件子选项卡
  • 点击 Selling Preferences中的Instant付款通知 Notification
  • 单击'编辑IPN设置'按钮以更新设置
  • 选择'接收IPN消息'( 启用) 并输入IPN处理程序的URL
  • 单击保存,你将得到一条消息,表明你已经成功激活 IPN

Activating Instant Payment Notification

激活即时付款通知

AutoReturn一样,可以通过添加 notify_url 变量( 参见 HTML变量参考。) 覆盖个别表单中的配置文件中的网络处理程序URL集。 知道这不仅会影响初始互穿性消息,而且会影响与该事务( 他们都会去 notify_url ) 相关的所有未来消息。

要处理IPN消息,你需要在网站的某个地方创建一个HTTP处理程序。 发生重大事件时(。比如,用户执行付款) 将发生以下流:

  • PayPal将向你的IPN处理器发送一个带有多个变量的HTTP POST。
  • 接收 HTTP POST 并解析后,你需要将消息的完整正文提交回 https://www.paypal.com/cgi-bin/webscr (。或者 https://www.sandbox.paypal.com/cgi-bin/webscr 用于沙箱帐户)。 这样做时,一定要按照你收到的准确格式发送邮件;你只允许添加收费的cmd=_notify-validate。 为了验证 HTTP POST 是真实的并且从贝宝发送的,这一切都是。
  • 贝宝将以验证或者无效的方式响应。 接收到这里响应后,请确保发送 200确定,以防止贝宝发送外接程序以发送网络。 if OK,PayPal PayPal PayPal PayPal PayPal start start start start start IPN IPN IPN IPN IPN秒,16秒。32秒。秒。 最多 4天)。

以下是通用 C# IPN处理器( 要获得更多代码,请检查附加到文章的):

protectedvoid Page_Load(object sender, EventArgs e)
{ 
 string postUrl = ConfigurationManager.AppSettings["PayPalSubmitUrl"];
 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(postUrl);
 //Set values for the request back req.Method = "POST";
 req.ContentType = "application/x-www-form-urlencoded";
 byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
 string strRequest = Encoding.ASCII.GetString(param);
 string ipnPost = strRequest;
 strRequest += "&cmd=_notify-validate";
 req.ContentLength = strRequest.Length;
 //for proxy//WebProxy proxy = new WebProxy(new Uri("http://url:port#"));//req.Proxy = proxy;//Send the request to PayPal and get the response StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), 
 System.Text.Encoding.ASCII);
 streamOut.Write(strRequest);
 streamOut.Close();
 StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
 string strResponse = streamIn.ReadToEnd();
 streamIn.Close();
 // logging ipn messages... be sure that you give write// permission to process executing this codestring logPathDir = ResolveUrl("Messages");
 string logPath = string.Format("{0}{1}.txt", 
 Server.MapPath(logPathDir), DateTime.Now.Ticks);
 File.WriteAllText(logPath, ipnPost);
 //if (strResponse == "VERIFIED")
 {
 //check the payment_status is Completed//check that txn_id has not been previously processed//check that receiver_email is your Primary PayPal email//check that payment_amount/payment_currency are correct//process payment }
 elseif (strResponse == "INVALID")
 {
 //log for manual investigation }
 else {
 //log response/ipn data for manual investigation }
}

如果你收到无效响应,则可能意味着两种情况:

  • 有人试图将恶意邮件发送到你的IPN处理程序。
  • 你的实现不完美。

对于恶意消息,你可以使用自己的(。日志 IP,采取适当的操作),但对于不完善的实现,请访问开发人员论坛中的IPN疑难解答主题,这将帮助你解决无效的响应。

另外,在使用IPN处理器之前,一定要用即时付款通知( IPN ) 模拟器( ) 来测试它。 因为网络处理程序将在 background 中工作,所以你需要尽可以能多地测试它,并依靠它的处理。

如果你实现 IPN,你需要访问的另一件事是 ScriptGenerator2页面。 它可以快速生成一个你所选择的语言的IPN处理器。 有趣的是,他们缺少了 ASP.NET/C#;的生成器,查看了本文附加到本文的IPN目录and这些代码示例。

Finally开发者中心,有这个漂亮的页面,列出了大多数IPN和PDT变量的变化。 因为在( 查看关于的评论此页) 上缺少一些变量,所以我说最多,但是列表远远超出了无用。

PayPal

正如在介绍中所说,大多数开发人员,即使他们没有对cmmi的经验,也直接启动 API。 Google搜索会启动 API引用或者 sdk和下载页面,然后浏览文档开始 starts。 我不想说在支付的过程中使用,我想在大多数情况下都不需要去掉这个路径。

PayPal不仅仅是支付机制- 如果你查看提供的 API参考页面,你将会看到许多方法没有直接绑定到。 你可以使用API浏览交易历史记录,发出退款或者更新定期付款配置文件。 那么你如何开始使用它?

首先,你需要在你的帐户中启用API访问,请按以下步骤操作:

  • 登录到你的主要或者业务帐户
  • 单击配置文件子选项卡
  • 点击帐户信息标题下的API访问链接
  • 单击says请求API凭证/查看API证书link链接
  • 选择API签名或者API证书

Step 5 from activating API Access

从激活API访问步骤 5

我建议你选择API签名,以及下面的示例将假定你做了这个选择。 选择API证书并没有什么问题;我只是发现从安装的角度来说更要求。

既然你有了进行API调用的凭证,那么如何执行它们? 所有平台同样适用的方法是下载SDK插件,以适当的API端点为目标,并开始用名称值对或者SOAP调用进行HTTP调用。

但是,对于. NET 开发人员,我建议采用不同。 考虑到 Visual Studio 具有出色的WSDL解析器,我建议你只向 https://www.paypal.com/wsdl/PayPalSvc.wsdl 添加一个Web服务引用。 稍后,你将有一个最新的类,可以为你提供强类型的所有好处- 没有构建HTTP请求,没有复制字段名。 你可以在以下位置为沙箱提供相同的东西: https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl

快速付款

Express Checkout是最灵活的PayPal集成解决方案。 用户只是为了身份验证和确认而重定向到贝宝,然后在你的网站上完成 background API。 下面的图片描述了进程( 从获取这里页面。):

Step 5 from activating API Access

Express签出流
  • 在点击PayPal之后,你将添加一个PayPal按钮,该按钮调用PayPal的方法。
  • 如果要调用这里方法一次付款,则如果只包含所需字段,则将有效。 将 NOSHIPPING 变量设置为 1是重要的,如果你销售一些在线服务(。它将帮助你跳过传送信息页面)。
  • 如果要调用这里方法来设置定期付款,请确保将 L_BILLINGTYPE0 设置为 RecurringPaymentsL_BILLINGAGREEMENTDESCRIPTION0,并将它的设置为服务的有效描述。
  • SetExpressCheckout 将返回一个 20字符标记,它将唯一标识你的事务。 这里令牌对于 3小时有效。 收到该消息后,将用户重定向到 https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=[TOKEN] ( 你可以猜出沙箱的URL是什么,对)。
  • 用户将查看付款信息,如果一切正常,请输入登录凭证。 之后,PayPal将把他重定向到你在 RETURNURL 中指定的URL。
  • 点击 RETURNURL 时,需要调用 GetExpressCheckoutDetails 方法并查看实际事务的细节;验证所有内容都按顺序进行。
  • 现在,剩下的就是提交事务。 根据步骤 1所做的,有两件事情可以完成。
  • 一次性付款,你只需调用 DoExpressCheckoutPayment 并转发适当的变量。
  • 对于定期付款,你将调用 CreateRecurringPayments 方法。 当你调用 SetExpressCheckout 时,必须将它的包含在 MATCH 中,并将它的包含到L_BILLINGAGREEMENTDESCRIPTION0中输入的值。

简而言之- 就是这样。 同样,我提供了一些代码示例,这些示例遵循本文的( 在API目录下) 中以前指定的流。 如果愿意,你还可以使用表示集成向导来生成参考代码。

直接付款( 网站付款专业版)

大多数开发者并不知道PayPal平台可以只用于信用卡处理。 PayPal API的这一部分称为直接付款,与 Express Checkout (。仅使用PayPal帐户的服务客户) 结合使用时,你可以在PayPal开发者中心中获得网站付款的Pro。

要能够调用直接付款( DoDirectPaymentCreateRecurringPayments )的方法,你首先需要满足某些条件:

  • 拥有基于美国,英国或者加拿大的业务帐户
  • 建议你在网站上同时实施快递和直接付款。
  • 通过你的PayPal帐户提交网站付款申请,并将它的批准
  • 每月支付费用( 每月 $30 )

如果你已经准备好网站付款帐户,直接付款方法相当简单- 如果怀疑,请访问 API参考页面,或者查看本文的代码。 如果你想在没有启用Pro的帐户上调用任何直接付款方法,你将在代码 10501 ( 这是Sandbox论坛中报告的最常见的问题) 中得到错误。

最后,一旦开始处理信用卡,你需要处理PCI兼容性;这里是一个提供更多信息的论坛线程。

结论

我希望这篇文章能让你很好地了解PayPal集成选项。 如果这样做,我将处于平静状态,一旦你理解了本文中所示的概念,你将轻松地获取所需的细节。 我们还没有涉及到一些话题,比如加密网站支付API证书 Certificates,但如果你完全理解这里写的所有内容,我觉得你可以 tackle Payflow Gateway。

如果你遇到任何问题,我建议你先访问 PayPal开发者社区,然后在适当的论坛上问你的问题。 很多knowledable开发人员监视这些论坛,并且很可能会在一小时内收到几乎任何贝贝问题。 我还有一个网站( lepipele )的帐户,并且尽量回答问题,如果有时间,请随时发送 private 消息。

历史

  • November 5,2009 - 由于 PayPal X 重组,更新了链接
  • October st st - 文章的最初版本。

INT  asp  asp-net  introduction  Paypal  
相关文章