`
南京老油条
  • 浏览: 55818 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics