zoukankan      html  css  js  c++  java
  • 调用微信支付沙箱环境的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

  • 相关阅读:
    AVFrame与Mat
    conda警告
    MS COCO数据集格式
    ubuntu卡在工作区切换界面
    C++编程便捷口
    Anaconda相关问题
    处理memory output
    ajax 上传form表单
    元类 metaclass
    小菜一碟
  • 原文地址:https://www.cnblogs.com/qinyan20/p/8695970.html
Copyright © 2011-2022 走看看