Module: WxPay::Service

Defined in:
lib/wx_pay/service.rb

Constant Summary collapse

GATEWAY_URL =
'https://api.mch.weixin.qq.com'.freeze
INVOKE_UNIFIEDORDER_REQUIRED_FIELDS =
%i(body out_trade_no total_fee spbill_create_ip notify_url trade_type)
GENERATE_APP_PAY_REQ_REQUIRED_FIELDS =
%i(prepayid noncestr)
INVOKE_REFUND_REQUIRED_FIELDS =
%i(transaction_id out_trade_no out_refund_no total_fee refund_fee cert_path)
INVOKE_REDPACK_FIELDS =
%i(mch_billno mch_id wxappid send_name re_openid total_amount total_num wishing client_ip act_name remark key cert_path)
INVOKE_QUERY_REDPACK_FIELDS =
%i(mch_billno mch_id appid bill_type key cert_path key)
INVOKE_GROUPREDPACK_FIELDS =
%i(mch_billno mch_id wxappid send_name re_openid total_amount total_num wishing act_name remark key amt_type cert_path)

Class Method Summary collapse

Class Method Details

.close_order(params) {|r| ... } ⇒ Object

out_trade_no

Yields:

  • (r)


47
48
49
50
51
52
53
54
55
# File 'lib/wx_pay/service.rb', line 47

def self.close_order(params)
  params = {
    appid: WxPay.appid,
    mch_id: WxPay.mch_id
  }.merge(params)
  r = invoke_remote("#{GATEWAY_URL}/pay/closeorder", params)
  yield(r) if block_given?
  r
end

.generate_app_pay_req(params) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/wx_pay/service.rb', line 21

def self.generate_app_pay_req(params)
  params = {
    appid: WxPay.appid,
    partnerid: WxPay.mch_id,
    package: 'Sign=WXPay',
    timestamp: Time.now.to_i.to_s
  }.merge(params)
  check_required_options(params, GENERATE_APP_PAY_REQ_REQUIRED_FIELDS)
  params[:sign] = WxPay::Sign.generate(params)
  params
end

.invoke_refund(params) {|r| ... } ⇒ Object

Yields:

  • (r)


34
35
36
37
38
39
40
41
42
43
44
# File 'lib/wx_pay/service.rb', line 34

def self.invoke_refund(params)
  params = {
    appid: WxPay.appid,
    mch_id: WxPay.mch_id,
    op_user_id: WxPay.mch_id
  }.merge(params)
  check_required_options(params, INVOKE_REFUND_REQUIRED_FIELDS)
  r = invoke_remote("#{GATEWAY_URL}/secapi/pay/refund", params, true)
  yield(r) if block_given?
  r
end

.invoke_unifiedorder(params) {|r| ... } ⇒ Object

Yields:

  • (r)


9
10
11
12
13
14
15
16
17
18
# File 'lib/wx_pay/service.rb', line 9

def self.invoke_unifiedorder(params)
  params = {
    appid: WxPay.appid,
    mch_id: WxPay.mch_id
  }.merge(params)
  check_required_options(params, INVOKE_UNIFIEDORDER_REQUIRED_FIELDS)
  r = invoke_remote("#{GATEWAY_URL}/pay/unifiedorder", params)
  yield r if block_given?
  r
end

.query_order(params) {|r| ... } ⇒ Object

查询订单 transaction_id 与 out_trade_no 二选一

Yields:

  • (r)


59
60
61
62
63
64
65
66
67
# File 'lib/wx_pay/service.rb', line 59

def self.query_order(params)
  params = {
    appid: WxPay.appid,
    mch_id: WxPay.mch_id
  }.merge(params)
  r = invoke_remote("#{GATEWAY_URL}/pay/orderquery", params)
  yield(r) if block_given?
  r
end

.query_redpack(params) {|r| ... } ⇒ Object

Yields:

  • (r)


82
83
84
85
86
87
# File 'lib/wx_pay/service.rb', line 82

def self.query_redpack(params)
  check_required_options(params, INVOKE_QUERY_REDPACK_FIELDS)
  r = invoke_remote("#{GATEWAY_URL}/mmpaymkttransfers/gethbinfo", params, true)
  yield(r) if block_given?
  r
end

.send_groupredpack(params) {|r| ... } ⇒ Object

Yields:

  • (r)


92
93
94
95
96
97
# File 'lib/wx_pay/service.rb', line 92

def self.send_groupredpack(params)
  check_required_options(params, INVOKE_GROUPREDPACK_FIELDS)
  r = invoke_remote("#{GATEWAY_URL}/mmpaymkttransfers/sendgroupredpack", params, true)
  yield(r) if block_given?
  r
end

.send_redpack(params) {|r| ... } ⇒ Object

Yields:

  • (r)


72
73
74
75
76
77
# File 'lib/wx_pay/service.rb', line 72

def self.send_redpack(params)
  check_required_options(params, INVOKE_REDPACK_FIELDS)
  r = invoke_remote("#{GATEWAY_URL}/mmpaymkttransfers/sendredpack", params, true)
  yield(r) if block_given?
  r
end