android支付平台,android移动支付

前言

目前移动端支付比较常用的就是支付宝,微信,银联了,其实集成支付对于前端来说还是比较简单的,于是简单的做下笔记.

别人的总结,收藏一下:

步骤

微信

步骤1:

初始化微信支付api对象

//第二个参数为app_id

IWXAPI api = WXAPIFactory.createWXAPI(this, "wxb4ba3c02aa476ea1");

步骤2:

下订单,提交商品参数到服务器,这时请求成功后台会返回一个唯一的订单号.

步骤3:

通过订单号请求服务器,这时请求成功后台会返回一个支付串码

步骤4:

调用微信支付SDK,传入“支付串码”

/**调用微信支付*/

public void sendPayRequest() {

PayReq req = new PayReq();

//支付串码

req.appId = Constants.APP_ID;

req.partnerId = wechatPayInfo.getPartnerId();//合作者id

req.prepayId = wechatPayInfo.getPrepayId()+"";//微信支付核心参数:预支付订单号

req.nonceStr = wechatPayInfo.getNonceStr();

req.timeStamp = wechatPayInfo.getTimestamp();

req.packageValue = wechatPayInfo.getPackageValue();

req.sign = wechatPayInfo.getSign();

// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信

//3.调用微信支付sdk支付方法

api.sendReq(req);

}

步骤5:

处理支付结果回调

微信支付异常:

问题: 微信支付第一次支付成功,第二次开始都是失败,返回-1 ,需要清除微信数据,重新登录后,还是只能支付一次成功,后面支付都是返回-1.

百度了一轮,最终答案都是微信开发者平台的appId,包名或者签名错了.

请参考:

https://blog.csdn.net/nnmmbb/article/details/50533138

最终还是没解决,原来是后台返回的appId错了,他返回的是公众号的appId,所以只能调起一次,其实后台返回的appid和我们微信开发者平台的appid是一样的.

解决思路:

iOS不需要验证签名合法性,就是说他们appid不需要绑定boundID,Android需要绑定包名签名。也就是说如果后台返回的appid不对iOS也可以唤起。

官网下载的demo,Android也只能唤起一次,而iOS可以一直唤起。

如果你检查你的签名包名配置什么的都是对的,那百分之99是后台返回的appid有问题。不要因为iOS可以唤起就认为后台没问题。

因为客户端不够安全,所以appsercret等要放在后台,客户端做的事情非常少,只需要1. 用appid注册wxapi 2. 从后台获取支付信息 3. 调用sdk发起支付 4. 接收支付结果 5. 请求自己的业务服务器是否支付成功

最后感谢各位大佬,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值