1、首先从https://open.unionpay.com/tjweb/acproduct/list?apiservId=450下载android版
2、从下载中的:app开发包-->控件开发包-->upmp_android-->sdkPro-->jar下面的so放入项目中相对应的文件夹
3、将UPPayPluginExPro.jar、UPPayAssistEx.jar放入libs-->选中包-->add as library
4、将data.bin放入项目下的assest 文件夹
![](https://img.haomeiwen.com/i12774876/c4a8ce82232322d7.png)
5、import com.unionpay.UPPayAssistEx;
String serverMode ="01";
UPPayAssistEx.startPay(me,null,null, data.get("pay_string"), serverMode);
调用的代码如图所示,01表示测试环境,00表示正式环境 这个时候就可以唤起支付了
6、回调的代码
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
if (data ==null) {
return;
}
String msg ="";
String str = data.getExtras().getString("pay_result");
if (str.equalsIgnoreCase("success")) {
// 如果想对结果数据验签,可使用下面这段代码,
// 但建议不验签,直接去商户后台查询交易结果
// result_data结构见c)result_data参数说明
if (data.hasExtra("result_data")) {
String sign = data.getExtras().getString("result_data");
// 此处的verify建议送去商户后台做验签
// 如要放在手机端验,则代码必须支持更新证书
String typeS ="";
if (pay_type.equals("1")) {
typeS ="1";
}else {
typeS ="2";
}
HttpRequest.POST(me,findPayResult,new Parameter().add("order_num",order_num)
.add("type", typeS),new ResponseListener() {
@Override
public void onResponse(String s, Exception e) {
WaitDialog.dismiss();
if (e ==null) {
Map map = JSONUtils.parseKeyAndValueToMap(s);
if (map.get("code") ==null) {
return;
}
if (map.get("code").equals("1")) {
toast("支付成功");
setResponse(new JumpParameter().put("chenggong","1"));
finish();
}else {
Log.e("error", map.get("code") + map.get("message"));
}
}else {
}
}
});
}
// 结果result_data为成功时,去商户后台查询一下再展示成功
}else if (str.equalsIgnoreCase("fail")) {
toast(" 支付失败! ");
}else if (str.equalsIgnoreCase("cancel")) {
toast(" 你已取消了本次订单的支付! ");
}
}
当返回的结果data.hasExtra("result_data")是这个的时候 需要调用后台查询支付是否成功的接口,成功了以后再做相应的操作。
网友评论