首先,在银联开发平台下载SDK及Demo,然后导入eclipse观察,决定导入哪些资源到AS中
1. 导入jar包
从下载的sdk中导入以下文件:jar包、data.bin、so文件
![](https://img-blog.csdn.net/20160903115134773?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. 配置清单文件
2.1添加权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> |
2.2添加activity
<!-- 银联支付start --> <activity android:name="com.unionpay.uppay.PayActivity"/> <!-- 银联支付end --> |
3. 调用支付sdk
3.1 支付测试账号(两个)
提供测试使用卡号、手机号信息(此类信息仅供测试,不会发生正式交易)
招商银行借记卡:6226090000000048 手机号:18100000000 密码:111101 短信验证码:123456(先点获取验证码之后再输入) 证件类型:01身份证 证件号:510265790128303 |
华夏银行贷记卡:6226388000000095 手机号:18100000000 cvn2:248 有效期:1219 短信验证码:123456(先点获取验证码之后再输入) 证件类型:01身份证 证件号:510265790128303 姓名:张三 |
3.2 调用支付
/** * tranNum:交易流水号 * mode:"00"启动银联正式环境 ,"01"连接银联测试环境(可以使用测试账号,测试账号参阅文档) */ UPPayAssistEx.startPayByJAR(MainActivity.this, PayActivity.class, null, null,tranNum, mode); |
4. 处理支付结果
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String msg = null; /** 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消*/ String str = data.getExtras().getString("pay_result"); if (str.equalsIgnoreCase("success")) { msg = "支付成功!"; } else if (str.equalsIgnoreCase("fail")) { msg = "支付失败!"; } else if (str.equalsIgnoreCase("cancel")) { msg = "用户取消了支付"; } Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } 示例代码如下:
public class MainActivity extends AppCompatActivity {
String url;
private String mPayCode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* * **1.提交参数到服务器**:商品信息(价格、购买数量、商品id)、用户信息(userId)、支付信息(payType,使用了什么支付方式)。助记口诀:谁买了什么东西,用什么支付方式
* **2.解析服务器返回结果**:服务器响应我们提交内容,返回结果,客户端需要解析获取“支付串码”(调用第三方支付平台需要的核心参数)
* **3.调用SDK**:调用第三方支付SDK支付方法,传入支付串码
* **4.处理支付结果**:成功、失败、取消
*/
url = "http://101.231.204.84:8091/sim/getacptn";//银联提供的测试接口,实际开发中应使用自己公司的服务器地址接口
}
public void pay(View view) {
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest request = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
mPayCode = s;
//3.调用SDK**:调用第三方支付SDK支付方法,传入支付串码
//mode —— 银联后台环境标识,“00”将在银联正式环境发起交易,“01”将在银联测试环境发起交易
UPPayAssistEx.startPayByJAR(MainActivity.this,
PayActivity.class,
null,
null,
mPayCode,
"01");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
queue.add(request);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//4.处理支付结果**:成功、失败、取消
super.onActivityResult(requestCode, resultCode, data);
String msg = null;
/** 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消*/
String str = data.getExtras().getString("pay_result");
if (str.equalsIgnoreCase("success")) {
msg = "支付成功!";
} else if (str.equalsIgnoreCase("fail")) {
msg = "支付失败!";
} else if (str.equalsIgnoreCase("cancel")) {
msg = "用户取消了支付";
}
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
|