项目实训-千寻-支付宝服务申请与使用
2017-05-21 13:04
288 查看
1.服务申请
支付宝服务的申请还是有些麻烦的,幸好我们有提前准备,但是依旧持续了大约1个月的时间。各种审核,各种验证,甚至各种实名制,前前后后麻烦死了。这段历程就不提了,诸位要是想使用支付宝的商户接口,一定要提前准备啊。
附支付宝开放平台网址:https://open.alipay.com
支付宝商户版网址:https://shanghu.alipay.com
2.服务端部署
支付宝的服务端集成代码,就相对容易一些了,主要就是计算签名,然后返回给客户端。签名的计算方法也很简单,官方也给出了示例。这里附上核心计算方法,只要把其中的私钥换成在支付宝官方申请的私钥,就可以使用了。
当然,说简单,是因为我们没有使用支付结果回调接口。如果要考虑安全性的话,后期我们会考虑添加。
3.安卓端配置
安卓端的处理就更加容易了,导入好jar包,剩下的工作就不多了。当然,虽然这么说,但是我们实际使用时,还是遇到了不少问题的。其中最大的问题就是,服务端返回的签名有问题。以下是安卓端的处理流程:
4.调用测试
其实,测试一直是包含在整个配置的过程中的。还有,我们测试,每次都是一分钱一分钱的进行的,测试了好几毛钱呢。整体来说,效果还是不错的。不过有几次,需要用户进行登录,我们也没弄明白为什么,感觉可能是签名有问题吧,没有深入研究。
附录:支付宝官方文档(好无聊的附录啊):
https://openhome.alipay.com/developmentDocument.htm
支付宝服务的申请还是有些麻烦的,幸好我们有提前准备,但是依旧持续了大约1个月的时间。各种审核,各种验证,甚至各种实名制,前前后后麻烦死了。这段历程就不提了,诸位要是想使用支付宝的商户接口,一定要提前准备啊。
附支付宝开放平台网址:https://open.alipay.com
支付宝商户版网址:https://shanghu.alipay.com
2.服务端部署
支付宝的服务端集成代码,就相对容易一些了,主要就是计算签名,然后返回给客户端。签名的计算方法也很简单,官方也给出了示例。这里附上核心计算方法,只要把其中的私钥换成在支付宝官方申请的私钥,就可以使用了。
当然,说简单,是因为我们没有使用支付结果回调接口。如果要考虑安全性的话,后期我们会考虑添加。
//加密规则 private static final String ALGORITHM = "RSA"; private static final String SIGN_ALGORITHMS = "SHA1WithRSA"; private static final String DEFAULT_CHARSET = "UTF-8"; // 私钥,pkcs8格式 public static final String RSA_PRIVATE = ""; //String content来自安卓端的签名内容 public static String getAlipaySign(String content) { try { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(RSA_PRIVATE)); KeyFactory keyf = KeyFactory.getInstance(ALGORITHM); PrivateKey priKey = keyf.generatePrivate(priPKCS8); java.security.Signature signature = java.security.Signature .getInstance(SIGN_ALGORITHMS); signature.initSign(priKey); signature.update(content.getBytes(DEFAULT_CHARSET)); byte[] signed = signature.sign(); return Base64.encode(signed); } catch (Exception e) { e.printStackTrace(); } return "0";//错误标志 }
3.安卓端配置
安卓端的处理就更加容易了,导入好jar包,剩下的工作就不多了。当然,虽然这么说,但是我们实际使用时,还是遇到了不少问题的。其中最大的问题就是,服务端返回的签名有问题。以下是安卓端的处理流程:
//构造支付信息 private String build(String service_id, String service_name, String service_detail, String service_price) { //service_price判断与处理,此处就用string,用double-try即可 // 商户网站唯一订单号 orderInfo += "&out_trade_no=" + "\"" + service_id + "\""; // 商品名称 orderInfo += "&subject=" + "\"" + service_name + "\""; // 商品详情 orderInfo += "&body=" + "\"" + service_detail + "\""; // 商品金额 orderInfo += "&total_fee=" + "\"" + service_price + "\""; return orderInfo; } //后台请求签名 @Override protected String doInBackground(Void... params) { // 构造PayTask 对象 PayTask alipay = new PayTask(activity); // 调用支付接口,获取支付结果 String result = alipay.pay(payInfo, true); return result; }
//拿到签名后,在安卓端发起支付请求 @Override protected void onPostExecute(String result) {//result为签名 AlipayResult alipayResult = new AlipayResult(result);//其中会处理null String resultStatus = alipayResult.getResultStatus(); //判断resultStatus 为“9000”则代表支付成功 //后续处理…… }
4.调用测试
其实,测试一直是包含在整个配置的过程中的。还有,我们测试,每次都是一分钱一分钱的进行的,测试了好几毛钱呢。整体来说,效果还是不错的。不过有几次,需要用户进行登录,我们也没弄明白为什么,感觉可能是签名有问题吧,没有深入研究。
附录:支付宝官方文档(好无聊的附录啊):
https://openhome.alipay.com/developmentDocument.htm
相关文章推荐
- 项目实训-千寻-MOB短信验证服务的引入
- 服务条目与采购订单、采购申请、工单、项目及WBS的关系
- 使用google的项目托管服务
- 使用XCA(X Certificate and key management)可视化项目经理SSL 凭证(4)--凭借自身的凭证管理中心的定义(Certificate Authority)签名证书申请
- [置顶]Android 项目开发 基于Web Service 服务的中英翻译软件(四)使用Sqlite “辅助” Web Service
- Java后台使用支付宝进行支付实现---使用阿里提供的对应服务的支付宝接口
- 使用axis在项目中开发WebService服务
- JavaWeb企业实训 简易股市自选查询分析系统(六)使用Shiro控制登录等权限管理与Spring项目整合
- Amazon AWS亚马逊云服务免费一年VPS主机成功申请和使用方法
- ServiceStack 项目实例 005 使用第一个服务功能 (在MVC项目中)
- Javaweb实训项目中使用到的ajax
- Android 项目开发 基于Web Service 服务的中英翻译软件(四)使用Sqlite “辅助” Web Service
- 使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本
- 使用Class Library项目模板创建服务
- IM项目,使用openfire服务,Smack的android端概述
- [教程]使用google code在线代码托管服务管理你的项目源码
- 项目中基于Rest的Wcf服务发布以及iBatisNet框架的使用(下)
- 使用微软的TFS云服务来管理小型项目
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十四节:小项目实训《绝命沙滩》
- 使用普通Windows服务创建Quartz.Net服务项目