本地數據庫創建訂單表。
建議包含以下字段,參考官方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 :支付狀態,默認為falserefunded :退款狀態,默認為falsetime_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_no<<rand(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
新聞熱點
疑難解答