安卓端 微信钱包,支付宝开发总结

近日,公司需要做一个电商功能,自然涉及到支付功能,就目前来说,一个小公司做各个银行的对接不太可能,要么借用第三方的,比如有个朋友公司的智付,那回归自己,就是基于微信钱包和支付宝了,总体来说,没什么技术难度,就是有各种坑,现在来聊聊开发这个功能中碰到的坑。
先以商家身份,注册两个平台,获取一些基本信息,注册的时候注意包名,应用签名(即生成pgk时所用的SHA1值),这些是两个平台共同的信息,注意即可。
现在聊聊注册时两个平台的不同之处:
微信端:
APP_ID,MCH_ID,API_KEY,WEIXIN_CALLBACK_WEB_URL,主要获取这四个信息,APP_ID是在微信注册时应用对应的ID,MCH_ID是商家的ID,都是作为唯一识别,WEIXIN_CALLBACK_WEB_URL是用户支付成功后微信返回给商户的状态回调地址,特别要注意的是这个API_KEY,这个不是注册页面看到的secret,而是需要登入商户平台(pay.weixin.qq.com   只能IE打开(安卓端 微信钱包,支付宝开发总结),账户设置-->API安全-->**设置,这个才是我们需要的API_KEY.

支付宝:
支付宝相对来说也有几个要注意的点,PARTNER--商户的PID,SELLER--商户收款账号,要注意的是支付宝的**,它有几个平台的**,要注意相对应的功能,合作伙伴**(快捷登录、移动支付、即时到账收款、手机网站支付等),开放平台**(电子券、扫码支付、条码支付、声波支付、服务窗、芝麻分、芝麻报告、风险名单、反欺诈服务、互看芝麻信用信息等),**的生成都是用openssl生成,pkcs8格式。说说APP中需要用到的,在查看开发者公钥中设置我们通过openssl生成的应用公钥,然后在合作伙伴**中获取支付宝公钥,安卓端 微信钱包,支付宝开发总结,在开放平台中设置应用APP的私钥(pkcs8加密转换过的),到此,支付宝的**设置完成。
接下来是开发流程
微信端:
安卓端 微信钱包,支付宝开发总结

支付宝端:
安卓端 微信钱包,支付宝开发总结
在流程上,两者没有多大区别,总结下来,在应用APP中点击购买,然后在APP后台生成订单号,返回应用app,然后调用本地的(微信或支付宝)进行付款,付款成功或者失败,微信或者支付宝都会向应用和应用后台返回支付状态(通过注册的回调地址返回),用户支付完成后,向后台获取支付状态再进行其它业务流程。在此要吐槽两点,如果本地没有安装微信或者支付宝,然后用户进行支付时,微信的处理是提醒安装支付,支付宝是会跳转到一个支付的H5页面(比微信棋高一着)进行支付。但是在支付状态的返回时,支付宝给APP和APP后台返回状态是异步的,所以可能出现的情况是,APP中已经收到支付成功的状态,但是APP后台还没有,但是在此期间APP去向后台获取支付状态,自然该支付状态是未支付的状态,所以大家要注意此处应该做个延时或者重复获取支付状态的操作来解决这个问题