您当前的位置:首页 > 互联网教程

android开发支付宝付款实时通知是怎么实现的

发布时间:2025-05-16 20:08:49    发布人:远客网络

android开发支付宝付款实时通知是怎么实现的

一、android开发支付宝付款实时通知是怎么实现的

到支付宝官网,下载支付宝集成开发包,看懂里面的关键代码

由于android设备一般用的都是无线支付,所有我们申请的就是支付宝无线快捷支付接口。

如果链接失效,你可以到支付宝官网商家服务模块中找到快捷支付(无线)这个服务。

下载集成开发包,解压发现里面有客户端的demo即说明文档,在客户端的demo中找到Android_SDK,这个就是你要用到的支付宝接口及demo。

把demo(alipay_sdk_demo)和(alipay_lib)导入到你的eclipse里面,然后你可以试着运行一遍demo(alipay_sdk_demo),只要把这个demo搞懂了,你就会调用这个支付宝接口了。至于到时候如何集成到你的项目里面,文档上说明很详细,按着文档上一步一步来就行了。我的建议是先把这个demo弄懂再设计你的项目,看看调用接口时需要哪些数据,这样也有利于你一开始设计数据。

下面来简单的介绍下接口demo里面的结构。

其中,Base64.java、Result.java、Rsa.java这3个类不需要动,需要用到的,到时候直接放到你项目里面就行了,如果你想了解下它们你也可以看看。重点就是ExternalPartner.java和Keys.java这两个类。先来说说Keys.java类吧。

Key.java这个类等你申请支付宝签约成功后再配置,先放在这不用管,如何配置我注释里面已经的很明白了。

然后是ExternalPartner.java这个类。这个类其实也很简单,你运行这个demo会发现就是一个listview里面加载的很多商品信息,点击一款商品就调用会支付宝接口(因为Key.java未配置,所以你现在估计调用不成功)。我们找到listview的点击事件的方法就找到调用支付宝的入口了

kagecom.alipay.android.msp.demo;

importcom.alipay.android.app.sdk.AliPay;

publicclassExternalPartnerextendsActivityimplementsOnItemClickListener,

publicstaticfinalStringTAG="alipay-sdk";

privatestaticfinalintRQF_PAY=1;

privatestaticfinalintRQF_LOGIN=2;

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.external_partner);

*@seeandroid.app.Activity#onCreateOptionsMenu(android.view.Menu)

publicbooleanonCreateOptionsMenu(Menumenu){

menu.add(Menu.NONE,Menu.FIRST,1,"快速登录");

*@seeandroid.app.Activity#onOptionsItemSelected(android.view.MenuItem)

publicbooleanonOptionsItemSelected(MenuItemitem){

setContentView(R.layout.trustlogin);

mUserId=(EditText)findViewById(R.id.user_id);

mLogon=(Button)findViewById(R.id.get_token);

mLogon.setOnClickListener(this);

XmlResourceParserparser=getResources().getXml(R.xml.products);

ArrayList<Product>products=newArrayList<Product>();

inteventType=parser.getEventType();

while(eventType!=XmlPullParser.END_DOCUMENT){

if(eventType==XmlPullParser.START_TAG

&&parser.getName().equalsIgnoreCase("product")){

product.subject=parser.getAttributeValue(0);

product.body=parser.getAttributeValue(1);

product.price=parser.getAttributeValue(2);

sProducts=newProduct[products.size()];

}catch(XmlPullParserExceptione){

//listview点击事件,里面调用的支付宝接口

publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intposition,

Log.i("ExternalPartner","onItemClick");

Stringinfo=getNewOrderInfo(position);//这个是订单信息

Stringsign=Rsa.sign(info,Keys.PRIVATE);//签名加密订单信息什么的

info+="&sign=\""+sign+"\"&"+getSignType();

Log.i("ExternalPartner","startpay");

AliPayalipay=newAliPay(ExternalPartner.this,mHandler);//这个应该就是支付宝接口了,哈哈,支付宝现在把很多功能都封装了,所以省了很多代码

//设置为沙箱模式,不设置默认为线上环境

Stringresult=alipay.pay(orderInfo);//这个是返回的结果,你到时候可以根据这个结果加以操作你想操作的,然后基本就完了,其他的你想附加的功能你看着写吧,现在Key.java配置好就能调用快捷支付了

//后面的这些代码可以改成你自己的,也可以在它们的基础上改

Toast.makeText(ExternalPartner.this,R.string.remote_call_failed,

privateStringgetNewOrderInfo(intposition){

StringBuildersb=newStringBuilder();

sb.append(Keys.DEFAULT_PARTNER);//合作身份者id

sb.append("\"&out_trade_no=\"");

sb.append(getOutTradeNo());//这个是订单编号

sb.append("\"&subject=\"");

sb.append(sProducts[position].subject);//这个应该是商品名称

sb.append(sProducts[position].body);//这个应该是商品的描述,具体你可以参考demo

sb.append("\"&total_fee=\"");

sb.append(sProducts[position].price.replace("一口价:",""));//这个是要付款的金额,到时候你调用的时候改下就行了

sb.append("\"¬ify_url=\"");

sb.append(URLEncoder.encode(""));//服务器异步通知页面,完成交易后通知商家服务器的页面,以post的形式将商品订单信息发送到指定页面,手机客户端不需要可以先放在这不管。

是不是,这个类很简单看懂吧,就一listview。调用支付宝接口的方法就在onItemClick()方法里面,如果你是一个按钮的话换成按钮点击事件就行了,主要的细节我注释已写。现在你要想的是,需要哪些数据,提供给onItemClick()方法里面的Stringinfo。demo里面的数据是getNewOrderInfo(intposition)这个方法提供的,你可以自己提供或者在上面修改下。

现在,你已经知道代码是如何调用支付宝接口了。接下来,是如何把这些集成到你的项目中去。

二、手机支付的国内发展

随着3G技术的兴起和发展,带来移动电子商务的兴起,使手机成为更便捷的交易终端。最近几年,中国互联网高速发展,普及率不断提高为电子商务的高速发展打下了最坚实的基础。随着网上商务活动的不断发展壮大,需要政策法规来规范网上市场的发展。国家也在这几年不断出台政策及相关法律来规范网上市场如《电子签名法》。电子商务发展所需要的技术及物流业在这几年都得到飞快发展,物流是电子商务得已进行的保障,没有物流业的发展,网上交易就无法进行,虽然现在物流业的发展存在诸多的问题,但市场是不断发展和完善的,并且现在政府也在出台政策解决物流业发展的诸多问题。

有分析机构认为,纵观乐富支付的战略布局,在移动支付领域,乐富支付仍然沿袭其一贯走行业发展的路线,通过手机刷卡器等移动支付产品与其他互联网支付、pos收单等原有支付产品在行业拓展和企业服务过程中形成良好的协同效能。特别是其推出的移动支付产品,都是以中小微企业需求为核心,这与大洋彼岸的Square模式和成长路径也有异曲同工之处。其安全方面,通过数字证书、手机验证、金融级硬件加密机、SSL传输这些先进的加密技术与验证措施产品,切实地保护用户账户安全。在资金安全层面,乐富支付已与工商银行、建设银行、招商银行、交通银行、农业银行等国内20余家金融机构合作,支持各大银行互联网支付业务,打造跨银行、跨地域、跨网络的信息化平台。并通过金融级安全规则监控全部交易行为;严控商户资质,杜绝违法商户;技术手段防控异常交易;高度提升用户的资金安全系数和风险控制力。由上图可见,公共事业缴费为消费者最易接受的支付方式,占13.9%的份额。国内众多第三方支付企业以及运营商都在加紧布局手机移动支付应用。如今,通过手机支付完成消费正逐渐成为人们的习惯,其中增长潜力最大的,就在于手机银行业务的使用。手机支付这一新兴的购物模式不仅是网络购物的延伸,更成为都市年轻人群快节奏生活方式的象征之一。

我国手机支付行业发展前景十分广阔,目前已成为许多年轻人最热衷的消费方式之一。未来在手机支付业务中,支付额度将逐渐向大额支付领域延伸,通过移动支付能够购买到的实体商品种类逐渐丰富,支付业务种类也会逐渐从手机钱包扩展到移动借记卡、移动信用卡等。预计未来几年我国手机支付市场将迎来爆发式增长。在发达国家,Visa及其合作伙伴向消费者提供移动支付服务,帮助他们更好地管理自己的Visa账户,并改善他们的支付体验。这些服务包括根据客户的生活方式和地域定制的商户优惠信息、以及通过短信方式直接发送到消费者手机上的交易提醒和简便的手机支付服务等。

在新兴的发展中国家,Visa手机支付服务帮助更多的人融入到主流经济中。手机转账为各个家庭提供了更加方便、安全的汇款服务;使印度的消费者无需排队就能缴费和购买车票。Visa手机支付服务对于推动社会的变化有着广泛的和深渊的影响,借助安全、可靠的数字货币,它使没有银行账户的群体得以融入到全球经济发展的大潮之中。

世界各地对于手机支付服务的需求与日俱增。Visa与行业合作伙伴携手,通过了解和满足各地的特殊需求,为消费者提供手机支付服务。例如,在印度,Visa与巴帝电信、印度工业信贷投资银行、HDFC银行、渣打银行和支付平台提供商mChek合作,开通了Visa远程支付服务,该项服务支持手机预付卡充值、缴费和其他交易。在日本,Visa与日本的大型零售商和金融机构联合推出了商用Visa非接触支付服务,从2006年9月起,日本三大移动网络的用户都可享受该项服务。另外在韩国、马来西亚、秘鲁、俄罗斯等国,Visa也与当地合作伙伴成功推出了多种本地化的手机支付服务。

2010年5月17日,在国际电信日来临之际北京联通与北京市政交通一卡通公司联合推出了一项“联通手机一卡通”服务。据悉这是一款基于SIM卡一体化移动支付产品,该产品不仅支持正常的手机通信,同时也支持公交、地铁、小额支付“刷”机支付。

“联通手机一卡通”具体包括一部联通定制手机终端、一张智能SIM卡以及30元一卡通账户使用费。与市面上普通手机不同的是,这种定制手机根据手机支付的需求进行了少许改造,在后背加装了一个天线。手机里的SIM卡则是获得2009年中国通信业成功解决方案奖的握奇SIMpass™双界面卡。

北京联通表示,“联通手机一卡通”业务目前处于试用阶段,试用阶段此业务只有申请办理亲情随身手机版或亲情无限手机版的用户并承诺新业务在网12个月才可享受此项业务。 Visa和Visa欧洲于2010年底宣布正式推出与DeviceFidelity公司开发的In2Pay microSD解决方案的非接触式移动支付的商业应用。这是Visa历史上首次将非接触式移动支付解决方案用于相关兼容产品,该方案将在美国和一些指定市场由金融机构推出并正式投入商业应用。

在与总部位于德克萨斯州的DeviceFidelity公司携手合作、进行了长达18个月的技术开发,并在美国、欧洲和亚洲的领先金融机构进行了一系列试验之后,Visa最终得以针对多款领先智能手机推出了In2Pay microSD解决方案的商业应用。

2011年五月,据知情人士透露,谷歌或将与万事达合作推出一款移动支付系统,可以使其用户在商店内用Android手机直接付款。

路透社援引该消息人士原话称,谷歌此次的移动支付业务将与全球第二大信用卡发卡机构万事达(Master Card)合作推出。今年三月,《华尔街日报》也曾报道,谷歌已经与万事达和花旗集团联合开发移动支付系统。

同年2011年6月10日,据美国媒体报道,美国最大移动运营商Verizon无线10日宣布,公司已与移动支付公司Payfone签署合作协议。根据该协议,Verizon无线的客户将可以利用手机通过移动互联网购买数字和实体物品。购买数字商品的账单将会被记到Verizon无线用户的月账单中,而用户购买实体商品的费用可以由其信用卡来支付。

北京时间6月9日,Visa宣布同意以1.1亿美元现金收购南非手机金融服务提供商Fundamo。在另外一份声明中,Fundamo称已与为较发达地区提供手机金融解决方案的Monitise公司达成了一份新的长期商业合作协议。

Visa在声明中指出,收购Fundamo以及扩大与Monitise的合作关系,使Visa能向用户提供最佳的金融服务及支付服务。这些用户遍布世界各地,普通手机用户可享受基本服务,而智能手机用户则可享受更高级的服务。

Fundamo的平台能够向全球无银行账户及拥有银行账户的消费者提供手机金融服务,包括个人对个人支付,话费充值、账单支付以及跨行服务。Fundamo称其向40多个国家提供50种手机金融服务,其中包括非洲、亚洲以及中东地区的27个国家。Fundamo拥有超过500万注册用户,预计手机金融服务的用户基数有望超过1.8亿。

同时,Monitise与Visa表示他们将为美国的Visa DPS客户提供手机银行解决方案,Visa DPS是Visa推出的借记及预付处理平台。

三、如何开发Java Card移动支付应用

移动支付方案一般分SWP方案和全终端方案,由于利益驱动因素运营商更喜欢SWP方案。

应用协议数据单元(APDU)、传输协议数据单元(TPDU)IC卡的应用越来越广泛,从存储卡到逻辑加密卡,目前 CPU卡已经逐渐在应用中占据主导地位。CPU卡根据通讯协议可分为两种:接触式和非接触式。接触式CPU卡主要采用两种通讯协议:T=0和T=1通讯协议。T=0是异步半双工字符传输协议,T=1是异步半双工块传输协议。目前T=0通讯协议的应用较为广泛,国内外大多数CPU卡都支持该协议,在金融交易中也采用这种通讯协议。

Java Card虚拟机(JCVM)只支持Java程序设计语言的一个有限子集,包括对象、继承、动态对象创建、接口和异常等。

原文转载自: