Commit 839d5c160c698b5e4f36e5418160545e936b9054

Authored by aaronliu
1 parent 444c2b84
Exists in master

feat: add sharing profit

Showing 1 changed file with 66 additions and 0 deletions   Show diff stats
lib/wx_pay/service.rb
@@ -476,6 +476,72 @@ module WxPay @@ -476,6 +476,72 @@ module WxPay
476 r 476 r
477 end 477 end
478 478
  479 + PROFITSHARINGADDRECEIVER = [:nonce_str, :receiver]
  480 +
  481 + # 添加分账接收方
  482 + def self.profitsharingaddreceiver(params, options = {})
  483 + params = {
  484 + appid: options.delete(:appid) || WxPay.appid,
  485 + mch_id: options.delete(:mch_id) || WxPay.mch_id,
  486 + nonce_str: SecureRandom.uuid.tr('-', ''),
  487 + key: options.delete(:key) || WxPay.key
  488 + }.merge(params)
  489 +
  490 + check_required_options(params, PROFITSHARINGADDRECEIVER)
  491 +
  492 + r = WxPay::Result.new(Hash.from_xml(invoke_remote("/pay/profitsharingaddreceiver", make_payload(params, WxPay::Sign::SIGN_TYPE_HMAC_SHA256), options)))
  493 +
  494 + yield r if block_given?
  495 +
  496 + r
  497 + end
  498 +
  499 + PROFITSHARINGREMOVERECEIVER = [:nonce_str, :receiver]
  500 + # 删除分账接收方
  501 + def self.profitsharingremovereceiver(params, options = {})
  502 + params = {
  503 + appid: options.delete(:appid) || WxPay.appid,
  504 + mch_id: options.delete(:mch_id) || WxPay.mch_id,
  505 + nonce_str: SecureRandom.uuid.tr('-', ''),
  506 + key: options.delete(:key) || WxPay.key
  507 + }.merge(params)
  508 +
  509 + check_required_options(params, PROFITSHARINGADDRECEIVER)
  510 +
  511 + r = WxPay::Result.new(Hash.from_xml(invoke_remote("/pay/profitsharingremovereceiver", make_payload(params, WxPay::Sign::SIGN_TYPE_HMAC_SHA256), options)))
  512 +
  513 + yield r if block_given?
  514 +
  515 + r
  516 + end
  517 +
  518 + # 单次分账
  519 +
  520 + PROFITSHARING = [:nonce_str, :receivers, :transaction_id, :out_order_no]
  521 +
  522 + def self.profitsharing(params, options = {})
  523 + params = {
  524 + appid: options.delete(:appid) || WxPay.appid,
  525 + mch_id: options.delete(:mch_id) || WxPay.mch_id,
  526 + nonce_str: SecureRandom.uuid.tr('-', ''),
  527 + key: options.delete(:key) || WxPay.key
  528 + }.merge(params)
  529 +
  530 + check_required_options(params, PROFITSHARING)
  531 +
  532 + options = {
  533 + ssl_client_cert: options.delete(:apiclient_cert) || WxPay.apiclient_cert,
  534 + ssl_client_key: options.delete(:apiclient_key) || WxPay.apiclient_key,
  535 + verify_ssl: OpenSSL::SSL::VERIFY_NONE
  536 + }.merge(options)
  537 +
  538 + r = WxPay::Result.new(Hash.from_xml(invoke_remote("/secapi/pay/profitsharing", make_payload(params, WxPay::Sign::SIGN_TYPE_HMAC_SHA256), options)))
  539 +
  540 + yield r if block_given?
  541 +
  542 + r
  543 + end
  544 +
479 class << self 545 class << self
480 private 546 private
481 547