支付宝集成功能

android 应用中加入支付功能(支付宝集成)

2014-03-27 10:15:46|  分类: Android深入学习 |举报 |字号 订阅

注意事项
1.添加android.permission.INTERNET权限和android.permission.ACCESS_NETWORK_STATE权限
2.代码中出现注释的地方重点看,没注释的地方可以不看
3.想获取支付宝合作商户ID,及支付宝公钥请点击支付宝链接,生成密钥及PKCS8转码工具在文档中

1.下载官方架包和说明文档

到支付宝官网https://b.alipay.com/order/techService.htm?channel=psl
载(快捷支付(无线))开发包,我们主要是用到 WS_SECURE_PAY_SDK\客户端demo\Android_SDK
目录下的alipay.jar 和
WS_SECURE_PAY_SDK\客户端demo\Android_SDK\alipay_sdk_demo\assets下的
alipay_msp.apk,这两个文件是我们不能修改的支付宝api和安装包。

2. 商户签约

3.密钥配置

4.引用jar和包含安装包
    (1).新建android工程;
    (2).copy上面说的alipay.jar到工程的libs目录下,并在java build path中通过Add External JARs找到并引用该jar;
    (3).copy上面说的alipay_msp.apk安装包到assets目录下,后面配置路径用到。

如果libs和assets目录没有,手动建立者两个目录。

5.调用代码整理
   http://blog.csdn.net/simdanfeg/article/details/9011603

一、       支付宝平台的集成

在技术集成之前,商户需要在https://ms.alipay.com进行注册,并签约安全支付服务。签约成功后可获取支付宝分配的合作商户ID(PartnerID),账户ID(SellerID),调用接口时使用。

支付细节的实现,主要通过支付宝提供的一个支付安全服务安装包alipay_plugin_20120428msp.apk,首次使用,首先检查是否安装此插件,没有会提示安装。具体的支付细节,在这个插件内完成。大部分的支付平台也都是采用的这种方式。

调用支付宝的接口进行支付,主要有以下几个步骤

1.  将商户ID,收款帐号,外部订单号,商品名称,商品介绍,价格,通知地址封装成订单信息

2.  对订单信息进行签名

3.  将订单信息,签名,签名方式封装成请求参数

4.  调用pay方法。

主要流程图如下:

支付接口pay方法的调用如下:


。。。

// start pay for this order.

// 根据订单信息开始进行支付

try {

// prepare the order info.

// 准备订单信息

String orderInfo = getOrderInfo(position);

// 这里根据签名方式对订单信息进行签名

String signType = getSignType();

String strsign = sign(signType, orderInfo);

Log.v("sign:", strsign);

// 对签名进行编码

strsign = URLEncoder.encode(strsign);

// 组装好参数

String info = orderInfo + "&sign=" + "\"" + strsign + "\"" + "&"

+ getSignType();

Log.v("orderInfo:", info);

// start the pay.

// 调用pay方法进行支付

MobileSecurePayer msp = new MobileSecurePayer();

boolean bRet = msp.pay(info, mHandler, AlixId.RQF_PAY, this);

if (bRet) {

// show the progress bar to indicate that we have started

// paying.

// 显示“正在支付”进度条

closeProgress();

mProgress = BaseHelper.showProgress(this, null, "正在支付", false,

true);

} else

;

} catch (Exception ex) {

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

Toast.LENGTH_SHORT).show();

}

。。。


/**

* 向支付宝发送支付请求

*

* @param strOrderInfo

*            订单信息

* @param callback

*            回调handler

* @param myWhat

*            回调信息

* @param activity

*            目标activity

* @return

*/

public boolean pay(final String strOrderInfo, final Handler callback,

final int myWhat, final Activity activity) {

if (mbPaying)

return false;

mbPaying = true;

//

mActivity = activity;

// bind the service.

// 绑定服务

if (mAlixPay == null) {

// 绑定安全支付服务需要获取上下文环境,

// 如果绑定不成功使用mActivity.getApplicationContext().bindService

// 解绑时同理

mActivity.getApplicationContext().bindService(

new Intent(IAlixPay.class.getName()), mAlixPayConnection,

Context.BIND_AUTO_CREATE);

}

// else ok.

// 实例一个线程来进行支付

new Thread(new Runnable() {

public void run() {

try {

// wait for the service bind operation to completely

// finished.

// Note: this is important,otherwise the next mAlixPay.Pay()

// will fail.

// 等待安全支付服务绑定操作结束

// 注意:这里很重要,否则mAlixPay.Pay()方法会失败

synchronized (lock) {

if (mAlixPay == null)

lock.wait();

}

// register a Callback for the service.

// 为安全支付服务注册一个回调

mAlixPay.registerCallback(mCallback);

// call the MobileSecurePay service.

// 调用安全支付服务的pay方法

String strRet = mAlixPay.Pay(strOrderInfo);

BaseHelper.log(TAG, "After Pay: " + strRet);

// set the flag to indicate that we have finished.

// unregister the Callback, and unbind the service.

// 将mbPaying置为false,表示支付结束

// 移除回调的注册,解绑安全支付服务

mbPaying = false;

mAlixPay.unregisterCallback(mCallback);

mActivity.getApplicationContext().unbindService(

mAlixPayConnection);

// send the result back to caller.

// 发送交易结果

Message msg = new Message();

msg.what = myWhat;

msg.obj = strRet;

callback.sendMessage(msg);

} catch (Exception e) {

e.printStackTrace();

// send the result back to caller.

// 发送交易结果

Message msg = new Message();

msg.what = myWhat;

msg.obj = e.toString();

callback.sendMessage(msg);

}

}

}).start();

return true;

}

调用了支付服务之后,有两种方式返回交易结果:

1.        支付结果作为接口返回的字符串返回。返回的参数包含在result字符串中,具体再进行解析。

2.  支付宝服务器通知。商户需要提供一个http协议的接口,包含在参数里传递给安全支
付,即notify_url。支付宝服务器在支付完成后,会用POST方法调用notufy_url,以xml为数据格式传输支付结果。需要注意的是,商
户服务器收到支付宝发的通知之后,需要返回一个纯字符串“success”,不然支付宝的服务器会持续调用七次回调url提供的接口。

集成需要的交易费用方面0-1万元内是2.5%的费率,1-10万是2.4%,10-100万是2.2%,100万以上2.0%。

时间: 2024-10-10 15:53:30

支付宝集成功能的相关文章

ios集成支付宝的功能

1.很多的项目现在要集成第三方的sdk来完成,今天我看了一下支付宝,应用了支付宝的功能,接下来给大家讲解下如何集成支付宝: 2.首先要和支付宝签约:(支持企业的账号),邮件得到一系列的东西:(所有的值在支付宝回复的邮件里面:注意,建议除appScheme以外的字段都从服务器请求): 3.第二你要下载AlipaySDK包,支付宝中心下载: 4.将你的下载的sdk导入到你的项目中去: 5.然后运行一下会报错,一个是order.h 还有一个是:找不到rsa.h文件: 解决方案: order.h 的解决

SpringSide集成支付宝支付功能

网络购物很流行,那么最流行的支付手段估计应该是支付宝了,那么怎么样将支付宝集成到自己的环境中呢,今天我来讲一下如何在springside框架中集成支付宝支付功能. 首先,我们去支付宝商家服务页面去注册和申请支付功能,并在那里下载sdk开发包https://b.alipay.com/order/productDetail.htm?productId=2012111200373124,这个是支付宝的即时到账收款功能,然后下面有一个流程的介绍,我们选择下面的技术集成,先下载sdk开发包,下载完成之后解

Thinkphp集成手机支付宝接口功能

最近做微商城,需要实现手机wap支付功能,选择的是支付宝的接口支付功能.这里是我用的是支付宝“手机网站支付”产品(注:该产品要支付宝企业账号才能申请),具体步骤如下: 一.下载支付宝接口包 https://b.alipay.com/order/productDetail.htm?productId=2013080604609688 二.重新整理接口包文件 下载下来的接口包文件有很多语言的源码 注:openssl用来生成公私钥,RSA签名才使用.这里我们用的MD5签名,所有该文件用不到. 我们选择

支付方式(2)——支付宝集成及使用

每一个支付平台都有自己的加密.解密的原理:还有各种签名的原理:通过各种内容发送数据,防止恶意攻击等功能的原理. 接下来对于部署支付方式,首先要分清几个名词: 集成接入:支付宝已经集成好各种原理和函数,集成一个个的具体的功能. 比如:支付宝的即时到账.当面付.分享给好友支付.移动登陆等.具体详见:支付宝集成接入 下载DEMO后可以通过样例测试各种功能,在理解支付原理的情况下,对DEMO稍加修改就可以整合到自己的项目中了. 支付宝平台的SDK的介绍: SDK已经对加签验签逻辑做了封装,使用SDK可直

iOS开发之支付宝集成

项目中要用到支付功能,需要支付宝,微信,银联三大支付,所以打算总结一下,写两篇文章,方便以后的查阅, 大家在做的时候也能稍微参考下,用到的地方避免再次被坑.这是第二篇支付宝集成,第一篇银联支付在这里.本来要用那个ping++的神器,可以集成各种支付手段,异常的方便,但是考虑到安全性问题的话,支付的渠道还是不让第三方参与的好,不然会不安全,于是就苦逼地慢慢的一个一个集成了....这里就代理支付宝的集成过程: 刚开始以为支付宝集成还是比较简单的,看了几个文章,网上的各位大神也是各种秀操作,说集成很简

iOS支付宝集成详细流程

实现支付宝支付的准备工作: 1.向支付宝签约,成为支付宝的商户 签约完成后,支付宝会提供一些必要的数据给我们 商户ID:partner 账号ID:seller 即支付宝账号 签约需要营业执照 2.获取支付相关的  私钥和密钥,这两个东西为了数据安全 上面这几个东西只要签约成功就可以看到 3.下载支付宝的SDK 下载网址: http://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1 上面部分是准备工作

android 支付宝集成 使用常见错误

1:自己最近在做了支付,遇到了一下问题先总结如下 第一条: Android快捷支付SDK Demo resultStatus={4001};memo={参数错误};result={}问题 分析:填写的支付宝pkcs8编码的私钥 有问题,或者对应的公钥没有上传至支付宝造成的. 后台处理的必须有这个步骤.上传公钥到支付宝 第二条: java.lang.NoClassDefFoundError: com.alipay.android.app.lib.ResourceMap 分析:没有加入android

支付宝集成——如何在回调地址中使用自定义参数

支付宝集成——如何在回调地址中使用自定义参数 来源 http://www.solagirl.net/use-custom-para-in-alipay-return-url.html 2012 年 8 月 15 日 By Sola 支付宝集成时,有同步返回地址return_url和异步通知地址notify_url,这两个地址中的参数与签名验证有非常大的关系,在支付宝的说明中,强调return_url不可以有自定义参数,否则会导致sign和mysign不相等,但有时我们需要一些自定义参数来做判断,

django实现支付宝付款功能

支付宝支付功能 登录支付宝官网开发平台 下载SDK, 支付宝并没有python版本SDK SDK有实例和代码. 没有python则自己写,或者去github找. 本次利用alipay这个组件. 先安装一个pycrytodome pip3 install pycrytodome 如果真实环境,按上面这个来注册. 测试环境需要用沙箱环境. 向支付宝提交的这个链接,在测试模式有dev,生产环境删掉dev 公钥复制到支付宝里,私钥存到自己django文件中,自己文件的公钥是来自支付宝的公钥. 上面沙箱环