module QyWechat::ReplyMessageHelper

Constants

ArticleCount
Articles
Content
Description
Encrypt
FromUserName
Image
MediaId
MsgSignature
Nonce
PicUrl
TimeStamp
Title
ToUserName
Url
Video
Voice

Public Instance Methods

generate_image_message(from=nil, to=nil, image) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 68
def generate_image_message(from=nil, to=nil, image)
  message = ImageResponseMessage.new
  message.FromUserName = from || @weixin_message.ToUserName
  message.ToUserName   = to   || @weixin_message.FromUserName
  message.Image = image
  encrypt_message message.to_xml
end
generate_news_message(from=nil, to=nil, articles) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 23
def generate_news_message(from=nil, to=nil, articles)
  message = NewsResponseMessage.new
  message.FromUserName = from || @weixin_message.ToUserName
  message.ToUserName   = to   || @weixin_message.FromUserName
  message.Articles     = articles
  message.ArticleCount = articles.count
  encrypt_message message.to_xml
end
generate_text_message(from=nil, to=nil, content) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 6
def generate_text_message(from=nil, to=nil, content)
  message = TextResponseMessage.new
  message.FromUserName = from || @weixin_message.ToUserName
  message.ToUserName   = to   || @weixin_message.FromUserName
  message.Content      = content
  encrypt_message(message.to_xml)
end
generate_video_message(from=nil, to=nil, video) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 40
def generate_video_message(from=nil, to=nil, video)
  message = VideoResponseMessage.new
  message.FromUserName = from || @weixin_message.ToUserName
  message.ToUserName   = to   || @weixin_message.FromUserName
  message.Video = video
  encrypt_message message.to_xml
end
generate_voice_message(from=nil, to=nil, voice) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 54
def generate_voice_message(from=nil, to=nil, voice)
  message = VoiceResponseMessage.new
  message.FromUserName = from || @weixin_message.ToUserName
  message.ToUserName   = to   || @weixin_message.FromUserName
  message.Voice = voice
  encrypt_message message.to_xml
end
new_article(title, desc, pic_url, link_url) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 14
def new_article(title, desc, pic_url, link_url)
  item = Article.new
  item.Title       = title
  item.Description = desc
  item.PicUrl = pic_url
  item.Url    = link_url
  item
end
new_image(media_id) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 62
def new_image(media_id)
  image = Image.new
  image.MediaId = media_id
  image
end
new_video(media_id, desc, title) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 32
def new_video(media_id, desc, title)
  video = Video.new
  video.MediaId = media_id
  video.Title   = title
  video.Description = desc
  video
end
new_voice(media_id) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 48
def new_voice(media_id)
  voice = Voice.new
  voice.MediaId = media_id
  voice
end

Private Instance Methods

encrypt_message(msg_xml) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 78
def encrypt_message(msg_xml)
  # 加密回复的XML
  encrypt_xml = Prpcrypt.encrypt(aes_key, msg_xml, corp_id).gsub("\n","")
  # 标准的回包
  generate_encrypt_message(encrypt_xml)
end
generate_encrypt_message(encrypt_xml) click to toggle source
# File lib/qy_wechat/helpers/reply_message_helper.rb, line 85
def generate_encrypt_message(encrypt_xml)
  msg = EncryptMessage.new
  msg.Encrypt = encrypt_xml
  msg.TimeStamp = Time.now.to_i.to_s
  msg.Nonce = SecureRandom.hex(8)
  msg.MsgSignature = generate_msg_signature(encrypt_xml, msg)
  msg.to_xml
end
generate_msg_signature(encrypt_msg, msg) click to toggle source

dev_msg_signature=sha1(sort(token、timestamp、nonce、msg_encrypt)) 生成企业签名

# File lib/qy_wechat/helpers/reply_message_helper.rb, line 96
def generate_msg_signature(encrypt_msg, msg)
  sort_params = [encrypt_msg, qy_token, msg.TimeStamp, msg.Nonce].sort.join
  Digest::SHA1.hexdigest(sort_params)
end