其实支付并没有想象中的难,只是在签约上一大堆麻烦事,需要各种证件,需要审核...

首先申明该文章写于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

更多相关文章

  1. android实现UI控件自动注入到Activity
  2. android使用traceView进行性能测试
  3. Android中文翻译 - 测试你的Android Activity
  4. Android进阶自定义控件之滑动开关
  5. android之控件自定义(seekBar)
  6. Android 在onCreate()方法中获取控件宽高值为0解决方案
  7. Android中ListView实现子控件点击事件后ListView点击事件失效解
  8. Android 实现自定义控件效果1
  9. 一步一步学android之基本控件——TextView组件

随机推荐

  1. Android 内存管理机制
  2. Android API课程1: Application Fundament
  3. Android优秀开源项目收集
  4. android SQLite 使用实例
  5. Android 基本空间划分
  6. android访问服务器端上传及服务器端接收
  7. Android中mpchartlib柱状图的详细属性以
  8. Android的android:clipChildren属性
  9. android 按钮点击的两种方法以及长按事件
  10. Android开发视频教程大总结—23部视频教