Cpay

Installation

Add this line to your application's Gemfile:

gem 'cpay'

And then execute:

$ bundle

Or install it yourself as:

$ gem install cpay

Usage

杉徳支付

#通用返回
{
 code: 0,
 # -1,代码出现异常,msg中显示异常信息
 # 0, 返回正常数据data
 # 2,签名验证错误 
 msg: '',
 data: {},
 # 杉徳返回数据,参照杉徳文档使用
 cpay:{
  ok: true,
  # true为成功,
  # false为非成功,例:多次查询订单会返回
  # "respCode"=>"030096"(该订单查询次数超限,请稍后重试),
  # 此时ok为false
  msg: '',

 }
 # 辅助判断
}

快捷支付

  • 支付*
    p = {
        mid: mid,#商户id
        privatekey: privatekey,#私钥
        userid: userid,#用户id
        orderid: orderid,#订单id
        amount: amount,#订单金额
        subject: subject,#订单标题
        body: body,#订单描述
        notifyurl: notifyurl,#异步通知地址(需报备)
        fronturl: fronturl,#跳转地址
    }
    ret = Cpay::Sand::Fastpay.pay(p)
    # 将ret显示到网页中

  • 回调 ruby p = { sign: sign, #回调sign data: data, #回调data publickey: publickey, #公钥 } ret = Cpay::Sand::Fastpay.notify(p)
  • 查单

    p = {
        orderid: orderid, #订单号
        mid: mid, #商户id
        publickey: publickey, #公钥
        privatekey: privatekey, #私钥
    }
    ret = Cpay::Sand::Fastpay.queryOrder(p)
    #-----------------------------------------
     if  ret[:cpay][:next]
           #(该订单查询次数超限,请稍后重试)需稍后再次请求
     else
          if ret[:cpay][:ok]
            #订单成功
          else
            #订单未成功
          end
    
     end
     #-----------------------------------------
    if ret[:data]['head']['respCode'] == '000000'
        if ret[:data]['body']['orderStatus']  == '00'
          #订单成功
        elsif  ret[:data]['body']['orderStatus']  == '01'
          #订单生成,未支付
        elsif  ret[:data]['body']['orderStatus']  == '02'
          #失败
        elsif  ret[:data]['body']['orderStatus']  == '04'
          #已退货
        elsif  ret[:data]['body']['orderStatus']  == '05'
          #退款处理中
        else 
        end
    else
        # 未请求到订单状态
    end
    

#### 代付

- 代付
```ruby
    p = {
        orderid: orderid, #订单号
        amount: amount, #金额
        accno: accno, #银行卡账号
        accname: accname, #姓名
        remark: remark, #备注
        tranTime: tranTime,#交易时间 Time.now.strftime('%Y%m%d%H%M%S'),查单时需要
        mid: mid, #商户id
        publickey: publickey, #公钥
        privatekey: privatekey, #私钥
    }
    ret = Cpay::Sand::Draw.agentpay(p)
    puts ret
    if ret[:next]
      puts '状态不明,需要通过查单接口查询状态。'
    elsif ret[:ok]
      puts '订单成功'
    else
      puts '订单失败'
    end
  • 查询余额 ```ruby p = { orderid: orderid, #订单号 mid: mid, #商户id publickey: publickey, #公钥 privatekey: privatekey, #私钥 } ret = Cpay::Sand::Draw.queryBalance(p) puts ret if ret[:cpay][:ok] puts ret[:cpay][:balance] else puts "查询失败" end
- 代付订单查询
```ruby
    p = {
        orderid: orderid, #订单号
        mid: mid, #商户id
        tranTime: tranTime,#订单时间
        publickey: publickey, #公钥
        privatekey: privatekey, #私钥
    }
    ret = Cpay::Sand::Draw.queryOrder(p)
    puts ret
    if ret[:cpay][:next]
      puts '状态不明,需要通过查单接口查询状态。'
    elsif ret[:cpay][:ok]
      puts '订单成功'
    else
      puts '订单失败'
    end

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Cpay project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.