android支付宝调用
Ⅰ android怎么和支付宝实现接口对接
首先用电脑充值钱到支付宝。然后手机就可以支付了,如果您是免u顿的网银,可跳过充值到支付宝的步骤
Ⅱ android怎么和支付宝实现接口对接
1.下载官方架包和说明文档
其实官方已经提供了安装指南,
里面有有个pdf,详细说明了说用指南,写的比较详细,可以重点参考。
下载下来,我们主要是用到Android(20120104)目录下的alipay_plugin.jar和AppDemo/assets下的alipay_plugin223_0309.apk,这两个文件是我们不能修改的支付宝api和安装包。
2. 商户签约
现在的安全机制,都是这样,客户端需要先和服务端请求验证后才能进行进一步操作,oauth也是如此。
打开登陆支付宝,点击签约入口,选择"应用类产品",填写并等待审核,获取商户ID和账户ID。
签约的时候还要向需要提供实名认证和上传应用,所以我建议先把应用做好了,最后再集成支付宝。
我大概等了1-2天审核,审核是失败的,回复是应用类型啥的应该是"虚拟货币",我改成那个马上自动就审核通过了。
3.密钥配置
解压openssl-0.9.8k_WIN32(RSA密钥生成工具).zip,打开cmd,命令行进入openssl-0.9.8k_WIN32(RSA密钥生成工具)\bin目录下,
(1).执行
openssl genrsa -out rsa_private_key.pem 1024
生成rsa_private_key.pem文件。
(2).再执行
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
生成rsa_public_key.pem 文件。
(3).在执行
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
将RSA私钥转换成 PKCS8 格式,去掉begin和end那两行,把里面的内容拷贝出来,保存到某个txt中,如rsa_private_pkcs8_key.txt中(我好像没用到这个)。
打 开rsa_public_key.pem,即商户的公钥,复制到一个新的TXT中,删除文件头”-----BEGIN PUBLIC KEY-----“与文件尾”-----END PUBLIC KEY-----“还有空格、换行,变成一行字符串并保存该 TXT 文件,然后在网站的“我的商家服务”切换卡下的右边点击“密钥管理”,然后有个"上传商户公钥(RSA)"项,选择上传刚才的TXT文件.
好了,服务器配置OK,因为这一段之前没有截图,现在弄好了又不好截图,如果有不明白的地方请大家参考官方文档。
4.引用jar和包含安装包
(1).新建android工程;
(2).上面说的alipay_plugin.jar到工程的libs目录下,并在java build path中通过Add External JARs找到并引用该jar;
(3).上面说的alipay_plugin223_0309.apk安装包到assets目录下,后面配置路径用到。
\
如果libs和assets目录没有,手动建立者两个目录。
5.调用代码整理
这里我们要严重的参考文档中AppDemo,我们建一个包 com.tianxia.lib.baseworld.alipay,把AppDemo的com.alipay.android. appDemo4包下的 源码全部到刚才我们自己的包下,还有res目录下的资源文件也合并到我们工程res下。
其中AlixDemo.java,ProctListAdapter.java,Procts.java是示例类,我们借鉴完后可以删除。
PartnerConfig.java是配置类,配置商户的一些配置参数。
其他的类是严重参考类,直接留下使用。
PartnerConfig.java代码如下:
public class PartnerConfig { //合作商户ID。用签约支付宝账号登录ms.alipay.com后,在账户信息页面获取。 public static final String PARTNER = "xxx"; //账户ID。用签约支付宝账号登录ms.alipay.com后,在账户信息页面获取。 public static final String SELLER = "xxx"; //商户(RSA)私钥 ,即rsa_private_key.pem中去掉首行,最后一行,空格和换行最后拼成一行的字符串 public static final String RSA_PRIVATE = "xxx"; //支付宝(RSA)公钥 用签约支付宝账号登录ms.alipay.com后,在密钥管理页面获取。 public static final String RSA_ALIPAY_PUBLIC = "xxx"; //下面的配置告诉应用去assets目录下找安装包 public static final String ALIPAY_PLUGIN_NAME ="alipay_plugin223_0309.apk";}
AlixDemo中代码是最终的调用代码在onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {}中,下面我们提取其中的核心代码。
Ⅲ 银联在线和支付宝,android应用怎么调用
一、 支付宝平台的集成
在技术集成之前,商户需要在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%。
PS :亲测
AliPayInfo aliPayInfo=new AliPayInfo();
AliPay aliPay=new AliPay((Activity)OtherPayDlg.this.mContext, mHandler);
aliPay.pay(aliPayInfo.toString());
OtherPayDlg.this.dismiss();
出现问题一:按照说明文档导入alipay.jar 出现AliPay 找不到,然后项目根目录下新建一个 libs文件夹,把要加的包放到这个目录下,右键 Build Path -> Use as source folder
成功可以引用,但是没有弹出界面二、 财付通平台的集成
财付通的集成和支付宝的非常相似(腾讯的传统?→_→)。财付通也是提供了一个财付通安全支付服务应用TenpayService.apk用于处理交易的细节。对于此支付应用,财付通和支付宝的使用方式是一样的。一种是捆绑预置,即打包在assets目录下,另一种是放到自己的服务器中,通过检查更新的方式动态加载。实际集成中可采用二者结合方式,初次使用使用预置apk,之后检查更新动态下载。
但是调用支付接口之前,增加了一个获取tokenid的过程,tokenid用于同财付通service进行交互。过程如下:
1. 用户在商户APP 选择商品,使用财付通支付
2. 商户APP向商户server 请求使用财付通支付
3. 商户server按照“支付初始化接口”的要求组织数据请求财付通“支付初始化接口”,接收初始化成功后返回的tokenid
4. 商户server将生成的tokenid 返回给商户APP
5. 商户APP使用tokenid 调用财付通支付service
6. 财付通支付service 在验证tokenid 后向用户展示支付中心,显示订单信息及相关用户信息
7. 用户在支付中心输入支付密码执行支付
8. 财付通支付service 向财付通后台server 请求执行支付,并实时接收支付结果
9. 支付成功后财付通支付service 向用户展示支付成功UI,在用户点击“返回商户网站”后回调商户App
10. 财付通后台server 在支付成功后会通过“支付成功通知接口”在后台通知商户server 支付状态。
接收支付接口返回结果方面,财付通对于方法返回值,不是直接返回的,而是通过handler回调,handler和msgId作为一个参数传入接口,支付接口pay()方法的返回值只是个true false,用于区分调用成功或者失败。其实跟淘宝的方式大同小异。对于notify_url,是财付通是通过get方式调用回调url,只返回支付成功的订单。同样的,商户服务器在接收到财付通的调用之后,需要返回纯字符串“success”“fail”表示处理成功或失败。
调用支付接口的代码如下:
//构造支付参数
HashMap<String, String> payInfo = new HashMap<String, String>();
payInfo.put("token_id",mTokenId); //财付通订单号token_id
payInfo.put("bargainor_id","1234567890"); //财付通合作商户ID,此为演示示例
// payInfo.put("order_type", "1");
payInfo.put("caller","com.tenpay.android.appDemo");//去支付
tenpayHelper.pay(payInfo,mHandler, MSG_PAY_RESULT);
财付通的服务费率是1%,另外有相关的套餐可以优惠。
三、 易宝支付平台集成
与支付宝和财付通不同的是,易宝集成时,并没有提供一个支付应用apk,只有一个jar包。是一个library project。因为在集成时,需要在manifest文件里面声明支付页面的activity。同时在调用支付页面时,需要用startActivityForResult方式进入,支付结果会通过onActivityResult方法返回。易宝同样支持服务端回调,但比较纠结的是,易宝的服务端回调url,不能在代码中传入,需要在易宝的网站进行配置。只有支付成功时才会触发此回调,以get方式调用。
调用支付接口的代码如下:其中customerNumber参数是签约之后才能获取到的。requestId为调用方自定义的订单流水号。
private void startPay(String customerNumber, String chennal) {
String amount = etAmount.getText().toString();
String proctName = etProctName.getText().toString();
String proctDesc = etProctDesc.getText().toString();if(TextUtils.isEmpty(proctName) || TextUtils.isEmpty(amount)) {
Toast.makeText(YeepayExampleActivity.this,"", Toast.LENGTH_SHORT);
}Intent intent = new Intent(getBaseContext(), YeepayPlugin.class);
intent.putExtra("customerNumber", customerNumber);Random random = new Random();
String time = "" + System.currentTimeMillis();
String requestId = time + random.nextInt() % 10000;intent.putExtra("requestId", requestId);
intent.putExtra("amount", amount);
intent.putExtra("proctName", proctName);
intent.putExtra("time", time);
intent.putExtra("proctDesc", (proctDesc ==null) ? "" : proctDesc);
intent.putExtra("support", chennal);
intent.putExtra("environment","ENV_TEST" );
StringBuilder builder = new StringBuilder();
builder.append(CUSTOMER_NUMBER).append("$");
builder.append(requestId).append("$");
builder.append(amount).append("$");
builder.append(proctName).append("$");
builder.append(time);String hmac = YeepayUtils.hmacSign(builder.toString(),KEY);Log.e("YeepayExampleActivity","hmac" + hmac);intent.putExtra("hmac", hmac);
startActivityForResult(intent, 200);
}
易宝集成后的费率需要和易宝的客户经理面谈决定
四、 银联在线支付集成
银联的支付应用同支付宝和财付通相同,采用的是独立apk的方式提供服务。调用支付接口采用的startActivity的方式,相关参数通过bundle传递,调用示例如下:
bundle.putBoolean(USE_TEST_MODE,true);bundle.putString(SP_ID,"0009");
bundle.putString(SECURITY_CHIP_TYPE,null);
bundle.putString(SYS_PROVIDE,"00000001");
bundle.putString(PAY_DATA, payData);
…
Intent startIntent = new Intent();
// startIntent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startIntent.putExtras(bundle);
startIntent.setClassName(UPPayUtils.PACKAGE_NAME,
UPPayUtils.ACTIVITY_NAME);
// activity.startActivityForResult(startIntent, UPPayUtils.STARTE_UPPAY);
activity.startActivity(startIntent);
与以上三种支付平台不同的是,银联支付接口的返回值是通过广播的形式发送的。不支持商户服务端的回调url。
Ⅳ 如何在app应用中添加支付宝支付功能
开发之前的准备工作
下载开发包,下载压缩包,并将里面的Android使用支付宝的JAR和Demo解压出来。
思路条理分析
支付宝的支付功能的本质是调用手机用户的支付宝去往商户的支付宝付款,而不是直接往有些应用中的账号充值,所以能通过支付宝付款的方式,来对应用的账户充值和买到对应的商品。
Ⅳ android应用调用支付宝sdk后,home键后再进入怎么种Ц侗dk界面
1,到支付宝官网,下载支付宝集成开发包,看懂里面的关键代码
由于android设备一般用的都是无线支付,所有我们申请的就是支付宝无线快捷支付接口。下面是申请的地址,下面还有下载接口开发包的地方
https。//b。alipay。com/order/proctDetail.htm?proctId=2013080604609654
如果链接失效,你可以到支付宝官网商家服务模块中找到 快捷支付(无线)这个服务。
下载集成开发包,解压发现里面有客户端的demo即说明文档,在客户端的demo中找到Android_SDK,这个就是你要用到的支付宝接口及demo。
其中,Base64.java、Result.java、Rsa.java这3个类不需要动,需要用到的,到时候直接放到你项目里面就行了,如果你想了解下它们你也可以看看。重点就是ExternalPartner.java和Keys.java这两个类。
Ⅵ android app怎么集成支付宝支付功能
一般公钥和私钥这些都放到后台去的,不写在app里。肆物
另外,如果你的收款方账号和开发者申请的账号不一致的话,裂槐液
快捷支付是不能走下去的
公钥私钥放后台的明瞎话,当需要支付的时候,在后台生成订单,
前端通过接口访问获取。前端使用获取的订单再传到支付宝API。所以反编译app也是没用的
Ⅶ Android手机APP怎么调用支付宝接口进行支付
去支付宝的开放平台申请开发者ID,然后把支付宝的SDK集成到你的APP中,具体调用请参考支付宝开发文档。
Ⅷ android怎么和支付宝实现接口对接
无线商户,首先请移步无线好芹商户平台站点http://ms.alipay.com 查看支付宝无线产品介绍、Demo,还可和支付宝在线签约。
请无线产品demo里面有支持andriod手机平台的示例团游,以及平台开发指南,请您先阅读塌袜销一下。
Ⅸ 安卓手机uc浏览器无法调用支付宝
安卓手机uc浏览器无法调用支虚森首付宝原因如下。
1、络故障或者手机自带或安装的浏览器不支持手机支付导致。
2、浏览器差数春模有不兼容问题。
Ⅹ Android之支付宝支付集成
支付宝集成流程
https://opendocs.alipay.com/open/204/105296/
主要的回调返回类两个:樱银PayResult与AuthResult
支付接口的调用戚枯:
支付结果的接收脊仔宴: