Ruby on Rails在Ping ++ 平台实现支付例子解析

在这里插入图片描述

代码示例:

以下是使用 Ruby on Rails 在 Ping++ 平台实现支付的详细例子:

前置准备

  1. 创建 Ping++ 账号:访问 Ping++ 官网(https://www.pingxx.com),注册并获取账号。
  2. 获取 Ping++ API Key:在控制台(https://dashboard.pingxx.com)中,获取您的 API Key。

项目集成

  1. 安装 Ping++ Gem:在您的 Ruby on Rails 项目中,使用 Bundler 安装 Ping++ Gem。
    gem 'pingplusplus'
    bundle install
    
  2. 配置 Ping++ API Key:在项目的配置文件中设置 Ping++ API Key。
    Pingplusplus.api_key = "YOUR_API_KEY"
    

创建支付订单

  1. 创建 Charge 对象:使用 Ping++ API 创建 Charge 对象,以下是示例代码。
    charge = Pingplusplus::Charge.create(
        {
            order_no: "YOUR_ORDER_NO", # 订单号
            amount: 100, # 以分为单位
            currency: "cny", # 货币类型
            channel: "wx", # 支付渠道(如微信支付)
            client_ip: "YOUR_CLIENT_IP", # 客户端 IP
            subject: "YOUR_SUBJECT", # 商品主题
            body: "YOUR_BODY" # 商品描述
        }
    )
    
  2. 获取支付 URL:通过 Charge 对象获取支付 URL,客户通过此 URL 完成支付。
    payment_url = charge.payment_url
    
  3. 重定向客户到支付 URL:将客户重定向到支付 URL。
    redirect_to payment_url
    

处理支付结果

  1. 设置回调 URL:在 Rails 应用程序中设置回调 URL,用于接收 Ping++ 发送的支付结果通知。
    # routes.rb
    post "/pingxx/notify", to: "pingxx#notify"
    
  2. 处理回调通知:在对应的控制器中处理回调通知,验证签名并根据支付结果执行相应逻辑。
    # pingxx_controller.rb
    def notify
        data = request.body.read
        signature = request.headers["X-Pingplusplus-Signature"]
        if Pingplusplus.verify_signature(data, signature)
            charge = Pingplusplus::Charge.retrieve(params[:id])
            if charge.paid?
                # 处理已支付的订单
            else
                # 处理未支付的订单
            end
        else
            render text: "Invalid signature"
        end
    end
    

测试支付功能

使用测试环境的 API Key 和测试用例进行测试,确保支付流程正常工作。

注意事项

  • 确保在生产环境中使用正确的 API Key,并且不要将测试环境的 API Key 暴露给用户。
  • 在处理支付结果时,要对订单状态进行严格验证,避免重复支付等问题。
  • 根据业务需求选择合适的支付渠道和参数配置。
    更多技术文章见公众号: 大城市小农民
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔丹搞IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值