使用paypal的PayFlowPro实现定期计费

分享于 

11分钟阅读

Web开发

  繁體

介绍

你是否曾经过过一个客户,不仅要接受网络上的信用卡,而是用一种允许周期性处理的方式。 为了这个白皮书,我们还假设客户不希望用户在付款处理期间留下他们的网站。 你怎么做到这一点的? 嗯,贝宝引入了一个名为 PayFlowPro ( 文件组)的强大产品,它的中有些定制将实现你寻找的结果。 这个白皮书将演示如何使用PayFlowPro设置定期计费。

当然,第一步是建立一个与贝贝的商务帐户,除了创建一个互联网商户帐户。 这些任务超出了本文的范围,本文假设已经建立了这些项目。 有关这里问题的详细信息,请访问 PayPal

建立帐户时,下一步是从PayPal下载 PayFlowPro SDK并安装它。 在Web项目中安装并正确引用之后,你就可以开始尝试使网站自定义了。

PFP管理定期计费的方式是通过名为Profiles的车辆。 对于每个你希望定期付款的客户,你将需要创建一个配置文件。 在大多数网站上,这将在结算的初始时间完成。

本文还假设你对 InvoiceCardBillShip 对象有一些有用的知识。 本文没有讨论这些内容,而是在最后的代码示例中显示的。 如果你需要更多关于这些对象的信息,请参阅on文档。

要创建PayPal配置文件,请在 PFP SDK中使用 RecurringInfo 类型的对象。 创建对象实例后,你需要设置一些非常关键的属性:

  • Start
  • ProfileName
  • PayPeriod
  • Term
  • OptionalTrx
  • OptionalTrxAmount

让我们更详细地介绍其中的每一个。

开始属性

这里属性反映第一个付款将被处理的日期。 要注意的重要事项是,日期必须比当前日期为 GREATER,也必须格式化为 mmddyyyy。 大多数情况下,这里日期值将表示你希望定期记帐开始的下一个日期日期。 现在你可能会问现在的充电? 当我们到达 OptionalTrx 属性时,我们将覆盖这个。

例如,假设我们开发一个网站,可以在线阅读报纸或者杂志,他们决定每月收费 $7.95. 在这种情况下,初始付款将是前面的,这将在下面的optionaTrx 属性中,但是为了参数。 然后将这里属性设置为 equal,因为这是定期账单实际开始的那一天。 值为 11012008

配置文件名

这里属性用于为你创建一个可以读的个人文件,以供在基于paypal的管理工具( 称为)的Web服务。 这个字段是文本 string,可以是任意值,但我强烈建议使用有意义的东西,比如第一个客户和最后一个。 这很重要,因为使用PayPalManager查看创建的概要文件时,这就是管理器加载概要文件的方式。 我们将从上面的示例中继续,将它的设置为 Bush, George 值。

PayPeriod

这里属性表示重复充电发生的频率。 它也是文本 string 和样本值包括 WEEKMONTHSMYRQTER。等等,我们将使用一个 MONTH 值。

术语

这里属性描述要处理的付款总数。 使用 0 无限期地处理( 或者至少在客户取消他的合同之前)。

OptionalTrx

这个属性表示当我们创建它时,我们是否希望处理带有概要文件的可选事务。 字段很重要,因为它可以满足以下两个目的: 第一是在需要的时候为客户开具初始期。 在这里,我们不会给出免费试用,所以我们告诉贝贝我们希望今天的帐单 $7.95. 我们将这个值设置为 S,表示销售的价格。
这个属性的第二个用途是你希望给用户一个免费试用,但是你要确保他们输入的信用卡是有效的,在这里,你可以通过设置这个值来获得授权。

无论使用哪种字段,如果使用这里字段,你要处理的金额都将在下面描述的OptionalTrxAmount 属性中设置。

OptionalTRXAmount

这里属性与你希望在创建配置文件时执行的销售或者授权的数量完全相同。 一般来说,你可以使用 $1.00,当然,如果你做销售,金额等于销售价格。 因此,对于我们的示例,我们将输入 7.95。 有关这里属性的一个重要内容,这个值是对象库中的类型 Currency,因这里需要创建 Currency 类型。

在设置了各种对象的所有必要属性之后,就可以将该事务提交给 bayes,并创建我们的配置文件。 为此,我们只创建 RecurAddTransaction 对象实例和 Response 对象的实例,并将它设置为 RecurAddTransaction 对象的SubmitTransacton 方法。

返回代码

将事务提交到贝宝之后,我们需要等待响应返回。 当调用返回时,需要检查响应对象以确定是否创建了概要文件,并确保我们的可选事务是( 希望) 批准的。 可以从PFP文档中找到关于各种返回代码的更多信息;但是,你将注意到 0的结果代码表示成功的事务。 请参见本文末尾的代码例程。

在我们的例子中,我们可以通过bayes管理器站点看到我们的新配置文件已经创建,直到取消帐户。

Pay Pal Development

事务的外观如下:

Pay Flow Pro Development

修改。查询等。

PFP提供用于处理处理定期付款和概要的各种事务的对象。 修改和查询的能力都存在,但超出了白皮书的范围。 有关这些对象的更多信息,请参见文档。

结束语

在. NET 中,PayFlowPro提供了一个简单而且非常强大的方法来管理基于. NET的( 或者 Windows 表单) 应用程序。

代码

publicint AddUpdateProfileWithTransaction()
{
 PayflowConnectionData Connection = new PayflowConnectionData();UserInfo User = 
 new UserInfo("<user>", "<vendor>", "<partner>", "<password>");
 // Create InvoiceInvoice Inv = new Invoice();// Set Amount Currency Amt = new Currency(newdecimal(7.95), "USD");
 Inv.Amt = Amt;Inv.InvNum = "xxxxx";
 // Create and set Bill To Info BillTo Bill = new BillTo();
 Bill.Street = "1600 Pennsylvania Ave.";
 Bill.Zip = "20006";Bill.City = "Washington";
 Bill.State = "DC";Bill.FirstName = "George";
 Bill.LastName = "Bush";Bill.BillToCountry = "US";
 Bill.Email = "president@whitehouse.gov";
 Inv.BillTo = Bill;
 PayPal.Payments.DataObjects.CreditCard CC = 
 new PayPal.Payments.DataObjects.CreditCard
 ("5105555555550155", string.Format("{0}{1}","05","09"));
 CC.Cvv2 = "123";
 // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC);
 RecurringInfo RecurInfo = new RecurringInfo();
 // The date that the first payment will be processed. // Note - this value must be greater// than the current date! We will charge the customer // for the first month in a sep. Transaction// Format must be mmddyyyyDateTime StartBilling = DateTime.Now.AddMonths(1); RecurInfo.Start = StartBilling.ToString("MMddyyyy");
 RecurInfo.ProfileName = string.Format("{0}, {1}", "Bush", "George");
 // Specifies how often the payment occurs. All PAYPERIOD values must use // capital letters and can be any of WEEK/BIWK/SMMO/FRWK/MONT/// QTER/SMYR/YEAR RecurInfo.PayPeriod = "MONT";
 RecurInfo.Term = 0; // Number of payments 0 = indef.// Perform an Optional Transaction. Verify that we need to do this!! RecurInfo.OptionalTrx = "S"; // S = Sale, A = Authorization// Set the amount if doing a"Sale" for the Optional Transaction. Currency oTrxAmt = new Currency(newdecimal(7.95), "USD");
 RecurInfo.OptionalTrxAmt = oTrxAmt;
 // Create a new Recurring Add Transaction. RecurringAddTransaction Trans = new RecurringAddTransaction(
 User, Connection, Inv, Card, RecurInfo, PayflowUtility.RequestId);
 // Submit the Transaction Response Resp = Trans.SubmitTransaction();
 // Return the transaction response parameters.if (Resp!= null)
 {
 // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse;
 // Get the Recurring Response parameters. RecurringResponse RecurResponse = Resp.RecurringResponse;
 if ((TrxnResponse!= null) && (RecurResponse!= null))
 {
 if (TrxnResponse.Result == 0)
 {
 // Return the ProfileID if desired// ProfileID = RecurResponse.ProfileId;return0; //Success!!! }
 else {
 try {
 int RetCode = int.Parse(RecurResponse.TrxResult);
 return RetCode; 
 }
 catch (Exception)
 {
 return TrxnResponse.Result;
 }
 }
 } 
 else {
 _TransactionID = "";
 return -1;
 }
 } 
 else {
 _TransactionID = "";
 return -1;
 }
}

关于作者

Andrew Schmidt是Preston的定制软件顾问。 在一系列行业中,他拥有超过 10年的软件开发经验,包括制造。政府。医疗保健和电信。 他开发了与贝宝和其他卡处理系统集成的企业系统。 他与他妻子和 1岁的儿子在芝加哥,可以通过电子邮件到达 andy@customsoftwarebypreston.com 或者Custom定制软件。


相关文章