官方地址:
https://open.unionpay.com/ajweb/help/file/techFile?productId=3
https://open.unionpay.com/ajweb/help/file/techFile
图片有点大~~
下载好demo
下载下来
如果是eclipse 开始的就相当省事了,copy进去就行。
studio需要注意 三点
图片都是在Project截取的。
一. data.bin 文件要放在 assets下面
二. so文件 发在 main下的jniLibs文件夹下。不要放lib了奥。
三. 权限一定要带上
<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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"
/> <uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<!— 如果选择智能卡方式(即sdkPro)集成,需要额外定义以下权限 -->
<uses-permission
android:name="android.permission.RECORD_AUDIO" />
<uses-permission
android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission
android:name="org.simalliance.openmobileapi.SMARTCARD" />
代码~
//TODO 银联支付
/*****************************************************************
* mMode参数解释: "00" - 启动银联正式环境 "01" - 连接银联测试环境
*****************************************************************/
private final String mMode = "01";
/*************************************************
* 步骤2:通过银联工具类启动支付插件
************************************************/
UPPayAssistEx.startPayByJAR(MoneyRechargeActivity.this,PayActivity.class, null, null,
"填写tn 就是流水号", mMode);
----------------------------------------------------------------------------------------
回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
/*************************************************
* 步骤3:处理银联手机支付控件返回的支付结果
************************************************/
if (data == null) {
return;
}
String msg = "";
/*
* 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消
*/
String str = data.getExtras().getString("pay_result");
if (str.equalsIgnoreCase("success")) {
// 支付成功后,extra中如果存在result_data,取出校验
// result_data结构见c)result_data参数说明
if (data.hasExtra("result_data")) {
String result = data.getExtras().getString("result_data");
// try {
// JSONObject resultJson = new JSONObject(result);
// String sign = resultJson.getString("sign");
// String dataOrg = resultJson.getString("data");
// // 验签证书同后台验签证书
// // 此处的verify,商户需送去商户后台做验签
// boolean ret = verify(dataOrg, sign, mMode);
// if (ret) {
// // 验证通过后,显示支付结果
// msg = "支付成功!";
// } else {
// // 验证不通过后的处理
// // 建议通过商户后台查询支付结果
// msg = "支付失败!";
// }
// } catch (JSONException e) {
// }
// } else {
// 未收到签名信息
// 建议通过商户后台查询支付结果
// msg = "支付成功!";
// }
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.setCustomTitle();
builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
怎么样简单吧.希望可以帮到你。