`
花花公子
  • 浏览: 132009 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用ActiveMerchant支持支付宝,财付通和快钱

阅读更多
2008-10-11更新,支持支付宝notify方法。http://www.iteye.com/post/693987

ActiveMerchant 很好很强大,但是网上介绍的都是信用卡支付的方式,对于国内这种类Paypal的支付方式很少。
这种支付方式在ActiveMerchant中称之为integration模式,可能是由于编写起来并不难,介绍它的文档很少,我编写的时候是完全按照paypal的代码写的。

http://code.google.com/p/activemerchant/issues/detail?id=114
是我提交的Patch,以支付宝为例,在使用前需要指定 ActiveMerchant::Billing::Integrations::Alipay::KEY和Alipay::ACCOUNT,具体这两个值放在哪里,根据个人喜好,直接放在插件中,或者放在environment.rb中,或者放在lib文件夹下require进来都可以。

使用的时候,需要在页面中使用下面这样的代码(参见 http://activemerchant.rubyforge.org/classes/ActiveMerchant/Billing/Integrations/ActionViewHelper.html)
 <% payment_service_for 1000, 'paypalemail@mystore.com',
                              :amount => 50.00,
                              :currency => 'CAD',
                              :service => :paypal,
                              :html => { :id => 'payment-form' } do |service| %>

   <% service.customer :first_name => 'Cody',
                      :last_name => 'Fauser',
                      :phone => '(555)555-5555',
                      :email => 'codyfauser@gmail.com' %>

   <% service.billing_address :city => 'Ottawa',
                             :address1 => '21 Snowy Brook Lane',
                             :address2 => 'Apt. 36',
                             :state => 'ON',
                             :country => 'CA',
                             :zip => 'K1J1E5' %>

   <% service.invoice '#1000' %>
   <% service.shipping '0.00' %>
   <% service.tax '0.00' %>

   <% service.notify_url url_for(:only_path => false, :action => 'notify') %>
   <% service.return_url url_for(:only_path => false, :action => 'done') %>
   <% service.cancel_return_url 'http://mystore.com' %>
   <% service.sign %>
 <% end %>

helper.rb中的工作也很重要,
mapping :tax, 'tax_no'

说明 service.tax '0.00' 会生成 <input type='hidden' name='tax_no' value='0.00'/>这样一个表单字段。
mapping :customer, :email => 'c_email', :address => 'c_address'

说明 service.customer :email => 'alipay@iteye.com', :address => '上海' 会生成
<input type='hidden' name='c_email' value='alipay@iteye.com'/>和
<input type='hidden' name='c_address' value='上海'/>两个字段。
对于不会用于生成Hash签名,基本不会变的字段,可以在helper的intialize方法中生成
def initialize(order, account, options = {})
  super
  add_field('bank_type', 0)
end

=> '<input type="hidden" name="bank_type" value="0"/>'


service.sign方法,是我为生成签名添加的。在这个方法里最后使用 add_field 'sign', sign把hash值填入到表单里。(好像只有国内的支付接口需要计算hash值)
# in lib/active_merchant/billing/integrations/tenpay.rb

def sign
            add_field('sign',
                      Digest::MD5.hexdigest("cmdno=#{cmdno}&date=#{date}&bargainor_id=#{account}" +
                      "&transaction_id=#{transaction_id}&sp_billno=#{order}&total_fee=#{amount}" +
                      "&fee_type=#{currency}&return_url=#{return_url}&attach=#{attach}&key=#{KEY}"))
end


返回方式有两种,notify和return。可以理解为异步和同步方式,一般notify方法还需要acknowlege,也就是通知对方收到。目前支付宝的notify模式尚未支持,若要使用需要参照paypal的实现。这里先看return模式。

Return类只需要两个方法 success? 和 message,使用的时候也很简单
def OrderController < ApplicationController
  include ActiveMerchant::Billing::Integrations

  def alipay_return
    r = Alipay::Return.new(request.query_string)
    unless @result = r.success?
      logger.warn(r.message)
    end
  end
分享到:
评论
15 楼 qichunren 2009-01-05  
我看了一下网银支付,比这个支付宝简单多了,而且只要手续费1%,
而支付宝签订的话,最起码是600元。
14 楼 boyjunqiang 2008-11-01  
最好做一个改进,就是在每个类的initialize方法中加入@param ||= param 这样所有的rails版本就都支持了
13 楼 boyjunqiang 2008-11-01  
楼主的rails版本还是1.2.3吧,我看所有的param都写成了@param,这个在2.0以上的rails就不支持了
12 楼 crax.sun 2008-10-24  
patch的时候找不到tenpay/helper.rb?

是不是我哪里弄错了呢?
11 楼 lvflying 2008-10-20  
Hi,

  很感谢你的这个patch, 我在 www.logoke.com 项目中用到了你这个,省了很多事情。 我按照paypal里的方法, 在notification class 中添加了一个acknowledge method, 在你的基础上又做了一个patch, 放在你那个之后。
10 楼 花花公子 2008-10-11  
这两天有空把前一段时间的修改重新做了一个patch,见附件。
lighthouse上也可以下载
http://jadedpixel.lighthouseapp.com/projects/11599-active-merchant/tickets/8-patch-additon-integrations-support-alipay-99bill-and-tenpay-all-in-china
怎样提交gateway支持请看这篇
http://github.com/Shopify/active_merchant/wikis/contributing

patch使用方法:
在active_merchant目录下(建议最新的从github.com上取下的版本)
git apply active_merchant_alipay_bill99_and_tenpay.diff
9 楼 李盈斐 2008-10-07  
cquaker 写道

支付宝和paypal比缺少很多东西,目前比较头疼的是没有批量打款的接口。



支付宝有批量打款的接口,我在项目中用了
8 楼 cquaker 2008-09-26  
花花公子 写道
right now 写道
我不太懂,我想请教下,这个支持网上银行的支付吗

否,网上支付不等于网上银行。等百付宝出来的,谁按照这个方式写一个百付宝支持的。


有个头疼的地方就是国内很多支付网关没有沙盒模式,往往都需要先签约后使用,支付宝就是一个例子,不知道百度的这个如何?
7 楼 cquaker 2008-09-26  
花花公子 写道
cquaker 写道
还有更新吗?最近在用alipay,说不定可以一起把代码完善一下
看到todo里面写着
It need two more works:

1.Add notifications support to alipay.

2.Complete the test

notifications支持已经加好了,其实很简单。测试还没有加,不过我有一个计算出支付宝需要的url的方法可以提供。

旧的代码还有不完善的地方,一直没愿意提交,争取十一前提交吧。

其实我这个东西就是按照PayPal的方式写的,写好以后发现支付宝就是学的PayPal。但是支付宝没有test模式,所以为了测试支付宝花了我0.01*20个大洋。


支付宝和paypal比缺少很多东西,目前比较头疼的是没有批量打款的接口。
6 楼 cquaker 2008-09-26  
<div class='quote_title'>right now 写道</div>
<div class='quote_div'>我不太懂,我想请教下,这个支持网上银行的支付吗</div>
<p><br/><br/>             <span style='font-size: small;'>这个不直接和网银打交道是和支付网关打交道的。</span></p>
<p> </p>
5 楼 花花公子 2008-09-25  
right now 写道
我不太懂,我想请教下,这个支持网上银行的支付吗

否,网上支付不等于网上银行。等百付宝出来的,谁按照这个方式写一个百付宝支持的。
4 楼 0701 2008-09-25  
我不太懂,我想请教下,这个支持网上银行的支付吗
3 楼 花花公子 2008-09-25  
cquaker 写道
还有更新吗?最近在用alipay,说不定可以一起把代码完善一下
看到todo里面写着
It need two more works:

1.Add notifications support to alipay.

2.Complete the test

notifications支持已经加好了,其实很简单。测试还没有加,不过我有一个计算出支付宝需要的url的方法可以提供。

旧的代码还有不完善的地方,一直没愿意提交,争取十一前提交吧。

其实我这个东西就是按照PayPal的方式写的,写好以后发现支付宝就是学的PayPal。但是支付宝没有test模式,所以为了测试支付宝花了我0.01*20个大洋。
2 楼 cquaker 2008-09-25  
还有更新吗?最近在用alipay,说不定可以一起把代码完善一下
看到todo里面写着
It need two more works:

1.Add notifications support to alipay.

2.Complete the test
1 楼 boyjunqiang 2008-09-02  
还有人这样用过吗?

相关推荐

    支付宝,财付通,快钱支付接口.rar

    本压缩包文件"支付宝,财付通,快钱支付接口.rar"包含支付宝、财付通和快钱这三家知名第三方支付平台的支付接口文档,旨在为开发者提供详尽的接入指南。以下是关于这些支付接口的详细说明: 1. **支付宝在线支付...

    c#版支付宝、财付通、快钱支付

    在这个C#版的支付解决方案中,我们涵盖了支付宝、财付通和快钱这三种主流的第三方支付平台,它们在中国市场占据了重要的地位。 首先,让我们来了解一下支付宝。支付宝是中国最大的第三方支付平台,由阿里巴巴集团...

    易宝支付宝财付通快钱云网等支付接口md5加密多用函数

    多数支付网关使用的都是标准的MD5加密,但也有特殊的加密方式。例如易宝使用hmac-md5,支付宝使用非标准的MD5加密。...其它的如财付通、云网、网银在线、NPS、快钱、贺喜等支付平台都可以使用标准的MD5.

    快钱接口C#.net

    "快钱接口C#.net"项目就是这样一个示例,它展示了如何使用C#编程语言和.NET框架来实现与快钱支付平台的集成。快钱是中国知名的第三方支付服务提供商,提供了多种支付解决方案,包括但不限于在线支付、快捷支付、扫码...

    快钱人民支付开发接口的文档和代码(PHP)

    PHP是互联网开发中广泛使用的编程语言,因此快钱提供了PHP版本的SDK和示例代码,方便开发者快速接入。 快钱人民支付开发接口的主要功能包括但不限于: 1. **支付接口**:支持各种支付方式,如快捷支付、网银支付、...

    NPS、快钱、支付宝,支付,电子商务实用ASP.NET 、PHP

    本文将深入探讨NPS(Net Payment Solutions)、快钱、支付宝这三种常见的支付方式,以及如何利用ASP.NET和PHP开发相关的电子商务应用。 首先,NPS是一种网络支付解决方案,通常为商家提供API接口,用于集成到自己的...

    快钱自动付款网关开发包

    7. **支付方式**:快钱支付可能支持多种支付方式,如信用卡、借记卡、快捷支付、微信支付、支付宝等,开发者需要根据用户需求和自身业务情况选择合适的支付渠道。 8. **测试环境**:在正式上线前,开发者需要在快钱...

    快钱支付(ios)接口

    快钱支付是面向移动应用,特别是iOS平台的一种便捷支付解决方案。这个支付接口允许开发者集成到他们的应用程序中,以便用户能够安全、...同时,快钱支付还会提供技术支持和更新,以适应不断变化的支付环境和技术需求。

    快钱支付接口(php)

    4. **验证与跳转**:快钱服务器接收到请求后,会验证商户信息和交易数据的合法性,然后返回一个验证结果。如果验证成功,会生成一个支付页面链接,用户会被引导至快钱支付页面完成支付操作。 5. **处理支付结果**:...

    快钱人民币支付网关开发包

    8. **快钱人民币支付网关开发包(高级版)**:这个高级版的开发包可能包含了更全面的功能和更精细的控制选项,例如支持更多的支付方式,或者提供了更详细的交易报告功能。 总的来说,使用快钱人民币支付网关开发包,...

    上海快钱技术支持资料

    - **使用对象**:主要面向快钱安全支付网关商户的网上应用开发人员、维护人员和管理人员。 - **技术支持**: - **联系方式**:技术支持邮箱:`support@99bill.com`;技术支持热线:`(021)58777299-864/876`;服务...

    快钱人民币支付网关开发包(高级版)

    同时,要遵守快钱的API使用规定,确保交易的合法性和合规性。 7. **调试和测试** 在实际部署前,开发者应利用快钱提供的测试环境进行调试,检查支付流程的每一个环节,确保在正式环境中能正常工作。这通常包括模拟...

    快钱支付接口-php版本

    - **申请商户编号与商户密钥**:在使用快钱支付接口前,必须向快钱公司申请获得唯一的商户编号(`$merchant_id`)及相应的商户密钥(`$merchant_key`)。这些信息将用于验证交易的安全性。 - **安全机制**:快钱支付...

    快钱人民币退款API

    需要注意与支付宝的差别,人民币网关快钱退款后,需要大约5个工作日。商务上具体对接时,可以咨询快钱技术,因为可能有变,比如为了提高用户体验,缩短时间。 并且退款后,快钱服务器不会回调,所以需要主动发起查询

    快钱人民币支付网关商户接口规范

    本文档旨在为使用快钱人民币支付网关的商户提供详细的接口规范指南,帮助商户的技术团队更好地理解和接入快钱支付系统。通过遵循本文档中的指导原则和技术细节,商户可以有效地集成快钱支付解决方案,实现安全、高效...

    快钱支付接口

    通过不断创新和发展,快钱已经能够提供种类繁多的支付工具和服务,包括但不限于人民币支付、外卡支付、神州行卡支付、联通充值卡支付以及VPOS支付等多种支付方式。这些支付工具不仅支持多种终端设备(如互联网、手机...

    有关电子商务网上支付的调研报告范本.doc

    **第三方支付**是另一种常见的支付方式,如支付宝、财付通和快钱。这些第三方支付平台为企业和个人提供了一个中间渠道,确保交易的安全性和便利性。例如,支付宝通过其“第三方担保交易模式”保障交易安全,用户数量...

    第三方接口:NPS、快钱、支付宝

    第三方接口:NPS、快钱、支付宝三种在线支付接口附近,内有详细文档说明

    快钱企业自助接入

    1. **网银接入**:快钱提供的网银接入服务允许消费者使用个人银行卡进行在线交易。这意味着企业客户可以集成快钱的支付接口,使得消费者在购买商品或服务时能够直接通过网银转账完成支付,提高支付效率和交易安全性...

Global site tag (gtag.js) - Google Analytics