ruby实现桌面端银联支付

Installation

Add this line to your application's Gemfile:

gem 'upop', :git => 'https://github.com/oldfritter/upop'

And then execute:

$ bundle install

Usage

Config

  Upop.store_no = '105550149170027' # Your store NO.
  Upop.store_name = '上海一树网络科技有限公司' # Your company name.
  Upop.key = '88888888' # Your key.
  Upop.UPOP_TRADE_URL = 'http://58.246.226.99' # This is the test Gateway.

Generate payment options

      @option = {
        merId: Upop.store_no, 
        backEndUrl: orders.first.call_back_url{payment = 'upop'}, 
        frontEndUrl: orders.first.call_back_url{payment = 'upop'}, 
        orderTime: Time.now.strftime('%Y%m%d%H%M%S'), 
        orderNumber: orders.first.payment_sn, 
        orderAmount: (orders.collect{|order|order.order_total_price}.sum * 100).to_i, 
        orderCurrency: 156, 
        customerIp: orders.first.customer.ip
      } # 构建option

      @options = Upop::Service.desktop_payment @option

Payment form

<form id="union_pay_form" action="<%= Upop.UPOP_TRADE_URL %>/UpopWeb/api/Pay.action" method='POST'>
  <input type="hidden" name='backEndUrl'            value='<%= @options['backEndUrl'] %>'/>
  <input type="hidden" name='charset'               value='<%= @options['charset'] %>'/>
  <input type="hidden" name='customerIp'        value='<%= @options['customerIp'] %>'/>
  <input type="hidden" name='frontEndUrl'       value='<%= @options['frontEndUrl'] %>'/>
  <input type="hidden" name='merAbbr'               value='<%= @options['merAbbr'] %>'/>
  <input type="hidden" name='merId'                 value='<%= @options['merId'] %>'/>
  <input type="hidden" name='orderAmount'       value='<%= @options['orderAmount'] %>'/>
  <input type="hidden" name='orderCurrency' value='<%= @options['orderCurrency'] %>'/>
  <input type="hidden" name='orderNumber'       value='<%= @options['orderNumber'] %>'/>
  <input type="hidden" name='orderTime'         value='<%= @options['orderTime'] %>'/>
  <input type="hidden" name='orderTimeout'      value='<%= @options['orderTimeout'] %>'/>
  <input type="hidden" name='signMethod'            value='<%= @options['signMethod'] %>'/>
  <input type="hidden" name='signature'         value='<%= @options['signature'] %>'/>
  <input type="hidden" name='transType'         value='<%= @options['transType'] %>'/>
  <input type="hidden" name='version'               value='<%= @options['version'] %>'/>
    <input type='submit'/>
</form>

Verify

   def upop_notify
      return false unless Upop::Sign.verify? params.except('action', 'controller')
            # Do something.
      render text: 'success'
    end

    def upop_success
      return false unless Upop::Sign.verify? params.except('action', 'controller')
      # Do something.
      redirect_to #your success page.
    end

猜你喜欢

转载自oldfritter.iteye.com/blog/2074548
今日推荐