支付宝支付和微信支付的记录和总结
1. 支付宝支付的记录
- 1.没装支付宝app点击支付功能会调起h5支付页面,比微信方便。
- 2.支付结果会调直接在同一个函数内非常方便。
2.微信支付记录
1.支付调不起来
1.手机的Rom太小程序运行不起来。有一个android5.0的手机因为Rom太小微信支付调不起来,删除多余的运用和文件后微信支付可以调起来了。2.public void onResp(BaseResp resp) resp.errCode 返回-1
1.在服务端设置应用签名不对。应用签名需要用微信提供的获取签名工具,使用的测试和发布以及在平台上填写的包名一致。将签名工具和打包测试的测序一起装到同个手机上,启动签名app输入打包测试的app的包名,签名app这时会产生签名数据。
2.修改完签名后需要等几个小时微信服务器数据同步我这边测试大概花了2个多小时。
3.服务端产生的支付数据有问题。3.public void onResp(BaseResp resp) resp.errCode 返回-2
1.隔次返回-2可能有对某些安卓版本不支持如android5.0以下的版本,微信支付的sdk为最新的sdk。测试android4.1和android4.4有这个问题。4.微信支付sdk和友盟使用的分享sdk产生冲突,需要把友盟依赖的微信分享sdk去支付功能。
5.微信支付不支持没有安装微信app调起h5支付功能。
3.工具类的封装
1.网络访问功能类封装。
2.支付工具类封装。支付数据类封装,支付发起工具类封装
支付宝支付方法
public void ZFBPay(final Context context, final String signInfo, final PayResultListener payResultListener) {
new Thread() {
@Override
public void run() {
super.run();
PayTask payTask = new PayTask((Activity) context);
Map<String, String> result = payTask.payV2(signInfo, true);
PayResult payResult = new PayResult(result);
if (TextUtils.equals(payResult.getResultStatus(), ZFBPAYSUCCESS)) {
if (null != payResultListener) {
payResultListener.paySuccess(payResult.getResult());
}
} else {
if (null != payResultListener) {
payResultListener.payFailure(payResult.getResult());
}
}
}
}.start();
}
微信支付方法
public void WeiXinPay(final Context mContext, final SubmitWXBean submitWXBean, final PayResultListener payResultListener ) {
this.payResultListener = payResultListener;
PayReq req = new PayReq();
req.appId = submitWXBean.prepay.appid;
req.partnerId = submitWXBean.prepay.partnerid;
req.prepayId = submitWXBean.prepay.prepayid;
req.nonceStr = submitWXBean.prepay.noncestr;
req.timeStamp = String.valueOf(submitWXBean.prepay.timestamp);
req.packageValue = submitWXBean.prepay.packageX;
req.sign = submitWXBean.prepay.sign;
api.sendReq(req);
}
回调接口设计
public interface PayResultListener {
void paySuccess(String result);
void payFailure(String failure);
}
3.支付结果回调
-1.微信支付结果回调
1.结果activity设置
由于腾讯处理回调数据是通过注册相关activity来实现支付结果状态数据回调的,因此出现了调用activity和结果activity不在同一位置的问题。2.结果数据回调设计 通过在调用activity给支付工具类注册监听回调接口,在结果回调界面检测支付工具中的监听接口是否为空,如果不为空将数据设置到支付工具中的监听方法中。调用activity这时可以接收到回调数据
-2.支付宝支付结果回调
移动端支付完成后支付方法里面有数据回调的方法,在回调方法中获取到支付结果状态数据并且回调给ui界面处理4.支付结果和服务端数据同步。场景手机端支付完成后,微信或者支付宝服务端通知自己的服务端支付结果,移动端这时需要去检测自己服务端是否已经收到支付结果,检测完了以后移动端再开始其他业务功能