调用微信支付沙箱环境的API接口验证 (ruby)

由于2018年5月29日微信支付HTTPS服务器更换证书,为了检查服务器是否支持了DigiCert的证书, 特地手动些了以下验证方法:

def sign_generate(params)

key = params.delete(:key)

query = params.sort.map do |key, value|
"#{key}=#{value}" if value != "" && !value.nil?
end.compact.join('&')

Digest::MD5.hexdigest("#{query}&key=#{key || WxPay.key}").upcase
end

params = {}
params[:appid ] = WX_APP_ID
params[:key] = WX_API_KEY
params[:mch_id] = WX_MCH_ID
params[:nonce_str] = 'weixinpay'+ "#{Time.now.to_i}" + "str"

sign = sign_generate(params)
payload = "<xml>#{params.map { |k, v| "<#{k}>#{v}</#{k}>" }.join}<sign>#{sign}</sign></xml>"

url = "https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey"
r = RestClient::Request.execute(
{
method: :post,
url: url,
payload: payload,
headers: { content_type: 'application/xml' }
}
)

result = Hash.from_xml(r)
hash = {}

if result['xml'].class == Hash
result['xml'].each_pair do |k, v|
hash[k] = v
end
end

p hash

如果返回的值为:  {"return_code"=>"SUCCESS", "return_msg"=>"ok", "sandbox_signkey"=>"xxxxxx"}

恭喜你, 你的验证通过了。

验证的微信文档链接: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_4

原文地址:https://www.cnblogs.com/qinyan20/p/8695970.html