圆月山庄资源网 Design By www.vgjia.com
本地数据库创建订单表。
建议包含以下字段,参考官方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_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
2.调用pay_url方法创建订单,返回给客户端charge对象,客户端拿着charge对象去ping++ 平台支付
def confirm_and_payment order_no = params[:order_no] channel = params[:channel] if order_no.blank"参数不完整!") and return end order = Order.where(order_no: order_no).first if order.blank"订单不存在!")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"#{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
标签:
Ruby,支付
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
更新日志
2024年11月08日
2024年11月08日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]