Android银联支付Sdk_银联支付接口开发集成Demo下载
程序员文章站
2022-02-16 11:57:01
...
最近工都名车的项目需要使用银联支付、没办法去研究了一下、觉得可以记录一下、希望有需求的哥们可以直接使用、银联手机支付控件、主要为合作商户的手机客户端提供安全、便捷的支付服务、用户通过在支付控件中输入银行卡卡号、手机号、密码借记卡和预付卡、或者CVN2、有效期信用卡、验证码等要素完成支付
支付流程说明
1、用户在客户端中点击购买商品、客户端发起订单生成请求到商户后台
2、商户后台收到订单生成请求后、按照《手机控件支付产品接口规范》组织并推送订单信息至银联后台
3、银联后台接收订单信息并检查通过后、生成对应交易流水号即TN、并回复交易流水号至商户后台应答要素:交易流水号等
4、商户后台接收到交易流水号、将交易流水号返回给客户端
5、客户端通过交易流水号TN、调用支付控件
6、用户在支付控件中输入相关支付信息后、由支付控件向银联后台发起支付请求
7、支付成功后、银联后台将支付结果通知给商户后台
8、银联将支付结果通知支付控件
9、支付控件显示支付结果并将支付结果返回给客户端
发起支付并检测支付控件
@Override public void doStartUnionPayPlugin(Activity activity, String tn, String mode) { // mMode参数解释: // 0 - 启动银联正式环境 // 1 - 连接银联测试环境 int ret = UPPayAssistEx.startPay(this, null, null, tn, mode); if (ret == PLUGIN_NEED_UPGRADE || ret == PLUGIN_NOT_INSTALLED) { // 需要重新安装控件 Log.e(LOG_TAG, " plugin not found or need upgrade!!!"); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("完成购买需要安装银联支付控件,是否安装?"); builder.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { UPPayAssistEx.installUPPayPlugin(APKActivity.this); dialog.dismiss(); } }); builder.setPositiveButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } Log.e(LOG_TAG, "" ret); }
确认支付结果
@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 = "支付成功!"; } } else if (str.equalsIgnoreCase("fail")) { msg = "支付失败!"; } else if (str.equalsIgnoreCase("cancel")) { msg = "用户取消了支付"; } AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("支付结果通知"); builder.setMessage(msg requestCode); builder.setInverseBackgroundForced(true); // builder.setCustomTitle(); builder.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); }
银联支付是需要后台下单获取流水号的、所以是需要后台的代码、这里也分享一下、后台的代码和开发文档
后台代码及开发文档下载地址:点击下载银联支付后台开发包源码 密码: kvcy
银联支付app开发包源代码下载链接: 点击下载银联支付app开发包源码 密码: 9ptx