项目实训-千寻-支付宝服务申请与使用

1.服务申请
支付宝服务的申请还是有些麻烦的,幸好我们有提前准备,但是依旧持续了大约1个月的时间。各种审核,各种验证,甚至各种实名制,前前后后麻烦死了。这段历程就不提了,诸位要是想使用支付宝的商户接口,一定要提前准备啊。
附支付宝开放平台网址:https://open.alipay.com
支付宝商户版网址:https://shanghu.alipay.com
2.服务端部署
支付宝的服务端集成代码,就相对容易一些了,主要就是计算签名,然后返回给客户端。签名的计算方法也很简单,官方也给出了示例。这里附上核心计算方法,只要把其中的私钥换成在支付宝官方申请的私钥,就可以使用了。
当然,说简单,是因为我们没有使用支付结果回调接口。如果要考虑安全性的话,后期我们会考虑添加。
//加密规则
private static final String ALGORITHM = "RSA";
private static final String SIGN_ALGORITHMS = "SHA1WithRSA";
private static final String DEFAULT_CHARSET = "UTF-8";
// 私钥,pkcs8格式
public static final String RSA_PRIVATE = "";
//String content来自安卓端的签名内容
public static String getAlipaySign(String content) {
	try {
		PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
				Base64.decode(RSA_PRIVATE));
		KeyFactory keyf = KeyFactory.getInstance(ALGORITHM);
		PrivateKey priKey = keyf.generatePrivate(priPKCS8);
		java.security.Signature signature = java.security.Signature
				.getInstance(SIGN_ALGORITHMS);
		signature.initSign(priKey);
		signature.update(content.getBytes(DEFAULT_CHARSET));
		byte[] signed = signature.sign();
		return Base64.encode(signed);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return "0";//错误标志
}

3.安卓端配置
安卓端的处理就更加容易了,导入好jar包,剩下的工作就不多了。当然,虽然这么说,但是我们实际使用时,还是遇到了不少问题的。其中最大的问题就是,服务端返回的签名有问题。以下是安卓端的处理流程:
//构造支付信息
private String build(String service_id, String service_name,
					 String service_detail, String service_price) {
	//service_price判断与处理,此处就用string,用double-try即可
	// 商户网站唯一订单号
	orderInfo += "&out_trade_no=" + "\"" + service_id + "\"";
	// 商品名称
	orderInfo += "&subject=" + "\"" + service_name + "\"";
	// 商品详情
	orderInfo += "&body=" + "\"" + service_detail + "\"";
	// 商品金额
	orderInfo += "&total_fee=" + "\"" + service_price + "\"";
	return orderInfo;
}

//后台请求签名
@Override
protected String doInBackground(Void... params) {
	// 构造PayTask 对象
	PayTask alipay = new PayTask(activity);
	// 调用支付接口,获取支付结果
	String result = alipay.pay(payInfo, true);
	return result;
}

//拿到签名后,在安卓端发起支付请求
@Override
protected void onPostExecute(String result) {//result为签名
	AlipayResult alipayResult = new AlipayResult(result);//其中会处理null
	String resultStatus = alipayResult.getResultStatus();
	//判断resultStatus 为“9000”则代表支付成功
	//后续处理……
}

4.调用测试
其实,测试一直是包含在整个配置的过程中的。还有,我们测试,每次都是一分钱一分钱的进行的,测试了好几毛钱呢。整体来说,效果还是不错的。不过有几次,需要用户进行登录,我们也没弄明白为什么,感觉可能是签名有问题吧,没有深入研究。


附录:支付宝官方文档(好无聊的附录啊):

https://openhome.alipay.com/developmentDocument.htm


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值