
代码示例:
以下是使用 Ruby on Rails 在 Ping++ 平台实现支付的详细例子:
前置准备
- 创建 Ping++ 账号:访问 Ping++ 官网(https://www.pingxx.com),注册并获取账号。
- 获取 Ping++ API Key:在控制台(https://dashboard.pingxx.com)中,获取您的 API Key。
项目集成
- 安装 Ping++ Gem:在您的 Ruby on Rails 项目中,使用 Bundler 安装 Ping++ Gem。
gem 'pingplusplus' bundle install - 配置 Ping++ API Key:在项目的配置文件中设置 Ping++ API Key。
Pingplusplus.api_key = "YOUR_API_KEY"
创建支付订单
- 创建 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" # 商品描述 } ) - 获取支付 URL:通过 Charge 对象获取支付 URL,客户通过此 URL 完成支付。
payment_url = charge.payment_url - 重定向客户到支付 URL:将客户重定向到支付 URL。
redirect_to payment_url
处理支付结果
- 设置回调 URL:在 Rails 应用程序中设置回调 URL,用于接收 Ping++ 发送的支付结果通知。
# routes.rb post "/pingxx/notify", to: "pingxx#notify" - 处理回调通知:在对应的控制器中处理回调通知,验证签名并根据支付结果执行相应逻辑。
# 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 暴露给用户。
- 在处理支付结果时,要对订单状态进行严格验证,避免重复支付等问题。
- 根据业务需求选择合适的支付渠道和参数配置。
更多技术文章见公众号: 大城市小农民
1694

被折叠的 条评论
为什么被折叠?



