5

我正在使用 CodeIgniter 框架开发一个众筹网站(类似于Kickstarter )。

我使用这个库“成功”实现了 PayPal 的自适应支付。

但是,我只是不确定如何正确和安全地检查成功/失败的付款,并且女巫数据对于保存到数据库很重要。

注意:是链式延迟支付,我是主收款人,副收款人是众筹项目创建者。在预定的时间段后,钱被转移到辅助收款人。

我现在的流程是这样的:

  1. 用户点击购买奖励。
  2. 我使用“支付”API 操作请求支付(包括唯一的 TrackingID)并将请求保存在数据库中。
  3. 如果请求成功,我会在会话中保存一些响应数据(TrackingID、PayKey、金额...)并重定向到 PayPal..
  4. 在此步骤中,用户可以:接受付款、取消或关闭浏览器,所以我真的不知道这里会发生什么......(推荐?)
  5. 如果用户接受付款,他将被重定向回我的站点,我使用保存在会话中的数据请求“PaymentDetails”API 操作以获取有关付款的信息。
  6. 我将结果保存在数据库中并检查响应“金额”是否等于请求“金额”(出于安全考虑)。
  7. 如果一切顺利,我会更新数据库并将支付 TrackingID 与用户和他购买的奖励相关联。
  8. 稍后(可能几个月后),管理员请求“ExecutePayment”API 操作,资金从我们转移给项目创建者,我们收取少量费用(众筹就是这样运作的......)

现在,我确定我错过了很多东西,但我不知道是什么:

  1. IPN API 怎么样?我需要它?在流程和检查中发挥什么作用?
  2. 如果用户在 PayPay(我的站点之外)中关闭浏览器窗口,我该怎么办。
  3. 听说 PayKey 有效期为 3 小时,如何在几个月后“执行付款”?
  4. 我如何处理 PayPal API 中的大量错误类型?
  5. 我需要处理的其他事情的任何提示或示例?安全?错误?其他的?

非常感谢,我真的很需要你的回答!

4

1 回答 1

9
  1. IPN 会自动将数据发布到您的“听众”(您需要开发),以便自动执行后付款程序。例如,您可以在 IPN 中更新数据库、点击 3rd 方网络服务、生成电子邮件收据等,这样当您在 PayPal 帐户中收到资金时,这些事件就会自动发生。您还可以将其设置为处理退款、争议和其他事件。这不是必需的,但通常非常有用。

  2. 这是 IPN 有用的原因之一。无论用户是否返回您的站点,都会触发 IPN。如果您在感谢页面或类似内容中执行后付款处理程序,我建议您将其移至 IPN 解决方案中。

  3. PayKey 作为令牌使用时确实有效 3 小时。但是,当您使用 CREATE 的 ActionType 调用 Pay 时,它会设置延迟付款,并且 PayKey 的有效期最长为 90 天。

  4. 错误信息将始终以相同的格式在响应中返回。您可以根据此标准响应相应地记录或显示错误。

  5. 听起来你几乎在大多数情况下都掌握了一切。

于 2012-02-04T03:29:46.477 回答