我有以下代码,并且能够创建新用户。该电子邮件未存储。
代码:
defmodule StripeTestWeb.PaymentController do
use StripeTestWeb, :controller
use Stripe.API
def index(conn, _params) do
{:ok, customer_data} = Stripe.Customer.create(%{email: conn.body_params['stripeEmail']})
render(conn, "index.html")
end
end
如何捕获和存储他们的电子邮件?
答案 0 :(得分:0)
我可以发现此代码有两个小故障:
看:
iex|1 ▶ 'abc' == [97, 98, 99]
#⇒ true
'abc'
与(在伪代码中)
[
ascii-value-of(character a),
ascii-value-of(character b),
ascii-value-of(character c)
]
这应该被认为是二十世纪以来的遗产。每当需要二进制文件(字符串)时,总是使用双引号。
Stripe.Customer.create
返回的值。这不太可能是您真正想要做的。要将其传递给底层控制器,请使用Plug.Conn.assign/3
(或至少验证对create
函数的调用的结果并以某种方式处理错误。总而言之,可能强大的解决方案如下:
defmodule StripeTestWeb.PaymentController do
use StripeTestWeb, :controller
use Stripe.API
def index(conn, %{"stripeEmail" => email} = _params) do
with {:ok, customer_data} <- Stripe.Customer.create(%{email: email}) do
conn
|> assign(:customer_data, customer_data)
|> render("index.html")
else
# render error page
end
end
end