亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于安卓開發的支付功能

標簽:
Android

概述:最近做的一款app需要用到支付功能,当然首选就是百度,各种搜索,查了不少资料。

https://www.2cto.com/kf/201509/444453.html

支付方式-微信支付

  1. 微信支付流程图

首先开发人员需要商户(就是客户,app的运营方)在微信开放平台申请开发应用后拿到微信开放平台会生成APP的唯一标识APPID。然后在APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

// 将该app注册到微信

msgApi.registerApp("wxd930ea5d5a258f4f");

当用户点击下单是,提交参数使商户服务器(后台)生成支付订单,先生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付

5b8a988a00016f1205070304.jpg

参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:

5b8a988a0001470c08160202.jpg

在这里我是通过发送广播处理的,由接收者根据code处理支付结果。

支付方式-支付宝支付

1.首先需要创建您的应用,会为您生成应用为你标识(APPID)

2..密匙1.png

应用公钥:由商户自己生成的RSA公钥(与应用私钥必须匹配),商户需上传应用公钥到支付宝开放平台,以便支付宝使用该公钥验证该交易是否是商户发起的。
应用私钥:由商户自己生成的RSA私钥(与应用公钥必须匹配),商户开发者使用应用私钥对请求字符串进行加签。
支付宝公钥:支付宝的RSA公钥,商户使用该公钥验证该结果是否是支付宝返回的。
3.支付
当用户点击下单是,提交参数使商户服务器(后台)生成支付订单,先生成预付单,获取到prepay_id(预付单号)后参数再次签名传输给APP发起支付:payInfo就是(prepay_id)

5b8a988b0001ca2305930459.jpg

5b8a988c0001611507570555.jpg

然后根据返回状态处理后续操作。

支付方式-银联支付

官方地址: 
https://open.unionpay.com/ajweb/help/file/techFile?productId=3 
https://open.unionpay.com/ajweb/help/file/techFile

下载好demo:

一. data.bin 文件要放在 assets下面 
二. so文件 发在 main下的jniLibs文件夹下。不要放lib了奥。 http://www.apkbus.com/blog-812344-76476.html

三. 权限一定要带上

   <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" />

代码~

String serverMode = "00";
int ret = UPPayAssistEx.startPay(getActivity(), null, null,orderEntity.getTn(), serverMode);
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(getActivity());
				dialog.dismiss();
			}
		});
	builder.setPositiveButton("取消",
		new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog,int which) {
				dialog.dismiss();
			}
		});
	builder.create().show();
}
回调
if (!TextUtils.isEmpty(data.getExtras().getString("pay_result"))) {
	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 sign = data.getExtras().getString("result_data");			// 验签证书同后台验签证书			// 此处的verify,商户需送去商户后台做验签			if (verify(sign)) {
				// 验证通过后,显示支付结果
				
			} else {
				// 验证不通过后的处理
				// 建议通过商户后台查询支付结果
			}
		} else {
			// 未收到签名信息
			// 建议通过商户后台查询支付结果
		}
	} else if (str.equalsIgnoreCase("fail")) {
		showToast(" 支付失败! ");
	} else if (str.equalsIgnoreCase("cancel")) {
		showToast(" 你已取消了本次订单的支付! ");
	}
}

原文链接:http://www.apkbus.com/blog-812344-76476.html

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消