我最近为这个确切的问题而苦苦挣扎,最终构建了a G Suite addon 以使其他人更容易做到这一点。巧合的是,我还为一家小型非营利组织做 IT 志愿者,我们想在我们的注册表单中使用 PayPal(插件有定价,但如果您是一家小型非营利组织,请联系我)。
这是我在构建它时学到的:
- 一旦表单显示给用户,Apps 脚本就无法修改表单,也无法使用 Apps 脚本响应用户输入
- 提交表单后,无法将用户自动重定向到 PayPal
这意味着如果您想将某人发送到 PayPal,您必须使用普通链接。您可以通过将 URL 添加到问题描述中来在表单中执行此操作,或者您可以将 URL 添加到有人提交表单后显示的文本中。对于 PayPal,这种链接有两种选择:
- PayPal 按钮
- 快速结帐
PayPal 按钮 是由 PayPal 管理的静态链接。它们不需要任何编码 - 只需转到 here 并创建一个按钮。然后,您需要获取按钮的原始文本链接,PayPal 将其称为“电子邮件”版本。您可以直接将其插入表单并告诉用户访问它。一个问题是没有真正的方法来获取交易 ID。您可以尝试将表单提交时间与付款时间相关联,或将付款人电子邮件与表单提交电子邮件相关联。有可能它们都不匹配,您必须手动完成。
快速结账要求您通过调用 PayPal API 为每次付款动态创建一个新链接。这意味着您的链接需要打开一个页面,然后生成一个快速结帐 URL 并将用户重定向到它。您可以使用web app in Google Apps Script 使用doGet() 触发器来执行此操作,也可以使用任何语言在服务器上创建后端。
如果您可以在某个地方运行自己的服务器,我建议您这样做(很多 PaaS 服务都有免费层)。当您不使用 Apps 脚本时,测试和调试事情要容易得多。我使用了PayPal Node SDK,尽管没有维护,但效果很好。 (PayPal 已“弃用”快速结账,但我敢打赌它不会很快消失)。他们的例子将使您大部分时间到达那里。当用户到达时,生成一个支付链接并重定向他们。当他们完成后,他们将返回您的服务器,您可以显示任何您想要的内容。例如,您可以要求他们复制交易 ID 并将其粘贴到您的表单中。
最后,当您提交表单时,可以设置onSubmit() 触发器。实际上有两种onSubmit() 用于表单的触发器——one 用于表单本身,a second 用于链接到表单的电子表格。您可以注册一个触发器来进行额外的处理(例如查找事务 ID),但您不能修改触发器中的响应。但是,您可以修改发送触发器的电子表格,这在大多数情况下是等效的。例如,您可以在电子表格中添加一列,其中包含基于交易代码的 PayPal 交易链接。