`
南京老油条
  • 浏览: 60723 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ruby实现支付宝手机网页支付

阅读更多

本文旨在介绍如何完成在应用Ruby开发的网站(非Rails亦可)内集成支付宝的手机网页支付功能.

 

1.安装GEM包:

 

gem 'alipay_mobile', :github => 'https://github.com/oldfritter/alipay_mobile'

 2.配置

 

 

AlipayMobile.pid = 'YOUR_PID'
AlipayMobile.key = 'YOUR_KEY'
AlipayMobile.seller_email = 'YOUR_SELLER_EMAIL'

 3.完成支付业务

options = {req_id: orders.first.payment_sn, format: 'xml', v: '2.0', sec_id: 'MD5'}
options[:req_data] = "<direct_trade_create_req><subject>#{orders.collect{|order|order.subject}.join(",").gsub(' ','')}</subject><out_trade_no>#{orders.first.out_trade_no}</out_trade_no><total_fee>#{orders.collect{|order|order.order_total_price}.sum}</total_fee><seller_account_name>#{Alipay.seller_email}</seller_account_name><call_back_url>#{orders.first.call_back_url{payment = 'alipay_mobile'}}</call_back_url><notify_url>#{orders.first.notify_url{payment = 'alipay_mobile'}}</notify_url><out_user>#{orders.first.out_user}</out_user><merchant_url>#{orders.first.merchant_url{payment = 'alipay_mobile'}}</merchant_url><pay_expire>3600</pay_expire><payment_type>1</payment_type></direct_trade_create_req>"

#获取token:
url = AlipayMobile::Service.mobile_web_instant_credit_authorization(options)
@token = open(url) {|resp|return Nokogiri::HTML(URI.unescape resp.read).css('request_token').text}


#交易
options = {
    service: 'alipay.wap.auth.authAndExecute',
    _input_charset: 'utf-8',
    partner: AlipayMobile.pid,
    seller_email: AlipayMobile.seller_email,
    req_id: orders.first.payment_sn, 
    format: 'xml', 
    v: '2.0', 
    sec_id: 'MD5'
}           
options[:req_data] = "<auth_and_execute_req><request_token>#{@token}</request_token></auth_and_execute_req>"

payment_url = AlipayMobile::Service.mobile_web_instant_credit_transaction_url(options)
redirect_to payment_url

 4.验证支付宝的返回

# This is a action in the controller.
def alipay_mobile_notify
    return false unless AlipayMobile::Notify.verify? params
    nokogiri = Nokogiri::XML params['notify_data']
    payment_history = PaymentHistory.where(payment_sn: nokogiri.css('out_trade_no').text).first # PaymentHistory is a Model in my project.
    if nokogiri.css('trade_status').text == 'TRADE_FINISHED' || nokogiri.css('trade_status').text == 'TRADE_SUCCESS'
        .....your code....
    end
    render text: 'success' # Here must return 'success'.
end

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    二手交易网站

    - **API 接口**:与第三方支付平台(如支付宝、微信支付)的接口集成,实现支付功能。 - **安全技术**:HTTPS 加密通信、CSRF 防御、XSS 防护等保障用户信息安全。 - **缓存**:Redis 或 Memcached 可用于提高数据...

    毕业设计&课设--毕业设计之鲜花销售网站的设计与实现.zip

    - 结算与支付:集成第三方支付接口,如支付宝、微信支付,完成在线交易。 - 订单处理:订单创建、状态跟踪、发货通知等功能,涉及后台订单管理系统。 7. 物流与配送: - 配送地址管理:用户保存和管理多个配送...

    手机移动商城

    4. 支付系统:集成多种支付方式,如信用卡、支付宝、微信支付等,确保支付安全。 5. 订单管理:用户可以查看订单状态,跟踪物流,申请退款或退货。 6. 评价系统:用户购买后可对商品和服务进行评价,促进商家服务...

    在线生鲜销售网站模板是一款生活必需品专业网站网站模板下载 .rar

    5. **支付集成**:支持多种支付方式,如支付宝、微信支付、银行卡支付等,提高交易成功率。 6. **配送信息**:提供配送范围、运费政策和预计送达时间,让用户了解订单物流状态。 7. **用户账户管理**:用户可以...

    购物软件框架及软件源码

    7. **支付接口集成**:为了完成交易,购物网站需要与第三方支付平台如PayPal、支付宝或微信支付等进行接口集成,实现安全的在线支付流程。 8. **商品推荐与搜索**:通过数据分析和机器学习算法,可以实现个性化商品...

    网云煎饼

    8. **支付集成**:平台可能需要集成支付宝、微信支付等常见支付方式,这需要对接相应的支付SDK,处理支付回调和异常情况。 9. **订单追踪**:为了提供良好的服务,系统应能追踪订单状态,从下单到制作、配送全程...

    SPA精油在线购物网站模板.zip

    - 结算与支付:集成第三方支付接口,如支付宝、微信支付,确保交易安全。 5. **数据库集成**: - 商品信息、用户数据、订单记录等都需要存储在数据库中,可能使用MySQL、SQLite或PostgreSQL等关系型数据库。 - ...

    都市书城系统.zip

    5. **支付集成**:考虑到购书功能,系统可能需要集成第三方支付网关如支付宝、微信支付或PayPal,实现安全的在线支付。 6. **权限与认证**:用户注册、登录功能需要实现,可能涉及到OAuth2.0、JWT(JSON Web Tokens...

    qiche-xiaoshou-web.rar_汽车销售

    6. **支付集成**:为了处理在线交易,网站可能集成了支付宝、微信支付或PayPal等第三方支付接口,确保交易安全便捷。 7. **用户认证与权限管理**:后台系统可能有完善的用户认证机制,如OAuth2.0,以及角色和权限...

    完整的网上商店源码

    7. **支付集成**:"交易"标签表明源码可能集成了第三方支付接口,如支付宝、微信支付、PayPal等,这涉及到API调用、支付状态同步、安全交易处理等。 8. **订单处理**:从下单到发货,订单系统需管理订单状态(待...

    iShopiSell:供用户购买和出售其他用户产品的网站

    - **支付集成**:为了保证交易顺利,iShopiSell需要集成可靠的支付网关,如支付宝、微信支付或PayPal,确保资金安全。 - **评价系统**:用户可以对交易进行评价,提高平台信誉度,帮助其他用户做出购买决策。 - *...

Global site tag (gtag.js) - Google Analytics