本文介绍博主自己封装的一个微信支付和支付宝支付的library

apppay_library:https://github.com/gumingwei/app_pay

本项目解决的问题仅限于最后的支付环节,即你告诉我多少钱,我带着这个多少钱的信息发起微信支付或者支付宝支付,仅需简单的配置信息,然后每次支付只需调用三句代码即可发起支付,封装了对订单信息的拼装,订单的签名等。不牵扯订单的处理,订单需要再自己的服务器端处理。下面是我在接入微信支付与支付宝支付的时候遇到的一些问题。

关于微信

     注册啥的就带过不说了

     微信的SDK是比较坑的,下载微信SDK的有两个地方

百度知道的话你跟不会知道有一个抽象类的子类需要强制转换才能拿到一个叫code的参数,其实这个参数名不叫code叫token,见此博客:

     1里下载到的东西是一个html的文档和一个lib/libammsdk.jar 也就是你只能看到有哪些接口,有哪些类。然而并不知道怎么用。

     2里面是一个demo,这个demo恰恰没有获取code的例子,看完你就更无语了。藏得好深....心想微信你这是玩我呢.......

APP java 实现微信支付_APP java 实现微信支付

     

      地方二:这个地方需要跳转到微信商户平台才能找到

      走过下面两步才能下载到有支付功能的sdk,他俩的名字一模一样,就连包名都是一模一样的呢?你以为他俩就是一个东西了?错

APP java 实现微信支付_APP java 实现微信支付_02

导入覆盖之后你发现前面写的报错了,真的,报错了啊。包名是一样,但是有两个类乾坤大挪移的另一个包下了,叫BaseReq和啥来着,忘记了。然后改了import之后发现还是错,参数错了,刚刚强制转换的token找不到了,code又出来了,这次也不用强制转换了。

APP java 实现微信支付_微信支付_03

结论是直接去下载地方二处的sdk

关于支付宝

      付宝倒是没遇到啥问题,唯一注意的地方是生成private_key和public_key的时候注意别整错了,那是最容易出错的地方。

      

最后来介绍一下我们的支付library应该怎么使用

微信

      在WxConfig.Java 中配置你在商户平台生成的KEY。

      微信提交一个预支付订单之后会得到一个XML格式的预支付订单信息,然后把这个XML传递给pay方法就可以发起支付了。

      微信接受返回结果是通过一个Activity,也就是WXPayEntryActivity,这个要放在你的项目的com.example.test.wxapi的包,com.example.test是你项目自己的包名。

[java]  
   view plain  
   copy 
   
 
   
 
   
 
   
 
 
1. IPayFactory factory = new WxFactory();  
2. WxPay pay = (WxPay) factory.createPayEntry();  
3. pay.setWxPay(PayActivity.this);  
4. pay.pay(info);//info就是你的订单信息

支付宝 

      在AliConfig.java中配置你的   商户号PARTNER,收款账号SELLER,回调URL,私钥RES_PRIVATE,公钥RES_PUBLIC

      支付宝跟微信不同的是支付宝没有预支付这个环节,拼装订单之后直接发起支付就好了,

      需要一个Handel来接受支付结果

[java]  
   view plain  
   copy 
   
 
   
 
   
 
   
 
 
1. IPayFactory factory = new AliFactory();  
2. AliPay alipay = (AliPay) factory.createPayEntry();  
3. alipay.setAliPay("商品名称","商品描述", "订单号","价格");  
4. alipay.pay(PayActivity.this, mHandler, SDK_PAY_FLAG);