微信支付SDK-两行代码解决支付
2016-05-09 13:58
393 查看
背景
让使用微信支付的朋友最快速度接入微信支付.核心
两行代码解决微信支付提供的各种服务, 开箱即用, 可扩展性超强(只需根据服务的上下行协议定义协议类后, 放入工厂即可获取调用结果).架构图
项目源代码
源码地址 http://wocoding.com/item.htm?hashId=wZlZgM81目前支持的服务及调用示例
所有服务在单元测试类(WXPayClientTest.java)中均已测试通过, 下行参数response.isSuccess == true表示服务调用成功.
扫码支付
文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1String nonceStr = SDKUtils.genRandomStringByLength(32); UnifiedOrderRequest request = new UnifiedOrderRequest("wuspace-899",SDKUtils.genOutTradeNo(),1, "192.168.1.1", asyncNotifyUrl, "NATIVE", nonceStr); UnifiedOrderResponse response = wxPayClient.execute(request); Assert.assertNotNull(response); LOG.info(JSON.toJSONString(response));
公众号支付
文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1String nonceStr = SDKUtils.genRandomStringByLength(32); UnifiedOrderRequest request = new UnifiedOrderRequest("wuspace-899",SDKUtils.genOutTradeNo(), 1, "192.168.1.1", asyncNotifyUrl, "JSAPI", nonceStr); request.setOpenId("oKVmeuHht8J0Ni58CSNe474AHA3E"); UnifiedOrderResponse response = wxPayClient.execute(request); Assert.assertNotNull(response); LOG.info(JSON.toJSONString(response));
APP支付
文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1String nonceStr = SDKUtils.genRandomStringByLength(32); UnifiedOrderRequest request = new UnifiedOrderRequest("wuspace-899",SDKUtils.genOutTradeNo(), 1, "192.168.1.1", asyncNotifyUrl, "APP", nonceStr); UnifiedOrderResponse response = wxPayClient.execute(request); Assert.assertNotNull(response); LOG.info(JSON.toJSONString(response));
商家支付
文档详见: https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2String nonceStr = SDKUtils.genRandomStringByLength(32); String customerOpenId = "oKVmeuHht8J0Ni58CSNe474AHA3E"; MchPayRequest mchPayRequest = new MchPayRequest(SDKUtils.genOutTradeNo(), customerOpenId, "NO_CHECK", 100, "xxxx年xx月结算", "192.168.1.1", nonceStr); MchPayResponse response = wxPayVIPClient.execute(mchPayRequest); Assert.assertNotNull(response); LOG.info(JSON.toJSONString(response));
退款
文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_4&index=6String nonceStr = SDKUtils.genRandomStringByLength(32); RefundRequest request = new RefundRequest("T15121416014891124211768", SDKUtils.genOutRefundNo(), 1, 1, "112102020", nonceStr); RefundResponse response = wxPayVIPClient.execute(request); Assert.assertNotNull(response); LOG.info(JSON.toJSONString(response));
支付异步通知解析
文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_7String notifyTxt = "<xml>\n" + " <appid><![CDATA[wx2421b1c4370eccdcd]]></appid>\n" + " <attach><![CDATA[支付测试]]></attach>\n" + " <bank_type><![CDATA[CFT]]></bank_type>\n" + " <fee_type><![CDATA[CNY]]></fee_type>\n" + " <is_subscribe><![CDATA[Y]]></is_subscribe>\n" + " <mch_id><![CDATA[10000100]]></mch_id>\n" + " <nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>\n" + " <openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>\n" + " <out_trade_no><![CDATA[1409811653]]></out_trade_no>\n" + " <result_code><![CDATA[SUCCESS]]></result_code>\n" + " <return_code><![CDATA[SUCCESS]]></return_code>\n" + " <sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>\n" + " <sub_mch_id><![CDATA[10000100]]></sub_mch_id>\n" + " <time_end><![CDATA[20140903131540]]></time_end>\n" + " <total_fee>1</total_fee>\n" + " <trade_type><![CDATA[JSAPI]]></trade_type>\n" + " <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>\n" + "</xml>"; PayNotifyResponse response = wxPayClient.parseNotify(notifyTxt, PayNotifyResponse.class); Assert.assertNotNull(response); LOG.info(JSON.toJSONString(response));
刷卡支付
文档详见: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1目前公司未使用, 待续......
扩展
该SDK设计了一个服务工厂, 该工厂中包含HTTP执行器/返回数据解析方式(json/xml)/入参数据格式(json/xml)构造等, 开发人员需要增加服务仅需要根据服务协议文档编写上下行协议, 并在协议中指明API接口和返回数据类型, 再将上行协议放入工厂中执行即可; 可参考已完成的服务协议进行扩展编写.转载地址:https://segmentfault.com/a/1190000005048192
相关文章推荐
- 微信编辑自定义菜单
- 微信支付开发-从零开始-Part3
- 基于微信的域名交易系统(进度汇报之微信接口)
- 基于微信的域名交易系统(进度汇报之功能实现现状)
- 一步一步实现iOS微信自动抢红包(非越狱)
- 微信分享操作JSSDK
- PHP微信开发之微信消息自动回复下所遇到的坑
- 基于微信的域名交易系统(进度汇报之页面设计原型)
- 60、微信-聊天页面ChatActivity
- 59、微信-我-设置SettingActivity
- 58、微信-我-我的二维码MyCodeActivity
- 57、微信-我Fragment_Profile
- 微信开发全局返回码说明
- 微信入坑第二弹【自动回复消息下】
- 微信公众平台(测试接口)准备工作
- 我对于微信文章的感悟
- 微信入坑第二弹【自动回复消息上】
- PHP微信开发之微信消息自动回复下所遇到的坑
- 若有多台服务器且未部署全局session 用传值方法进入微信公众号
- 微信对接注意事项-jar设置