gpt4 book ai didi

ruby-on-rails - 无法使用 Paypal 和 Rails 应用程序。通知 Paypal 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 15:54:40 25 4
gpt4 key购买 nike

我正在构建一个功能,在收到 1 美元的付款后,向用户在表格中输入的电话号码发送三个彩信(通过 Twilio)。

故事:1)用户在表格中输入电话号码和姓名。然后,点击 Place order (via paypal)2) 用户在 paypal 端完成流程,然后返回到我的网站,我收到来自 paypal 的付款通知(问题从这里开始)。3) 一旦我收到完成的:payment_status,我就发送三个彩信到电话号码。

我的问题:我花了几个小时在这上面,我不知道如何解决这个问题。我想要我的 send_text_message当我收到来自 paypal 的付款通知时立即触发的方法。我尝试了很多东西,但没有任何效果,如果我的设置完全错误,我就会开始说话。我需要一些帮助。

我有一个 Controller (Home)和两个模型(Home 和 Message)。

# Table name: homes
#
# id :integer not null, primary key
# phone :string
# sender_name :string
# created_at :datetime not null
# updated_at :datetime not null

# Table name: messages
#
# id :integer not null, primary key
# body :string
# media_url :string
# created_at :datetime not null
# updated_at :datetime not null
#

模型 -> 消息

class Message < ActiveRecord::Base
belongs_to :home

end

模型 -> 主页

class Home < ActiveRecord::Base
require 'twilio-ruby'
has_many :messages
validates :phone, presence: true
validates :sender_name, presence: true
def send_text_message
twilio_sid = ENV["TWILIO_ACCOUNT_SID"]
twilio_token = ENV["TWILIO_AUTH_TOKEN"]
twilio_phone_number = ENV["TWILIO_PHONE_NUMBER"]
sender_number = twilio_phone_number.sample

@twilio_client = Twilio::REST::Client.new(twilio_sid, twilio_token)

random_messages.each do |message|
twilio_credentials.account.messages.create(
:from => sender_number,
:to => self.phone,
:body => message[:body],
:media_url => message[:media_url]
)
end
}

serialize :notification_params, Hash

def paypal_url(return_path)
values = {
business: "merchant@sumbio.com",
cmd: "_xclick",
upload: 1,
return: "#{Rails.application.secrets.app_host}#{return_path}",
invoice: id + 1000,
amount: '1.89',
item_name: "Game of Thrones - Funny Prank",
item_number: '1',
quantity: '1',
notify_url: "#{Rails.application.secrets.app_host}/hook"
}
"#{Rails.application.secrets.paypal_host}/cgi-bin/webscr?" + values.to_query
end

private

def random_messages
Message.order("RANDOM()").limit(3)
end

Controller :主页

class HomesController < ApplicationController
protect_from_forgery except: [:hook]
before_action :set_home, only: [:show, :destroy]

def show
end

def new
@home = Home.new
end

def create
@home = Home.new(home_params)

respond_to do |format|
if @home.save
format.html { redirect_to @home.paypal_url(home_path(@home)) }
#@home.send_text_message
#redirect_to @home, notice: 'Your Attack Has Officially Launched!'
#format.json { render :show, status: :created, location: @home }
else
format.html { render :new }
format.json { render json: @home.errors, status: :unprocessable_entity }
end
end
end

def hook
params.permit! # Permit all Paypal input params
status = params[:payment_status]
if status == "Completed"
@home = Home.find params[:invoice]
@home.update_attributes notification_params: params, status: status, transaction_id: params[:txn_id], purchased_at: Time.now
@home.send_text_message
end
format.html { render :new }
format.json { render json: @home.errors, status: :unprocessable_entity }
end

private
def set_home
@home = Home.find(params[:id])
end

def home_params
params.require(:home).permit(:phone, :sender_name, :plan, :notification_params, :status, :transaction_id ,:purchased_at)
end
end

------------路线

resources :homes
post "/homes/:id" => "homes#show"
post "/hook" => "homes#hook"
root 'homes#new'

编辑

使用 paypal 付款有效。当用户点击下订单按钮时​​,它会将他重定向到 Paypal 并继续付款。问题是 send_text_message 方法未定义,也没有发送。我还可以看到付款是在沙盒支付账户中进行的

最佳答案

我认为问题是因为找不到Home 记录。我说我认为是因为 OP 指出问题是 send_text_message 未定义,而不是 ActiveRecord::RecordNotFound

要理解为什么这可能是错误,请务必查看 Home#paypal_url 方法,因为 invoice 键被设置为 id + 1000

现在,在 HomeController#hook 操作中,@home 被设置为 Home.find(params[:invoice]) ,对于数据库中的第一条记录,这意味着 Home.find(1001)。我怀疑这是必需的行为。

invoice 键更改为 id 应该可以解决这个问题。

关于ruby-on-rails - 无法使用 Paypal 和 Rails 应用程序。通知 Paypal 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38042421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com