module Cmbpay::Service
Constants
- DO_BUSINESS_GATEWAY_URL
- DO_REFUND_GATEWAY_URL
- DO_REFUND_REQUIRED_REQ_DATA
- MB_APPQRPAY_GATEWAY_URL
- MB_APPQRPAY_REQUIRED_REQ_DATA
- PUBLIC_URL
- QUERY_ACCOUNTlIST_GATEWAY_URL
- QUERY_ACCOUNTlIST_REQUIRED_REQ_DATA
- QUERY_REFUND_BY_DATE_GATEWAY_URL
- QUERY_REFUND_BY_DATE_REQUIRED_REQ_DATA
- QUERY_SETTLED_ORDER_BY_MERCHANT_DATE_GATEWAY_URL
- QUERY_SETTLED_ORDER_BY_MERCHANT_DATE_REQUIRED_REQ_DATA
- QUERY_SETTLED_REFUND_GATEWAY_URL
- QUERY_SETTLED_REFUND_REQUIRED_REQ_DATA
- QUERY_SINGLE_ORDER_GATEWAY_URL
- QUERY_SINGLE_ORDER_REQUIRED_REQ_DATA
- SANDBOX_DO_BUSINESS_GATEWAY_URL
- SANDBOX_DO_REFUND_GATEWAY_URL
- SANDBOX_MB_APPQRPAY_GATEWAY_URL
- SANDBOX_PUBLIC_URL
- SANDBOX_QUERY_ACCOUNTlIST_GATEWAY_URL
- SANDBOX_QUERY_REFUND_BY_DATE_GATEWAY_URL
- SANDBOX_QUERY_SETTLED_ORDER_BY_MERCHANT_DATE_GATEWAY_URL
- SANDBOX_QUERY_SETTLED_REFUND_GATEWAY_URL
- SANDBOX_QUERY_SINGLE_ORDER_GATEWAY_URL
Public Class Methods
do_business(req_data={}, options = {})
click to toggle source
查询招行公钥API
# File lib/cmbpay/service.rb, line 48 def self.do_business(req_data={}, options = {}) req_data = Utils.stringify_keys(req_data) params = { 'jsonRequestData' => { 'charset' => 'utf-8', 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), 'txCode' => 'FBPK' }.merge(req_data) } } request_remote(get_gateway_url(__method__), sign_params(params, options)) end
mb_appqrpay(req_data, options = {})
click to toggle source
二维码支付API
# File lib/cmbpay/service.rb, line 28 def self.mb_appqrpay(req_data, options = {}) req_data = Utils.stringify_keys(req_data) check_required_params(req_data, MB_APPQRPAY_REQUIRED_REQ_DATA) params = { 'charset' => 'utf-8', 'jsonRequestData' => { 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), 'date' => Time.now.strftime('%Y%m%d'), }.merge(req_data) } } request_args(get_gateway_url(__method__), sign_params(params, options)) end
query_single_order(req_data, options = {})
click to toggle source
查询单笔订单API
# File lib/cmbpay/service.rb, line 104 def self.query_single_order(req_data, options = {}) req_data = Utils.stringify_keys(req_data) check_required_params(req_data, QUERY_SINGLE_ORDER_REQUIRED_REQ_DATA) if req_data['type'] == 'A' warn("Cmbpay Warn: must have bankSerialNo if type is A") unless req_data.keys.include? 'bankSerialNo' else warn("Cmbpay Warn: must have orderNo if type is B") unless req_data.keys.include? 'orderNo' end params = { 'charset' => 'utf-8', 'jsonRequestData' => { 'charset' => 'utf-8', 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), }.merge(req_data) } } request_remote(get_gateway_url(__method__), sign_params(params, options)) end
Private Class Methods
check_required_params(options, names)
click to toggle source
# File lib/cmbpay/service.rb, line 224 def check_required_params(options, names) return unless Cmbpay.debug_mode? names.each do |name| warn("Cmbpay Warn: missing required option: #{name}") unless options.has_key?(name) end end
get_gateway_url(method)
click to toggle source
# File lib/cmbpay/service.rb, line 184 def get_gateway_url(method) prefix = Cmbpay.sandbox_mode ? 'SANDBOX_' : '' self.const_get("#{prefix}#{method.upcase}_GATEWAY_URL") end
request_args(gateway_url, params, options = {})
click to toggle source
# File lib/cmbpay/service.rb, line 189 def request_args(gateway_url, params, options = {}) gateway_url = options.delete(:gateway_url) || gateway_url params['jsonRequestData'] = JSON.generate params['jsonRequestData'] { method: options[:method] || :post, url: gateway_url, payload: params, } end
request_remote(gateway_url, params, options = {})
click to toggle source
# File lib/cmbpay/service.rb, line 199 def request_remote(gateway_url, params, options = {}) options = Cmbpay.extra_rest_client_options.merge(options) gateway_url = options.delete(:gateway_url) || gateway_url params['jsonRequestData'] = JSON.generate params['jsonRequestData'] RestClient::Request.execute( { method: options[:method] || :post, url: gateway_url, payload: params, headers: { content_type: 'application/x-www-form-urlencoded' } }.merge(options) ).body end
sign_params(params, options = {})
click to toggle source
# File lib/cmbpay/service.rb, line 214 def sign_params(params, options = {}) options['key'] ||= Cmbpay.key params['jsonRequestData'].merge!( 'version' => '1.0', 'signType' => 'SHA-256', 'sign' => Sign.generate(params['jsonRequestData']['reqData'], options) ) params end
Public Instance Methods
do_refund(req_data, options = {})
click to toggle source
退款API
# File lib/cmbpay/service.rb, line 129 def do_refund(req_data, options = {}) req_data = Utils.stringify_keys(req_data) check_required_params(req_data, DO_REFUND_REQUIRED_REQ_DATA) params = { 'jsonRequestData' => { 'charset' => 'utf-8', 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), }.merge(req_data) } } request_remote(get_gateway_url(__method__), sign_params(params, options)) end
query_accountList(req_data, options = {})
click to toggle source
查询入账明细API
# File lib/cmbpay/service.rb, line 86 def query_accountList(req_data, options = {}) req_data = Utils.stringify_keys(req_data) check_required_params(req_data, QUERY_ACCOUNTlIST_REQUIRED_REQ_DATA) params = { 'jsonRequestData' => { 'charset' => 'utf-8', 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), }.merge(req_data) } } request_remote(get_gateway_url(__method__), sign_params(params, options)) end
query_refund_by_date(req_data, options = {})
click to toggle source
按退款日期查询退款API
# File lib/cmbpay/service.rb, line 147 def query_refund_by_date(req_data, options = {}) req_data = Utils.stringify_keys(req_data) check_required_params(req_data, QUERY_REFUND_BY_DATE_REQUIRED_REQ_DATA) params = { 'jsonRequestData' => { 'charset' => 'utf-8', 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), }.merge(req_data) } } request_remote(get_gateway_url(__method__), sign_params(params, options)) end
query_settled_order_by_merchant_date(req_data, options = {})
click to toggle source
按商户日期查询已结账订单API
# File lib/cmbpay/service.rb, line 67 def query_settled_order_by_merchant_date(req_data, options = {}) req_data = Utils.stringify_keys(req_data) check_required_params(req_data, QUERY_SETTLED_ORDER_BY_MERCHANT_DATE_REQUIRED_REQ_DATA) params = { 'jsonRequestData' => { 'charset' => 'utf-8', 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), }.merge(req_data) } } request_remote(get_gateway_url(__method__), sign_params(params, options)) end
query_settled_refund(req_data, options = {})
click to toggle source
已处理退款查询API
# File lib/cmbpay/service.rb, line 165 def query_settled_refund(req_data, options = {}) req_data = Utils.stringify_keys(req_data) check_required_params(req_data, QUERY_SETTLED_REFUND_REQUIRED_REQ_DATA) params = { 'jsonRequestData' => { 'charset' => 'utf-8', 'reqData' => { 'merchantNo' => options.delete(:merchantNo) || Cmbpay.merchant_no, 'branchNo' => options.delete(:branchNo) || Cmbpay.branch_no, 'dateTime' => Time.now.strftime('%Y%m%d%H%M%S'), }.merge(req_data) } } request_remote(get_gateway_url(__method__), sign_params(params, options)) end