Sha256: 69b1bd9b4cd2081519f0994666e2b1a530f1e58dc54e6cd970c5a7f5034d9eac

Contents?: true

Size: 832 Bytes

Versions: 1

Compression:

Stored size: 832 Bytes

Contents

class AlipayRefund < Refund
  
  def do_refund(params = {})
    return unless can_refund?

    refund_params = {
      out_trade_no: self.order.uuid,
      refund_amount: self.total_amount.to_s,
      out_request_no: self.refund_uuid
    }

    refund_res = Alipay::Service.trade_refund(refund_params)

    order.payment_status = 'refunded'
    self.operator_id = params[:operator_id]

    refund = JSON.parse(refund_res).fetch('alipay_trade_refund_response', {})

    if refund['code'] == '10000' || refund['msg'] == 'Success'
      self.refund_uuid = refund['trade_no']
      self.state = 'completed'
      self.refunded_at = Time.now
      self.class.transaction do
        order.save!
        self.save!
      end
    else
      self.update reason: "code: #{refund['code']}, msg: #{refund['msg']}"
    end
    refund
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_trade-0.0.1 app/models/rails_trade/refunds/alipay_refund.rb