Android 银联【支付】
其实支付并没有想象中的难,只是在签约上一大堆麻烦事,需要各种证件,需要审核...
首先申明该文章写于2014年12月初,大家可以参考.
先说说步骤:
一、签约
1.银联商户入网申请,(如果连接失败,可以去银联官网去寻找,https://www.95516.com/ )商家服务 --- 申请成商户 --- 在线产品
*为了给您提供更好的服务,请耐心填写以下信息,提交申请后,我们的工作人员会及时与您取得联系。
认真填写、然后等电话吧,(1-2 个工作日)
2.客服会让你填写一堆文件,认证信息,然后快递到他们那里。
3.审核通过,技术接入。
4.先调试测试环境
5.上传商户测试环境报告(审核,发放正式环境参数)。
二、支付流程
相信这张流程图介绍的很清楚了..
1.Android客户端,给后台发送商品信息参数
2.然后台去推送订单,后台拿到交易流水号(tn)
3.Android客户端拿到tn后,才能启动银联
4.银联会根据tn查询订单信息,也就是我们后台推送的信息,给予显示
5.用户支付-操作
6.操作完毕,分别回调客户端、异步返回后台。
三、银联SDK接入
要把银联接入客户端非常简单,前提你要签约成功。
这里银联对Android有俩种方式接入
① Apk接入方式 :调用startPay方法,调起手机中单独安装的控件
② 静态库集成 :调用startPayByJar方法,调起内置在商户app里的控件
官方是推荐Apk接入,自己更新,方便接入,只需要一个jar包,相比静态酷一大堆so文件、太过麻烦,不易更新。
银联手机支付服务:http://mobile.unionpay.com/getclient?platform=android&type=securepayplugin
启动银联时候,监测不存在 需要提示安装,把银联UPPayPluginEx.apk (银联手机支付服务)放到assets 目录下,免流量下载,保证apk最新就ok!
四、简单Dome案例
---看代码不说话:
public class MainActivity extends Activity {final String LOG_TAG = "MainActivity";//模拟tn 流水号private String tn ="201412111131390051642";/** * mMode参数解释: * "00" - 启动银联正式环境 * "01" - 连接银联测试环境 */private final String mMode = "01";public static final int PLUGIN_VALID = 0;public static final int PLUGIN_NOT_INSTALLED = -1;public static final int PLUGIN_NEED_UPGRADE = 2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void onButton(View view){doStartUnionPayPlugin();}private void doStartUnionPayPlugin() {// 用于启动前监测,如(银联支付服务apk),如果 tn 和 环境匹配会直接启动银联插件int ret = UPPayAssistEx.startPay(this, null, null, tn, mMode);Log.i(LOG_TAG, "状态:"+ (ret == UPPayAssistEx.PLUGIN_VALID));//监测不存在 需要提示安装,把银联UPPayPluginEx.apk 放到assets 目录下,免流量下载,保证apk最新就okif (ret == PLUGIN_NEED_UPGRADE || ret == PLUGIN_NOT_INSTALLED) {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("提示");builder.setMessage("完成购买需要安装银联支付控件,是否安装?");builder.setNegativeButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {boolean isUPPay = UPPayAssistEx.installUPPayPlugin(MainActivity.this);Log.e(LOG_TAG, "是否安装成功: "+isUPPay);}});builder.setPositiveButton("取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (data == null) {return;}String msg = "";/* * 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消 */String str = data.getExtras().getString("pay_result");System.out.println("返回:"+str);if (str.equalsIgnoreCase("success")) {msg = "支付成功!";} else if (str.equalsIgnoreCase("fail")) {msg = "支付失败!";} else if (str.equalsIgnoreCase("cancel")) {msg = "用户取消了支付";}AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("支付结果通知");builder.setMessage(msg);builder.setInverseBackgroundForced(true);builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}}
本文只用于技术交流,并且提供测试帐号:
Dome案例 + 测试支付帐号 + 常见问题解答(FAQ)+ UPMP商户接入技术改造指南
作者简单整理,欢迎转载:http://blog.csdn.net/cs_li1126/article/details/41863849
更多相关文章
- android实现UI控件自动注入到Activity
- android使用traceView进行性能测试
- Android中文翻译 - 测试你的Android Activity
- Android进阶自定义控件之滑动开关
- android之控件自定义(seekBar)
- Android 在onCreate()方法中获取控件宽高值为0解决方案
- Android中ListView实现子控件点击事件后ListView点击事件失效解
- Android 实现自定义控件效果1
- 一步一步学android之基本控件——TextView组件