新手问题 有没有大神搞定过支付宝的生活号之激活开发者模式问题?

rd084c · August 10, 2017 · Last by rd084c replied at August 11, 2017 · 7061 hits

问题描述:我被支付宝生活号的激活开发者模式困扰好久,有一步“验证应用网关”,报错为“应用网关响应异常”,与官方客服沟通无果。

说明:这一步是需要设置一个回调地址,当在支付宝平台填写保存后,支付宝会发送一个验证消息,让你用本地公钥对消息内容进行验签, 并按要求组成 xml,返回给支付宝,支付宝验证通过,开发者模式被激活。

处理方法:


# 生成签名(key 私钥)
def self.sign_rsa(string)
    rsa = OpenSSL::PKey::RSA.new(File.read("lib/certificate/alipay_private_key.pem"))
    Base64.strict_encode64(rsa.sign('sha256', string.force_encoding("gbk"))).delete("\n").delete("\r")
end

# 验证签名(key 公钥)
def self.verify?(key, string, sign)
    rsa = OpenSSL::PKey::RSA.new(key)
    begin
        return rsa.verify('sha256', Base64.strict_decode64(sign), string)
    rescue => e
        Rails.logger.error("verify exception e: " + e.to_s)
        return false
    end
end

感受:自我验证觉得公私钥都正确,验签也能验证对,地址也能被访问到,返回格式也是按官方 xml 定义返回的,参考 alipay 大家推荐的 gem,并没有解决, 有疑问的地方就是我设置 AES 加密串,但是支付宝客服说接口内容加密已经作废了,用不到 AES,设不设置无所谓。

提问:
1. 现在只想发个帖子问问有人搞定过吗?有没有人搞定过? "有" : "没有"(用 ruby,不是 java、PHP、 .net)
2. 如果有可以借鉴的 gem,或者代码连接提供,小弟不胜感激。

@Rei 我觉得得把这个帖子 https://ruby-china.org/topics/24325 永久置顶,且新注册的账号必读一遍后考试通过才给发帖。

不想动

我只是提个新手问题,不知道惹到这位大牛哪疼了,不帮助解决问题,管倒是挺严,如果觉得发帖有问题,可以指明,然后删帖。

我已经竭力改进了,不知能否过关?

谢谢,我直接用这个试试。

Reply to rd084c

安全无痛,论坛里大神做的

之前没触及这块接口,提醒一点是如果是看 URL 带 openapi 的文档,需要看 openapi 分支的代码。

Reply to Rei

噢,谢谢指点,我看看。

我这两天也刚好在捣鼓 RSA 签名与验签,我的代码是这样子的

def self.gen_sign(str, rsa_private_key)
  rsa_instance = OpenSSL::PKey::RSA.new(rsa_private_key)
  Base64.encode64(rsa_instance.sign(OpenSSL::Digest::SHA256.new, str))
end

def self.verify_sign?(str, sign, rsa_public_key)
  rsa_instance = OpenSSL::PKey::RSA.new(rsa_public_key)
  rsa_instance.verify(OpenSSL::Digest::SHA256.new, Base64.decode64(sign), str)
end

另,你所说的 我已经竭力改进了,不知能否过关? 在我看来,跟修改前的内容没区别。 我理由就是你仍然没有将整个过程呈现出来,你的阐述无异于:啊,我遇到了一个问题,谁能直接帮我解决一下。 可看的人根本不知道你的问题是啥。

我之所以会这么说,是因为这 4 年来,这里的每一篇帖子我都看过,而我这两天不知道怎么了,就刚好挑上这个贴就怼了。

我只是提个新手问题,不知道惹到这位大牛哪疼了,不帮助解决问题,管倒是挺严,如果觉得发帖有问题,可以指明,然后删帖。

新手不意味着你可以不动脑然后期望着别人能直接给你一段代码让你 COPY 完事。

好吧 谢谢你提供的代码,接受你对新人的批评建议,也请给新人一个敢提问的机会。

You need to Sign in before reply, if you don't have an account, please Sign up first.