支付宝网银直连SDK封装记上|强力去掉支付宝网银直连DEMO中56个坏味道 余下6个坏味道 Sonarqube无视阿里支付宝光环

 Yuema约吗?一起学技术,一起成长!学海无涯 高人带路系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,进入学海无涯,高人带路模式!!微服务再难,有人带路,轻松搞定

名词约定
网银直连,通过第三方支付平台(比如支付宝)直接跳到银行的网上银行界面,不显示第三方平台支付界面(比如支付宝)。支付宝也称相关接口为《纯网关接口-create_direct_pay_by_user(20170526).zip》。
正文
蚂蚁金服支付宝网银直连是最难接的支付了,难不再于技术,在于技术前端的商务关。在线客服不再签约不给开通,只能联系客户经理走线下邮件开通。体验相当不好。今天依据支付宝提供的DEMO,封装了一个支付宝网银直连SDK。之所以要自己封装,是因为现有的alipay-sdk-java 4.6.0.ALL压根不包括网银直连接口。
<!-- 支付宝 https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->          <dependency>              <groupId>com.alipay.sdk</groupId>              <artifactId>alipay-sdk-java</artifactId>              <version>4.6.0.ALL</version>          </dependency>
为什么要封装
做为第三方代码,揉在项目里,显得有些突兀。封装出来,以后要使用,也可以直接引用进来使用。
   <!-- 支付宝网银直连SDK -->      <dependency>        <groupId>com.zhongdaiqi.alipay</groupId>        <artifactId>alipay-bankpay-sdk</artifactId>        <version>1.0.0</version>      </dependency> 
如果不封装,项目代码就膨胀起来了,也不够清晰。单独把网银直连的代码打包在一个SDK里,不仅让现有代码清晰。而且新项目也可以方便的使用。不用COPY多处代码,只需要引入sdk并将agent类copy过来。也是很方便的使用体验。
未封装的图示感觉

未封装的话,代码被打散在项目的角落里,对于这种“外来”代码,怎么可以跟小清新无坏味道的代码混在一起呢?
封装后的图示感觉

网银直连所使用到的验签、创建网银直连支付宝订单等相关的类都统一打包在这个AlipayBankSDK中。可方便的应用到多个项目中。
刚才有说到我们项目代码经过Sonarqube洗礼,清理了绝大数坏味道,而第三方的代码打包在sdk里就不用去坏味道么?当然,也是要去的。风格不统一,命名不符合我们的规范。自己封装,就自己清理吧!

       封装sdk的方法、清理坏味道的方法、从支付宝网银直连demo中发现的坏味道清单,请看篇的姐妹篇《支付宝网银直连SDK封装记下|强力去掉支付宝网银直连DEMO中56个坏味道 余下6个坏味道 Sonarqube无视阿里支付宝光环》

关注Yuema约吗公众号,回复”bankpay”,查看《支付宝网银直连SDK封装记下|强力去掉支付宝网银直连DEMO中56个坏味道 余下6个坏味道 Sonarqube无视阿里支付宝光环》

关注Yuema约吗公众号,每天都有新收获

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处

宜信星火金服月标来袭 新手292元红包邀请 月标加新手红包综合预期年化近30% 体验国内大平台专业服务 13年风控护航 疯抢月标

宜信是国内P2P网贷领域的创始企业,拥有13年风控实战经验,宜信推出的星火金服新手红包为292元,预期年化8.5%,使用新手红包,综合预期年化近30%。做为一款新手体验产品,备受网贷圈的欢迎,也是一款爆品。通过邀请链接二维码可获得​新手体验红包!

周期短,30天左右,可观的预期收益,新手注册后​必选的一款网货产品。新手注册后,一定要记得使用新手红包,仅能使用一个​。目前网贷圈最流行的选择是166红包+新手标(预期年化8.5%)。到期后,可直接提现,也可以续投。新手产品为体验产品,仅限新手体验。

抢标​小秘籍:

  1. 月标每天有额度限制,注册后要及时抢
  2. 每天会补充额度,没有抢到不要灰心,次日关注
  3. 宜信大数据风控有防羊毛党机制,被系统检查到恶意刷新红包,可能会被系统限制,无法查看到月标​,长期标可正常投。羊毛党要三思而行​。
  4. 如果月查看不到,可以等系统补充,也不要太​沮丧。
  5. 额度提醒服务可以加微信13439975582​ 注明:宜信抢标

网贷有风险 投资请谨慎

让天底下没有难接的支付|支付宝网银直连&转账到银行卡对接故事续集 支付对接不是一个单纯技术问题 网银直连转账到银行卡开通方式揭晓

话说接支付宝的故事已经有几个回合了,30年河东,30年河西,之前的支付宝已经不再是之前的支付宝啦,从技术上来讲,变得越来越古怪了。接口都被当成产品,各种需要签约啦。今天的重点在于支付宝网银直连、转账到银行卡两个接口,故事的来来回回已经越约了技术层面,俨然成了一场非技术层面拉锯。读完本故事,您应该懂得怎么开通支付宝网银直连、转账到支付宝,故事写于2019年9月29日下午16点46分。如果支付宝变来变去,故事也可能成为历史传奇,不再有效。

一、捉摸不透的官方客服

向官方客服进行咨询的话,先是机器人伺候,再到人工客服,统一都是说网银直连下线了、转账到银行卡下线了,无在线签约入口。蹊跷的是,在线客服提供可至电xxxx咨询,联系业务经理云云。

二、线下业务经理的快速通道

原来被当成无解的支付宝网银直连&转账到银行卡,竟然在支付宝业务经理BD的线下邮件开通方式下,可以开通。这已经不再是技术领域的问题了。看接口路径中的pre-open,文档顶部标明了定向开放文档。这些接口不签约,统统是不生效了,参考文档开发,也调不通。能走线下就不要去走线上,感觉线下就像一个绿色通道,无所不能。

2.1 支付宝网银直连

网银直连的文档看起比较老旧,像是之前的支付宝对接文档。demo也不难,不过,不签约的话,照着demo做,也无法直接跳到网银。官方提供的demo是java jsp版本,有点小小的不适应。

依据官方demo,转了一份Spring MCV版本

@RequestMapping(value = "api")  public String api(Model model, HttpServletRequest request) throws Exception {    // 支付类型    String payment_type = "1";    // 必填,不能修改    // 服务器异步通知页面路径    String notify_url = "https://i.zuime.com/create_direct_pay_by_user-JAVA-UTF-8/notify_url.jsp";    // 需http://格式的完整路径,不能加?id=123这类自定义参数    // 页面跳转同步通知页面路径    String return_url = "https://i.zuime.com/create_direct_pay_by_user-JAVA-UTF-8/return_url.jsp";    // 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/    // 商户订单号    String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"), "UTF-8");    // 商户网站订单系统中唯一订单号,必填    // 订单名称    String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"), "UTF-8");    // 必填    // 付款金额    String total_fee = new String(request.getParameter("WIDtotal_fee").getBytes("ISO-8859-1"), "UTF-8");    // 必填    // 订单描述    String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"), "UTF-8");    // 默认支付方式    String paymethod = "bankPay";    // 必填    // 默认网银    String defaultbank = new String(request.getParameter("WIDdefaultbank").getBytes("ISO-8859-1"), "UTF-8");    // 必填,银行简码请参考接口技术文档    // 商品展示地址    String show_url = new String(request.getParameter("WIDshow_url").getBytes("ISO-8859-1"), "UTF-8");    // 需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html    // 防钓鱼时间戳    String anti_phishing_key = "";    // 若要使用请调用类文件submit中的query_timestamp函数    // 客户端的IP地址    String exter_invoke_ip = "";    // 非局域网的外网IP地址,如:221.0.0.1    //////////////////////////////////////////////////////////////////////////////////    // 把请求参数打包成数组    Map<String, String> sParaTemp = new HashMap<String, String>();    sParaTemp.put("service", "create_direct_pay_by_user");    sParaTemp.put("partner", AlipayConfig.partner);    sParaTemp.put("seller_email", AlipayConfig.seller_email);    sParaTemp.put("_input_charset", AlipayConfig.input_charset);    sParaTemp.put("payment_type", payment_type);    sParaTemp.put("notify_url", notify_url);    sParaTemp.put("return_url", return_url);    sParaTemp.put("out_trade_no", out_trade_no);    sParaTemp.put("subject", subject);    sParaTemp.put("total_fee", total_fee);    sParaTemp.put("body", body);    sParaTemp.put("paymethod", paymethod);    sParaTemp.put("defaultbank", defaultbank);    sParaTemp.put("show_url", show_url);    sParaTemp.put("anti_phishing_key", anti_phishing_key);    sParaTemp.put("exter_invoke_ip", exter_invoke_ip);    // 建立请求    String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "get", "确认");    model.addAttribute("page", sHtmlText);    return "pay/alipay/mapi/api";

重点参数在paymethod、defaultbank。

String paymethod = "bankPay";//网银直连
String defaultbank= "CMB";//银行简码,参考支付宝对接文档详细说明

PS:敲黑板画重点,没有签约的话,是无法跳过去的,这些参数都不会生效,依旧会跳到支付宝的支付界面,而不是网银。

2.2 转账到银行卡

支付宝转账到银行卡https://docs.alipay.com/pre-open/api_pre/alipay.fund.trans.tobank.transfer

发起转账到银行卡后,支付宝会返回很详细的错误信息。

错误码 错误描述 解决方案
INVALID_PARAMETER 参数有误。 请根据入参说明检查请求参数合法性。
SYSTEM_ERROR 系统繁忙 可能发生了网络或者系统异常,导致无法判定准确的转账结果。此时,商户不能直接当做转账成功或者失败处理,可以考虑采用相同的out_biz_no重发请求,或者通过调用“(alipay.fund.trans.order.query)”来查询该笔转账订单的最终状态。
EXCEED_LIMIT_SM_AMOUNT 单笔额度超限 请根据接入文档检查amount字段
EXCEED_LIMIT_DM_AMOUNT 日累计额度超限 请根据接入文档说明检查本日请求总金额+本次请求金额是否超限。
EXCEED_LIMIT_MM_AMOUNT 月累计金额超限 请根据接入文档说明检查本月请求总金额+本次请求金额是否超限。
PAYCARD_UNABLE_PAYMENT 付款账户余额支付功能不可用 请付款账户登录支付宝账户开启余额支付功能。
PAYER_STATUS_ERROR 付款账号状态异常 请检查付款方是否进行了自助挂失,如果无,请联系支付宝客服检查用户状态是否正常。
PAYER_CERTIFY_CHECK_FAIL 付款方人行认证受限 付款方请升级认证等级。
PAYER_STATUS_ERROR 付款方用户状态不正常 请检查付款方是否进行了自助挂失,如果无,请联系支付宝客服检查用户状态是否正常。
PAYER_BALANCE_NOT_ENOUGH 付款方余额不足 支付时间点付款方余额不足,请向付款账户余额充值后再原请求重试。
PAYER_USER_INFO_ERROR 付款用户姓名或其它信息不一致 检查付款用户姓名payer_real_name与真实姓名一致性。
PAYMENT_INFO_INCONSISTENCY 两次请求商户单号一样,但是参数不一致 如果想重试前一次的请求,请用原参数重试,如果重新发送,请更换单号。
CARD_BIN_ERROR 收款人银行账号不正确 请确认收款人银行账号正确性,要求为借记卡卡号。
PAYEE_CARD_INFO_ERROR 收款方卡信息错误 请联系收款方确认卡号与姓名一致性。
INST_PAY_UNABLE 资金流出能力不具备 可能由于银行渠道在维护或无T0渠道,与联系支付宝客服确认。
PAYER_ACC_OCUPIED 付款人登录账号存在多个重复账户,无法确认唯一 如果未传输payer_account_name,请传入payer_account_name; 如果传入了payer_account_name,则是由于登录账号对应的多个重复账户的真实姓名一致,请更换登录号。
MEMO_REQUIRED_IN_TRANSFER_ERROR 根据监管部门的要求,单笔转账金额达到50000元时,需要填写付款理由 请填写remark或memo字段。
PERMIT_CHECK_PERM_IDENTITY_THEFT 您的账户存在身份冒用风险,请进行身份核实解除限制 您的账户存在身份冒用风险,请进行身份核实解除限制

依据官方提示,状态可以通过alipay.fund.trans.order.query接口进行查询核实。而官方的接口描述,又给出了神奇的描述。

https://docs.open.alipay.com/api_28/alipay.fund.trans.order.query

 * 转账单据状态。  SUCCESS:成功(配合"单笔转账到银行账户接口"产品使用时, 同一笔单据多次查询有可能从成功变成退票状态);  FAIL:失败(具体失败原因请参见error_code以及fail_reason返回值);  INIT:等待处理;  DEALING:处理中;  REFUND:退票(仅配合"单笔转账到银行账户接口"产品使用时会涉及, 具体退票原因请参见fail_reason返回值);  UNKNOWN:状态未知。   */  @ApiField("status")  private String status;

经典问题

SUCCESS:成功(配合"单笔转账到银行账户接口"产品使用时, 同一笔单据多次查询有可能从成功变成退票状态);请告诉我,什么时候才能一个转账的状态能最终定下来不能说多次查询,又从成功变成了退票请告之你们的转账到银行卡状态,在什么时候才能明确的认定为成功状态,而不是有可能从成功状态变成退票状态

感觉接口死循环了。发起转账状态要查询,查询状态又可能从成功变成退款,很是尴尬的局面。支付宝客服一直未给一个明确的答复,一个下午都在等答复。

写在收尾处

对接蚂蚁金服支付宝的网银直连、转账到银行卡,不是一个技术问题,而商务签约问题,不签约,不给文档,不给文档没有下文​。对于技术人来讲,收藏一份网银直连、转账到银行卡文档,是很有必要的。估计签名还没有签约,功能都可以提前​开发好了。

让天底下没有难接的支付

关注公众号【Yuema约吗】回复alipay,获取支付网银直连、转账到银行卡技术文档

ps:不签约接口不生效,但是可以提前开发

让天底下没有再难的微服务 一份有码有图的微服务教程分享| 找出教程Bug,还有礼品相送,学海无涯大师带路 行江湖,品微服务之美

 Yuema约吗?一起学技术,一起成长!学海无涯 高人带路系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,进入学海无涯,高人带路模式!!微服务再难,有人带路,轻松搞定

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处

小白也能玩微服务|站点巨人肩上 玩玩微服务! 微服务虽好,可要三思!带不动节奏,肿么可能?源代码,分析,高人带路,相信你不会不懂

 Yuema约吗?一起学技术,一起成长!他山之石,可以攻玉系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,可获取每日分享!小手点点,即可关注!

老是说微服务,微服务,有几个人在使用微服务,微服务真的好么?有必要使用么?怎么使用?怎么入门,怎么玩起来?今天先聊聊微服务,再原汁原味分享一位大神官方授权的小白带路篇微服务入门教程。

一、微服务的好 锁住构建规模

微服务是一种趋势?是的,随着系统越来越庞大,功能越来越多,“传统”的工程结构,会让今天的小伙伴,拖着10年前的老代码一起构建,有种心累的感觉。光构建一下,就很废时间,超过20分钟,是不是有种找PO哭的节奏,明明很简单的一个功能,明明一个简单的bug,却花了大量的时间等。有种前人挖坑,后人爬的节奏。微服务,可能破解了这个困境,让工程不再无止境的线性膨胀。

二、微服务好 防止业务拖累 防止代码污染

一个好端端的业务,运行稳定,每次发布部署新东西,都不相关,却要被影响一下,有种被拖累的不爽。微服务可能在防止不相关的业务拖累这块有所建树。同时,代码都分开,被污染到的可能性也就小了。pom包里新增加个东西,出现jar包冲突,是一件很不爽的事情,尤其在10年前一个老包,跟新包出现不可调和的冲突。

真的那么好么?当公司的业务规模达到一定程度,微服务是有所帮助的。但是,如果,那么就要好好想想了。

一、微服务不好 工程结构变得玄幻

当我打开一个支付集成的微服务项目,我已经找不到北,工程结构变得异常丰富,需要付出额外的学生成本。研发、部署都发生了变化。不过,不过,微服务的架子搭起来之后,也就按部就班,跟普通研发并无太大的变化。

二、微服务不好 学习维护成本高了

如果没有人带,微服务,真心不好玩。如果只是一个简单的功能,公司也没有成本走微服务,其实不玩微服务也好。玩微服务之后,就意味着,学习成本高了点。

好与不好,总是相伴相生,那对于小白来说,怎么掌握微服务呢?今天是拿到了官方授权,来Show一波小白教程,让天下没有再难的微服务。

https://github.com/zhongdaiqi/spring-cloud-example

关注公众号,查看教程更新
  • 创建微服务项目(Spring Boot)
  • 安装Consul服务中心
  • 注册服务到服务中心(Consul)
  • 创建Consul客户端项目
  • 调用Consul服务(消费服务)
  • 创建网关项目
  • Spring Cloud Gateway注册到服务器中心(Consul)
  • 网关中加入熔断机制
  • Consul集群Server模式
  • Consul集群Server+Client模式
  • Consul集群加入网关服务

For Boss

不要盲目追随微服务,重点考虑一下当前业务规模,业务系统简单、又没几个访问量,又没有钱,就不要微服务了。简单的也不错。

For 同行

快点学微服务,用得起微服务的公司,都是达到一定境界的公司。

学海无涯 高人带路

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处

南方人如何学会吃面就生蒜|破解北方人吃面吃生蒜小秘密 你不是吃不惯只是没人带 吃面这么吃生蒜 感觉纯正自然吃面小技巧

 Yuema约吗?一起学技术,一起成长!他山之石,可以攻玉系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,可获取每日分享!小手点点,即可关注!

南方人来到北方会发现很多有趣的“不良”习俗,吃面竟然要就着生蒜吃,简直是逆天而行!那味道那感觉,有种想哭的节奏。真的是不良习俗么?这里面隐藏着什么秘密呢?今天带大概10年上百次实验观察结果,破解其中的小秘密。

为了分析出其中的秘密,分互联网搜索、实验分组实验两大“研究”方法寻找其中的秘密。首先,不造轮子,看看前人是怎么个观点,经过多次寻找“海量”文献,都是这么说的。

一、健康因素

因为大蒜里包含有大蒜素,可以杀菌。一看就是从养生保健的角度来用脚思考的节奏。最开始,也感觉很有道理。随着时间推移,越来越觉得不靠谱。从养生角度,就是瞎BB,不中要点,不可取。还在以此为执念的南方人千万要走出这个误区,不然,永远不能领悟吃生蒜的秘密。

二、好吃

还有一种观点,这是历史流传下来的吃法,好吃。找几个南方人问问,好吃不好吃。吃着都想哭,泪流满面的节奏。说好吃也片面了。单纯说好吃,也站不住脚。谁说好吃,回个好吃个鬼。

想靠搜索找到答案,也是醉了,还得自己分析一下长期以来的观察。为了更好的推理,将观察的“实验组”分成几类。每次做实验,大概都得花15元,很多次都是吃一口,就终止了实验。“科研”成本,也是花了不少不少,而且是自费成本。

第一类实验 纯面不就蒜

纯面不就蒜,是什么节奏。来看一碗拉面,感受一下这波真实的拉面。

南方人能看出什么来?怎么这面跟童年的面条很不一样。单纯看碗里的成分,超级单调,可以简单的总结为,TMD,啥也没有。如何发一碗南方的面上来(唉,没有素材),对比一下就会发现。南方的面,更加丰富,配料,更为有味。所以,南方人在北方吃面,其实是一件很尴尬的事情,没什么味道,吃几口就想放弃。

第二类实验 纯面就蒜

这类实验,往往是痛哭流泪的场面。咬一口蒜,那辛辣那难受的节奏,有种怀疑人生。这么难吃,为啥让很多人喜欢?显然这个实验组划得太粗,于是拆解成两个小实验。

小实验一 啥不垃圾的吃法  嚼与吞咽并存

这种味道就生生体会生蒜的味道,有种粘着口腔黏膜,灼烧的不适感。很受虐的节奏。这种吃法,属于,错误的吃法,也是大部分南方人无法适应吃面吃蒜的原因。

小实验二 科学合理的吃法 嚼而不吞咽 等面一起吞咽

这个实验也是吃面生生蒜,吃法有所调整。嚼而不吞咽,等面一起吞咽。吃蒜会带来一种刺激,吃面能中合这种刺激,就像吃到咸的东西,赶紧喝点白开水冲淡一下。如果嚼与吞咽并存,就只是吃蒜,刺激过头,难受。而嚼而不吞咽,等面一起吞咽,则能在舒适的刺激程度。

以上实验坚持做了10多年,总得来看,吃蒜是很刺激难受,光吃生蒜是让人无法接受的。但是,面能中合这种刺激,让索然无味的面,带着点刺激,有点神奇的化学反应。所以,不能单纯说生蒜好吃,只有正确的吃法,掌握科学合理的技巧,南方人才能征服吃面就生蒜的北方风俗。

有木有Get到点 快去挑战一下

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处

看完一个外挂 我竖起了大拇指 | Yuema约吗 记录技术点点滴滴 | 从外挂看程序化运营 孰是孰非 与技术何干?骚年大胆玩起来

 Yuema约吗?一起学技术,一起成长!他山之石,可以攻玉系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,可获取每日分享!小手点点,即可关注!

这两天在分析一个外挂,当我看到这个外挂的时候,我惊呆了!分布式、策略配置、机器学习、机器视觉、钩子、自动化,高大上的关键词都踩到了!我不由得竖起了大拇指!真的很想膜拜一下外挂幕后的大码农!

抓TA?

这是一个让人非常难过的消息,外挂作者要被当成非法入侵计算机系统,被抓起来!这已经超出技术的范围,单纯从技术上来讲,外挂实现了官方平台未曾实现的功能,而且技术玩得都不简单,没有一定的功力,是组装不出强大的外挂。从非技术角度来讲,有人的地方就有江湖,触及到多方利益的时候,就得谈谈法律,谈谈期限了

猫鼠游戏

写外挂,就是与官方平台玩猫鼠游戏,见不得光,还得与官方平台的防挂机制不断的斗争。(行文中暴露了我倒戈外挂,政治立场不坚定,哈哈)真的很佩服外挂作者们所付出的努力,他们玩的技术与AI何等的神似。我看到的这个外挂,曾经应该是一个全自动的外挂,被官方防外挂机制,毁灭成半自动了。不过,看外挂作者并没有放弃努力。机器视觉、机器学习都用上了。这场游戏的过程,外挂作者得不断跟进官方程序,不断更新,不断的绕过防刷机制!想想,累不?

外挂博弈

抢火车票外挂,抓不抓?携程也提供抢火车票,抓不抓?很多互联网都蹭火车票流量,抓否?

外挂 vs AI

如果狠TA,就叫邪恶外挂,如果喜欢TA,就叫智慧AI.无所谓对与错,在于我们看问题的角度。不要狠外挂,对于技术人来讲,掌握了外挂技术,也是一笔财富!

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处

蚂蚁金服支付宝花呗分期支付接入实战分享|分分钟钟快速接入demo 企业开通接入花呗支付就是这么easy 想分就分 花呗技术走一波

 Yuema约吗?一起学技术,一起成长!他山之石,可以攻玉系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,可获取每日分享!小手点点,即可关注!

今天的目标是接通平安银行,正好看到花呗,就玩了一下花呗。还是很快的,在原来的支付基础上,做一些小的改动就可以支付花呗支付。当然,是两方面的事情,一要到支付宝后台签约花呗动作,并在开放平台将花呗支付能力加到应里,感觉有点怪怪,就一口气把所有的“能力”都追加了进去。二是代码啦!

先睹为快,体验链接直接拍上

#更新日志 2019.09.18 增加花呗支付demo https://i.zuime.com/order/alipay/payqrhb

这个码是直接设置了花呗分期的,可以直接扫码,会有分期付款的提示。感觉手续续还是不低哦~具体可以自己扫码感受一下。

代码小调整

public String tradePagePayQrHb(AlipayOrderBean orderBean) throws Exception {    AlipayClient alipayClient = buildAlipayClient();    AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();    AlipayTradePagePayModel model = new AlipayTradePagePayModel();    //request.setReturnUrl(returnUrl);    request.setNotifyUrl(notifyUrl);    model.setOutTradeNo(orderBean.getOutTradeNo());    model.setSubject(orderBean.getSubject());    model.setTotalAmount(orderBean.getTotalAmount());    model.setBody(orderBean.getBody());    model.setProductCode(orderBean.getProductCode());    model.setQrPayMode("4");    model.setQrcodeWidth(200L);    //model.setTimeExpire("2m");    model.setTimeoutExpress("2m");    ExtendParams params = new ExtendParams(); //花呗分期控制    params.setHbFqNum("3");    params.setHbFqSellerPercent("0");    model.setExtendParams(params);    request.setBizModel(model);    request.setNeedEncrypt(true);    return alipayClient.pageExecute(request).getBody();  }

花呗分期支付调的接口也是AlipayTradePagePay,只是传参数的时候多传了一下花呗分期参数。

    ExtendParams params = new ExtendParams(); //花呗分期控制    params.setHbFqNum("3");    params.setHbFqSellerPercent("0");    model.setExtendParams(params);

代码均为测试练习代码,请勿直接用于生产环境,代码经过Github.com的ci检查,能正常编译通过,可正常访问。本次花呗分期体验​连接:https://i.zuime.com/order/alipay/payqrhb

没有比较,就没有伤害

综合平安银行对接与支付宝对接,感觉真的是两种完全不同的体验​!传统厂商与互联网企业,完全两种不一样的研发​体验。

支付宝花呗接入,搞定

源代码获取,关注公众号,回复​”alipay”

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处

平安银行对接|银企对接扫雷排坑实战经验分享 感受一下财大气粗的银行对接 感受一下等长报文的痛苦 未曾经历无以感受他人在坑中崩溃状

 Yuema约吗?一起学技术,一起成长!他山之石,可以攻玉系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,可获取每日分享!小手点点,即可关注!

今天先是练习了一下支付宝花呗分期对接,很快就搞定了,可以通过以下网址体验​。

http://i.zuime.com/order/alipay/payqrhb

花呗对接完,我就琢磨着平安银行对接,先扫扫雷,至少要将一个接口调​通。向同事要到一堆文档、一个PinganController.cs、一个平安前置软件​。打开前置软件word文档一看,106页,还有好几个文档,这要是一行一行看过来,不仅时间没了,而且不好抓重点。由于就后厚着脸皮问同事了​。

一、平安银行企业前置程序

这个企业前置程序就相当一个请求代理,由平安银行提供​。默认使用的是jdk1.6,也支持1.8,要手动修改一下启动脚本​。尴尬的是,修改完jdk之后,还是跑不起来。一直追着同事问,然后拿到一个新的前置程序​,启动成功。

二、掉等长报文的坑

参考同事的.net版本,感觉有些东西还是要转化来转化去,就直接拿java demo,copy过来改改。结果4001查询余额的交易老是报企业未开通银企​互联。实在是想不到法子,换了好几个对接测试账号,无一​幸免。那就建个空白的工程,把PinganController.cs贴进去,跑起来,4001交易成功​,查到了余额。ps:同事给个cs文件,也是​醉了。.Net成功了,那Java也得成功​啊。梦想是这样子,同事跑来一顿指点,坑在java的demo未做4001报文​名的等长处理。

#net 大概是这么写的,意会一下String xxcode = mmcode =="4001"? "4001    ":mmcode;

java版本则未​做这种特殊处理。修正完之后,​跑起来了。

小目标达成,休息​

小结

相比alipay的对接,平安银行的对接,简直没谁了,要不是有同事踩过一次坑,我不知道在坑里要爬多少天。传统银行跟第三方支付,有种预感觉,还有很多坑即将出现~

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处

企业微信机器人邂逅jenkins 打造定时饭点通知机器人 准点提醒,呵护脆弱的胃

 Yuema约吗?一起学技术,一起成长!他山之石,可以攻玉系列

程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
关注公众号,可获取每日分享!小手点点,即可关注!

距离上一版企业微信机器人分享,已经很久很久了,有小伙伴一直问企业微信机器人开发。其实,整体上分两大类。一类是企业微信后台的应用开发,那种是可以做成交互性质的机器人,更麻烦更麻烦,二类是从群聊面板创建的“强势机器人”只发信息,不能进行交互,很简单很简单。

玩转企业微信群聊机器人 用机器人定时提醒饭点 订餐时间 任务时间 下班时间 任务代办事项 每个人都可以快速拥有的一个Robot

今天,要使用jenkins 打造一个更加精致的小机器人。之前的windows作业,有点不友好,弹窗执行。今天的jenkins,无代码,全是配置。jenkins安全,可以参考之前jblog自动构建的文章完成。

JBlog自动构建环境搭建 实战练习jenkins+sh+spring+java+github webhook 自动构建博客系统

jenkins部署提示

1.下载jar包wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war2.启动jar包  nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war  --httpPort=8080 &nohup java -jar /data/jenkins.war --httpPort=8080 &

脚本

官方的示例代码简单的修改一下,就成了本次作业所需要的脚本代码。

curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=33ee91a3-b911-41f9-b86e-006416fe6b70' -H 'Content-Type: application/json' -d '{ "msgtype": "text", "text": {  "content": "饭点到,赶紧脱离工作状态,准备出发!" } }'

作业创建

  1. 选择新建作业
  2. 选择构建一个自由风格的软件项目
  3. 在构建操作中增加脚本,将脚本帖进去。
  4. 构建触发器,选择定时构建,比如早上11点45触发,则输入45 11 * * 1-5,也可以点开旁边的问号查看详细的定时构建周期配置说明。

验证

可以手动点击构建,可以看到机器人在群里发送信息。

饭点到,赶紧脱离工作状态,准备出发!

定时构建在会指定的周期进行构建,执行脚本,发出信息。

结束语

今天分享的jenkins+企业微信机器人打造饭点提醒机器人,比之前的分享更加友好些,无语堆代码,只需要使用第三方开源的产品结合企业微信机人官方demo即可实现,非常简单。如果要实现更复杂的机器人,则需要写更复杂的脚本,留个悬念~

关注公众号,期待吧!

作者:钟代麒

出处:http://www.jishudao.com/
版权归作者所有,转载请注明出处