android怎么和支付宝实现接口对接
无线商户,首先请移步无线商户平台站点http://ms.alipay.com 查看支付宝无线产品介绍、Demo,还可和支付宝在线签约。
请无线产品demo里面有支持andriod手机平台的示例,以及平台开发指南,请您先阅读一下。
您好,首先您确认一下您的网店是由哪家系统商提供的,您可以登录系统商官网,一般都会有开通支付宝收款接口的链接,点击后申请签约,通过审核后即可开通,也可以在网店系统后台,支付方式设置的地方,点击签约链接。 支付宝 财付通都是第三方支付 一般都是可以开通的
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).copy上面说的alipay_plugin.jar到工程的libs目录下,并在java build path中通过Add External JARs找到并引用该jar;
(3).copy上面说的alipay_plugin223_0309.apk安装包到assets目录下,后面配置路径用到。
\
如果libs和assets目录没有,手动建立者两个目录。
5.调用代码整理
这里我们要严重的参考文档中AppDemo,我们建一个包 com.tianxia.lib.baseworld.alipay,把AppDemo的com.alipay.android.appDemo4包下的 源码全部copy到刚才我们自己的包下,还有res目录下的资源文件也合并到我们工程res下。
其中AlixDemo.java,ProductListAdapter.java,Products.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) {}中,下面我们提取其中的核心代码。
6.提取核心调用代码
在AlixDemo.java同目录下新建AlixPay.java,来提取AlixDemo.java的核心代码:
package com.tianxia.lib.baseworld.alipay;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.Date;import com.tianxia.lib.baseworld.R;import android.app.Activity;import android.app.ProgressDialog;import android.content.DialogInterface;import android.os.Handler;import android.os.Message;import android.view.KeyEvent;import android.widget.Toast;public class AlixPay { static String TAG = "AlixPay"; private Activity mActivity; public AlixPay(Activity activity) { mActivity = activity; } private ProgressDialog mProgress = null; // the handler use to receive the pay result. private Handler mHandler = new Handler() { public void handleMessage(Message msg) { try { String strRet = (String) msg.obj; switch (msg.what) { case AlixId.RQF_PAY: { closeProgress(); BaseHelper.log(TAG, strRet); try { String memo = "memo="; int imemoStart = strRet.indexOf("memo="); imemoStart += memo.length(); int imemoEnd = strRet.indexOf(";result="); memo = strRet.substring(imemoStart, imemoEnd); ResultChecker resultChecker = new ResultChecker(strRet); int retVal = resultChecker.checkSign(); if (retVal == ResultChecker.RESULT_CHECK_SIGN_FAILED) { BaseHelper.showDialog( mActivity, "提示", mActivity.getResources().getString( R.string.check_sign_failed), android.R.drawable.ic_dialog_alert); } else { BaseHelper.showDialog(mActivity, "提示", memo, R.drawable.infoicon); } } catch (Exception e) { e.printStackTrace(); BaseHelper.showDialog(mActivity, "提示", strRet, R.drawable.infoicon); } } break; } super.handleMessage(msg); } catch (Exception e) { e.printStackTrace(); } } }; // close the progress bar void closeProgress() { try { if (mProgress != null) { mProgress.dismiss(); mProgress = null; } } catch (Exception e) { e.printStackTrace(); } } public void pay() { MobileSecurePayHelper mspHelper = new MobileSecurePayHelper(mActivity); boolean isMobile_spExist = mspHelper.detectMobile_sp(); if (!isMobile_spExist) return; if (!checkInfo()) { BaseHelper.showDialog(mActivity, "提示", "缺少partner或者seller,", R.drawable.infoicon); return; } try { // prepare the order info. String orderInfo = getOrderInfo(); String signType = getSignType(); String strsign = sign(signType, orderInfo); strsign = URLEncoder.encode(strsign); String info = orderInfo + "&sign=" + "\"" + strsign + "\"" + "&" + getSignType(); // start the pay. MobileSecurePayer msp = new MobileSecurePayer(); boolean bRet = msp.pay(info, mHandler, AlixId.RQF_PAY, mActivity); if (bRet) { // show the progress bar to indicate that we have started paying. closeProgress(); mProgress = BaseHelper.showProgress(mActivity, null, "正在支付", false, true); } else ; } catch (Exception ex) { Toast.makeText(mActivity, R.string.remote_call_failed, Toast.LENGTH_SHORT).show(); } } private boolean checkInfo() { String partner = PartnerConfig.PARTNER; String seller = PartnerConfig.SELLER; if (partner == null || partner.length() <= 0 || seller == null || seller.length() <= 0) return false; return true; } // get the selected order info for pay. String getOrderInfo() { String strOrderInfo = "partner=" + "\"" + PartnerConfig.PARTNER + "\""; strOrderInfo += "&"; strOrderInfo += "seller=" + "\"" + PartnerConfig.SELLER + "\""; strOrderInfo += "&"; strOrderInfo += "out_trade_no=" + "\"" + getOutTradeNo() + "\""; strOrderInfo += "&"; //这笔交易价钱 strOrderInfo += "subject=" + "\"" + mActivity.getString(R.string.donate_subject) + "\""; strOrderInfo += "&"; //这笔交易内容 strOrderInfo += "body=" + "\"" + mActivity.getString(R.string.donate_body) + "\""; strOrderInfo += "&"; //这笔交易价钱 strOrderInfo += "total_fee=" + "\"" + "10.00" + "\""; strOrderInfo += "&"; strOrderInfo += "notify_url=" + "\"" + "http://notify.java.jpxx.org/index.jsp" + "\""; return strOrderInfo; } // get the out_trade_no for an order. String getOutTradeNo() { SimpleDateFormat format = new SimpleDateFormat("MMddHHmmss"); Date date = new Date(); String strKey = format.format(date); java.util.Random r = new java.util.Random(); strKey = strKey + r.nextInt(); strKey = strKey.substring(0, 15); return strKey; } // get the sign type we use. String getSignType() { String getSignType = "sign_type=" + "\"" + "RSA" + "\""; return getSignType; } // sign the order info. String sign(String signType, String content) { return Rsa.sign(content, PartnerConfig.RSA_PRIVATE); } // the OnCancelListener for lephone platform. static class AlixOnCancelListener implements DialogInterface.OnCancelListener { Activity mcontext; AlixOnCancelListener(Activity context) { mcontext = context; } public void onCancel(DialogInterface dialog) { mcontext.onKeyDown(KeyEvent.KEYCODE_BACK, null); } }}
这个类的pay方法就是支付的方法,最简单的不设置的话,调用方法如下:
AlixPay alixPay = new AlixPay(SettingTabActivity.this);alixPay.pay();
支付宝开放平台上面的文档很清楚了,参考官方文档吧。
嗯,支付宝有开发 的接口的,你直接找到,可以调用
支付宝有sdk的,去他官网找,集成进你的项目就可以调用了。
下载支付宝客户端到你的手机
安卓手机怎么和psv互联并实现文件共享或传输安卓手机怎么和psv互联并实 ...
2. 在安卓手机上下载并安装"Content Manager Mobile"软件。3. 连接PSV和安卓手机到同一个Wi-Fi网络下。4. 在PSV上打开"Content Manager Assistant"软件,然后在安卓手机上打开"Content Manager Mobile"软件。5. 在安卓手机上选择"PS Vita"作为连接对象,然后输入连接密码(默认为0000)。6. 连接成功后...
Android studio窗口布局怎么保存和恢复?
1、进行打开电脑中的Android studio中进行设置布局上的窗口选项。2、默认布局设定完成之后,然后进行Android studio菜单中的“windows”的选项。3、然后就会弹出了一个下拉菜单中,进行选择为“store current layout as default”的选项。点击完成之后,就会Android studio的布局进行保存。4、而现在对Android st...
安卓和苹果手机怎么互传
操作方法01第一,确保你的手机安装了QQ,并登录;02在手机上找到文件管理,点击打开其文件夹;03在打开的页面上点击要传输的文件所在的文件夹,比如音频;04选择要传输的文件,然后单击下面的菜单;05选择分享;06发给朋友;07选择要将文件发送给她的朋友;08然后点发送;09刚才选择的文件发送给使用Iphone...
Android开发怎么查看和管理sqlite数据库
打开android项目的调试模式,然后找到显示DDMS 选择DDMS 切换到DDMS,显示File Explorer窗口,找到\/data\/data\/ 啰嗦一句,你可能在你自己的eclipse没找到,File Explorer ,如果找不到的话,就去网上下载,"easyExplorer
android官网怎么才能找到adt和androidsdk的下载?
1. 国内网站提供了多种Android开发所需的工具和库,包括SDK、ADT、JDK和GRADLE等,您可以通过访问http:\/\/www.android-studio.org\/进行下载。2. Android开发者官方网站也提供了SDK的下载服务。您可以通过访问https:\/\/developer.android.com\/studio\/index.html,然后拉到页面底部,找到下载部分进行相应的下载...
安卓和苹果蓝牙怎么传照片
苹果和安卓手机可以利用蓝牙传照片。iPhone7手机、HTC手机(安卓系统)具体的操作方法如下:1、以iPhone7手机为例,使iPhone蓝牙处于打开状态,桌面右上角会显示如图所示图标;2、找到iPhone桌面上的QQ图标,左键单击进入;3、在QQ主页右上方找到如图所示的图标,左键单击进入;4、选择菜单栏第三项”面对面...
怎样安装android-sdk和配置
首先,下载Android SDK Tools,翻过墙的朋友可以去Google Android的官网上下载 选择一个最新的版本就行了。注意,这里有exe和zip两种文件可供下载,exe的就是个安装程序,下载下来需要自己双击安装。这里建议下载zip压缩包,下载后,直接解压缩到你想要安装Android的路径就行了。解压后的文件目录如下:然后就...
android怎么将柱状图和曲线共存
1、先选取主要数据区,插入柱形图 于是得到了下面的图表,但是注意到横坐标并非“1月,2月...”,而是"1,2...",所以先来解决这个 2、右侧图表->“选择数据”->"水平(分类)轴标签",设置水平分类标签的数据源 完成之后,水平横坐标应该能正常显示"1月,2月..."了,但是到目前为止,折线图还...
在Android上怎样实现JAVA和JS交互
在Android上怎样实现JAVA和JS交互呢?Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过addJavas criptInterface方法,可以将Java的类注册进webkit,给网页上的js进行调用,而且还可以通过loadUrl方法是给webkit传递一个URL,供浏览器来进行解析,实现Java和js交互。要想运行网页上...
苹果和安卓怎么互传东西
使用安卓手机的用户如何与苹果手机用户交换文件?具体操作方法如下。打开分步阅读模式。操作方法01第一,确保你的手机安装了QQ,并登录;02在手机上找到文件管理,点击打开其文件夹;03在打开的页面上点击要传输的文件所在的文件夹,比如音频;04选择要传输的文件,然后单击下面的菜单;05选择分享;06发给朋友...
始瑶当归: 去支付宝的开放平台申请开发者ID,然后把支付宝的SDK集成到你的APP中,具体调用请参考支付宝开发文档.
宁洱哈尼族彝族自治县13519255147: android应用如何接入在线支付功能 - ?
始瑶当归: 可以通过微信或者支付宝的审核,调用它们的接口实现在线支付功能
宁洱哈尼族彝族自治县13519255147: 在Android中如何用代码实现第三方支付接口??
始瑶当归: 目前比较成熟的是支付宝和银联支付宝: https://b.alipay.com/order/productSet.htm#@银联: http://mobile.unionpay.com/preference/
宁洱哈尼族彝族自治县13519255147: android app怎么集成支付宝支付功能 - ?
始瑶当归: 一般公钥和私钥这些都放到后台去的,不写在app里.另外,如果你的收款方账号和开发者申请的账号不一致的话,快捷支付是不能走下去的 公钥私钥放后台的话,当需要支付的时候,在后台生成订单,前端通过接口访问获取.前端使用获取的订单再传到支付宝API.所以反编译app也是没用的
宁洱哈尼族彝族自治县13519255147: 个人做一个安卓软件,需要接入支付宝或微信支付的话,需要怎么做? - ?
始瑶当归: 去支付宝或是微信开放平台上申请,通过审核就可以使用,审核条件比较苛刻,准备充分点,会有官方文档告诉你怎么接入的.
宁洱哈尼族彝族自治县13519255147: android ping++ 怎么调用支付宝 - ?
始瑶当归: 在技术集成之前,商户需要进行注册,并签约安全支付服务.签约成功后可获取支付宝分配的合作商户ID(PartnerID),账户ID(SellerID),调用接口时使用. 支付细节的实现,主要通过支付宝提供的一个支付安全服务安装包alipay_plugin_...
宁洱哈尼族彝族自治县13519255147: 如何实现第三方支付接口??
始瑶当归: 你看一下支付宝的就知道了!先要申请支付宝的企业账号,有号了才可以使用支付宝的接口!
宁洱哈尼族彝族自治县13519255147: 个人开发者能使用支付宝SDK或者使用支付宝APP接口吗 - ?
始瑶当归: 你好 你要申请商家版本 才可以的! 个人的不能使用的
宁洱哈尼族彝族自治县13519255147: android应用调用支付宝sdk后,home键后再进入怎么种Ц侗dk界面 - ?
始瑶当归: 1,到支付宝官网,下载支付宝集成开发包,看懂里面的关键代码由于android设备一般用的都是无线支付,所有我们申请的就是支付宝无线快捷支付接口.下面是申请的地址,下面还有下载接口开发包的地方https.//b.alipay.com/order/...
宁洱哈尼族彝族自治县13519255147: 在android开发上如何集成支付宝、paypal? - ?
始瑶当归: Paypal是给予所有开发者 提供接口 也提供支持任何问题可以提交到这里 任何交易失败的 或者觉得不方便的