婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Ruby on Rails在Ping ++ 平臺實現支付

Ruby on Rails在Ping ++ 平臺實現支付

熱門標簽:湖州u友防封電銷卡 百度地圖標注自定義圖片 徐州網絡外呼系統哪個好 地圖標注賺錢項目注冊 高德地圖標注客服 滴滴外呼系統 電銷機器人廠商代理 常德電銷平臺外呼系統軟件價格 白銀外呼paas系統

本地數據庫創建訂單表。

建議包含以下字段,參考官方API( https://pingxx.com/document/api#api-c-new):

order_no:required

  商戶訂單號,適配每個渠道對此參數的要求,必須在商戶系統內唯一。
  alipay: 1-64 位,
  wx: 1-32 位,
  bfb: 1-20 位,
  upacp: 8-40 位,
  yeepay_wap:1-50 位,
  jdpay_wap:1-30 位,
  cnp_u:8-20 位,
  cnp_f:8-20 位,
  推薦使用 8-20 位,要求數字或字母,不允許特殊字符

app[id]:required

 支付使用的 app 對象的 id,請登陸管理平臺查看。

subject:required

  商品的標題,該參數最長為 32 個 Unicode 字符,
  銀聯全渠道(upacp/upacp_wap)限制在 32 個字節。

body:required

 商品的描述信息,該參數最長為 128 個 Unicode 字符,
 yeepay_wap 對于該參數長度限制為 100 個 Unicode 字符。

channel:required

 支付使用的第三方支付渠道(更多請參考api)
  alipay:支付寶手機支付
  alipay_wap:支付寶手機網頁支付
  alipay_qr:支付寶掃碼支付
  alipay_pc_direct:支付寶 PC 網頁支付
  apple_pay:Apple Pay
  bfb:百度錢包移動快捷支付
  bfb_wap:百度錢包手機網頁支付   
  wx:微信支付
  wx_pub:微信公眾賬號支付
  wx_pub_qr:微信公眾賬號掃碼支付
  jdpay_wap:京東手機網頁支付

amount: required

 訂單總金額, 單位為對應幣種的最小貨幣單位,
 例如:人民幣為分(如訂單總金額為 1 元,此處請填 100)。

client_ip: required

  發起支付請求終端的 IP 地址,格式為 IPV4,如: 127.0.0.1。

      
以上是在ping++ 平臺創建訂單時需要的參數

以下是在ping++ 平臺創建訂單成功以及付款成功回調的參數

paid :支付狀態,默認為false
refunded :退款狀態,默認為false
time_paid :付款時間
time_refunded:退款時間
charge_no:返回的charge編號
transaction_no :交易號

步驟:

1.本地創建一條訂單記錄

 def create_order

 #獲取參數  
 #判斷參數合法性 
 
 order = Order.new
 #保存訂單信息,注意subject以及body的長度
 #生成訂單號并保存
 order_no = (Time.now.to_formatted_s(:number)).to_s
 6.times{ order_norand(10).to_s }
 order.order_no = order_no

 #獲取ip并保存
 order.client_ip = request.remote_ip
 
 if order.save
  #返回成功信息
 else
  render_failure(order.errors.messages.first[1][0])
 end
 end

2.執行支付

現在ping++ 平臺創建一條記錄
1.在order.rb文件中新建一個方法

 def pay_url
  #獲取api_key以及app_id
  Pingpp.api_key = PingPlusPlus.get_ping_settings["PING_API_KEY"]
  app_id = PingPlusPlus.get_ping_settings["PING_APP_ID"]
  #不同支付渠道的回調地址
  case self.channel
    when "alipay"
    extra = {
   }
    when "wx"
    extra = {
   } 
   end
  #ping++平臺新建一個訂單
  begin
   charge = Pingpp::Charge.create(
     :order_no => self.order_no,
     :app  => { :id => app_id },
     :channel => self.channel,
     :amount => self.amount.round(2) * 100.to_i,
     :client_ip => self.client_ip,
     :currency => "cny",
     :subject => self.subject[0..31],
     :body  => self.body[0..127],
     :extra  => extra
     )
   
   return charge
  rescue Pingpp::PingppError => error
    logger.error 'ping++平臺創建訂單失敗'
    logger.error error.http_body
    return false
  end
 end

2.調用pay_url方法創建訂單,返回給客戶端charge對象,客戶端拿著charge對象去ping++ 平臺支付

 def confirm_and_payment
  order_no = params[:order_no]
  channel = params[:channel]
  if order_no.blank? || channel.blank?
   render_failure("參數不完整!") and return
  end
 
  order = Order.where(order_no: order_no).first
  if order.blank?
    render_failure("訂單不存在!")and return
  end

  charge = order.pay_url
  if charge == false
   render_failure("訂單支付失敗!") and return
  else
   order.update_attribute(:charge_no ,(JSON.parse charge.to_s)['id'])
   render(:json => charge)
  end
 end

異步通知更新付款結果

 def notify

  status = 400

  #判斷請求是否有ping++的簽名信息
  if request.headers['x-pingplusplus-signature'].blank?
   status = 401
   logger.debug '【報哪家】:======付款回調請求來源錯誤!!!!!'
   return
  end 

  #獲取簽名信息
  raw_data = request.body.read
  if request.headers['x-pingplusplus-signature'].is_a?(Array)
   signature = request.headers['x-pingplusplus-signature'][0].to_s
  else
   signature = request.headers['x-pingplusplus-signature'].to_s
  end
  
  # 獲取「Webhooks 驗證 Ping++ 公鑰」
  pub_key_path ="#{Rails.root}/config/rsa_public_key.pem"
  if verify_signature(raw_data, signature, pub_key_path)
    #處理接收的結果
    event = JSON.parse(raw_data) 
    #付款成功
    if event["type"] == 'charge.succeeded'

    # 開發者在此處加入對支付異步通知的處理代碼
    order_no = event['data']['object']['order_no']
    order = Order.where(order_no: order_no).first
    order_from = order.status 
    if order.present?
     #更新字段
     order.paid = event['data']['object']['paid'] 
     if order.save
       status = 200
     else
      status = 500
     end
    else
      logger.debug '數據庫沒有該條記錄!'
    end

    #退款成功
   elsif event['type'] == 'refund.succeeded'

     # 開發者在此處加入對退款異步通知的處理代碼
    order_no = event['data']['object']['order_no']
    order = Order.where(order_no: order_no).first
    if order.present?
     #更新字段
     order.time_refunded = Time.at(event['data']['object']['time_succeed'])
     if order.save
      status = 200
     else
      status = 500
     end
    else
      logger.debug '數據庫沒有該條記錄!'
    end

   else
    logger.debug '付款回調返回未知操作!'
   end

   else
    logger.debug '付款回調請求來源錯誤!'
    status = 403
   end
   render :nothing => true, :status => status
 end

您可能感興趣的文章:
  • 云網在線支付漏洞初探(圖)
  • PHP實現的交通銀行網銀在線支付接口ECSHOP插件和使用例子
  • Java通過JsApi方式實現微信支付
  • java實現微信支付(服務端)

標簽:張家界 公主嶺 三沙 遼寧 梧州 永州 普洱 荊門

巨人網絡通訊聲明:本文標題《Ruby on Rails在Ping ++ 平臺實現支付》,本文關鍵詞  Ruby,Rails,在,Ping,平臺,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby on Rails在Ping ++ 平臺實現支付》相關的同類信息!
  • 本頁收集關于Ruby on Rails在Ping ++ 平臺實現支付的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品久久久久香蕉网| 国产精品一卡二卡| 麻豆成人免费电影| 欧美精品一二三四| 亚瑟在线精品视频| 欧美日本一道本| 亚洲国产综合人成综合网站| 欧美性大战久久| 天天综合天天做天天综合| 欧美日韩在线观看一区二区 | 国产日韩精品一区| 成人性生交大片免费看视频在线| 欧美极品美女视频| 99re热视频这里只精品| 一区二区三区在线免费观看| 99精品久久99久久久久| 亚洲国产毛片aaaaa无费看 | 欧美一区永久视频免费观看| 亚洲手机成人高清视频| 欧美三区在线观看| 日韩高清电影一区| 欧美经典三级视频一区二区三区| 91女厕偷拍女厕偷拍高清| 日韩av一区二| 国产精品免费视频网站| 色88888久久久久久影院按摩| 蜜桃在线一区二区三区| 国产精品传媒入口麻豆| 7777精品伊人久久久大香线蕉的| 国产福利精品一区二区| 综合激情成人伊人| 欧美精品在欧美一区二区少妇| 国产精品资源在线| 亚洲精品中文在线| 欧美成人aa大片| 91免费视频观看| 日韩av不卡一区二区| 欧美韩国日本一区| 7777精品伊人久久久大香线蕉经典版下载 | 国内精品伊人久久久久影院对白| 久久影院视频免费| 色天使色偷偷av一区二区| 亚洲成人久久影院| 中文字幕一区在线| 欧美福利电影网| 日本乱人伦一区| 国产一区二区在线观看视频| 一区二区三区不卡在线观看| 日韩欧美一级片| 国产精品综合网| 日本不卡在线视频| 亚洲欧美另类久久久精品| 精品国产乱码久久久久久久久| 色噜噜狠狠成人网p站| www.66久久| 国产中文字幕精品| 麻豆一区二区99久久久久| 亚洲一区二区中文在线| 国产亚洲精品aa| 久久综合成人精品亚洲另类欧美| 欧美日韩午夜在线视频| 成人h版在线观看| 国产激情精品久久久第一区二区| 久久国产婷婷国产香蕉| 一区二区三区欧美亚洲| 亚洲免费伊人电影| 一区二区三区成人| 麻豆精品国产91久久久久久| 亚洲免费在线看| 一区二区三区精品在线| 椎名由奈av一区二区三区| 成人免费在线播放视频| 亚洲精选视频在线| 亚洲欧美日韩国产另类专区| 亚洲卡通欧美制服中文| 伊人开心综合网| 亚洲免费在线看| 亚洲mv大片欧洲mv大片精品| 亚洲国产日韩a在线播放| 夜夜嗨av一区二区三区中文字幕| 一区二区三区免费网站| 日本视频一区二区| 激情文学综合插| 国产精品乱人伦| 亚洲在线观看免费| 首页欧美精品中文字幕| 国产一本一道久久香蕉| 成人午夜激情在线| 欧洲国产伦久久久久久久| 欧美一区二区在线观看| 国产性做久久久久久| 亚洲精品免费电影| 日韩中文字幕区一区有砖一区 | 不卡大黄网站免费看| 欧美综合欧美视频| 日韩一区二区在线看片| 久久久久九九视频| 亚洲图片欧美视频| 久久国产麻豆精品| 日本vs亚洲vs韩国一区三区 | 日韩视频一区二区| 国产色爱av资源综合区| 亚洲国产一区二区在线播放| 国产精品18久久久久久久久| 一本一道久久a久久精品综合蜜臀| 欧美性色欧美a在线播放| 精品国产乱码久久久久久久 | 韩国一区二区三区| 不卡的av在线| 欧美一级欧美一级在线播放| 国产精品国产三级国产三级人妇 | 国产精品女主播在线观看| 午夜天堂影视香蕉久久| 成人美女视频在线观看| 欧美精品自拍偷拍| 1024成人网色www| 久久www免费人成看片高清| 色婷婷综合激情| 国产嫩草影院久久久久| 免费在线观看一区二区三区| av电影在线观看一区| 精品国产乱码久久久久久图片 | 高清在线观看日韩| 日韩一区二区影院| 一区二区三区四区av| 成人性生交大合| 精品国产区一区| 蜜臀av一级做a爰片久久| 在线观看亚洲a| 最新日韩av在线| 制服.丝袜.亚洲.中文.综合| 亚洲国产精品t66y| 丰满少妇久久久久久久| 欧美成人bangbros| 日本不卡高清视频| 欧美一区二区私人影院日本| 亚洲国产视频网站| 欧美日韩一区二区三区免费看 | 亚洲国产精品高清| 久久99精品国产.久久久久久| 欧美理论电影在线| 欧美aⅴ一区二区三区视频| 欧美三级三级三级| 亚洲国产成人高清精品| 8v天堂国产在线一区二区| 丝袜美腿亚洲一区| 9191精品国产综合久久久久久| 性欧美大战久久久久久久久| 宅男噜噜噜66一区二区66| 天天综合色天天| 久久女同互慰一区二区三区| 国产精品亚洲综合一区在线观看| 日韩欧美国产wwwww| 国产自产2019最新不卡| 国产三区在线成人av| av男人天堂一区| 亚洲国产综合人成综合网站| 欧美另类久久久品| 精品亚洲免费视频| 国产欧美一区二区三区在线看蜜臀 | 免费成人小视频| 日韩欧美一区电影| 国产激情偷乱视频一区二区三区| 亚洲欧美综合色| 欧美私人免费视频| 美女一区二区在线观看| 国产日韩影视精品| 91亚洲精品乱码久久久久久蜜桃| 亚洲摸摸操操av| 欧美变态凌虐bdsm| 风间由美性色一区二区三区| 一区二区三区国产| 精品国产露脸精彩对白| 成人va在线观看| 午夜欧美一区二区三区在线播放| 久久久不卡影院| 欧美影视一区在线| 国产在线麻豆精品观看| 亚洲自拍另类综合| 精品成人a区在线观看| 欧美四级电影网| 成人一区二区在线观看| 亚洲成人一区二区| 亚洲国产精品t66y| 在线播放国产精品二区一二区四区 | 欧美日产国产精品| 美女视频一区二区| 成人免费在线视频| 成人理论电影网| 国产一区二区三区久久久 | 亚洲最大成人综合| 久久一夜天堂av一区二区三区| 欧洲精品在线观看| 成人小视频在线| 久久精品国产亚洲aⅴ| 亚洲综合在线观看视频| 久久久久久久久久久99999| 欧美唯美清纯偷拍| 91一区二区三区在线播放| 老司机一区二区|