发布时间:2022-12-01 23:35:19 文章来源:互联网
微博 微信 QQ空间

测试地址项目背景为什么想做这个一是工作中也接触到了支付宝

测试地址项目背景为什么想做这个一是工作中也接触到了支付宝

测试地址

项目背景

之所以想做这个,一来是因为在工作中也接触到了支付宝和微信支付,二来也是想打造一个收费的服务。比如我以后要给一个程序收费,我可以直接让用户扫码支付,不用微信沟通。

了解哪些支付方式适合个人支付

微信支付:需要营业执照,对我个人来说比较难,所以放弃了。

支付宝移动支付:大部分还需要营业执照,个人比较难,所以放弃了。

爬虫和监控手机信息:操作过于繁琐,爬虫好像很容易被屏蔽而放弃。

支付宝当面支付可以暂时支持不需要营业执照,只需要店面照片的个人。

开通支付宝当面支付流程

开通当面支付(点击下方链接打开)

开通面对面支付

选择“Department Store Retail/Other Retail/Grocery Store”作为业务类别企业支付宝如何开通当面付,或者其他……问题不大。营业执照不需要上传店牌。你可以用你的身份拍一张百货公司的照片,或者在百度上找一张类似的照片来创建一个应用程序并添加支付功能。

可以参考官方文档:(或者按照我下面的步骤)

创建应用程序

创建应用(点击链接进入)

/平台/去…

填写相关申请信息申请能力添加

应用开发设置 设置接口签名方式,填写手机收到的验证码下载支付宝开放平台开发助手,即密钥生成工具/open/291/in...

上传刚刚生成的应用公钥

点击保存上传的应用公钥后,弹窗会显示支付宝公钥

设置应用网关等

应用提交审核

审稿一般需要一天左右,运气好的话半天左右

开始写代码

刷脸支付,我把流程总结为两步,1.获取支付二维码,2.支付回调。

获取支付二维码

public String preCreateOrder(AliPayInfo aliPayInfo) throws AlipayApiException {
        AlipayClient alipayClient = aliPayBusinessConfig.getAlipayClient();
        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
        request.setNotifyUrl("https://ggball.top/notify/ali/pay/face/notify");
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", aliPayInfo.getOutTradeNo());
        bizContent.put("total_amount", aliPayInfo.getTotalAmount());
        bizContent.put("subject", aliPayInfo.getSubject());
 商品明细信息,按需传入
//JSONArray goodsDetail = new JSONArray();
//JSONObject goods1 = new JSONObject();
//goods1.put("goods_id", "goodsNo1");
//goods1.put("goods_name", "子商品1");
//goods1.put("quantity", 1);
//goods1.put("price", 0.01);
//goodsDetail.add(goods1);
//bizContent.put("goods_detail", goodsDetail);
 扩展信息,按需传入
//JSONObject extendParams = new JSONObject();
//extendParams.put("sys_service_provider_id", "2088511833207846");
//bizContent.put("extend_params", extendParams);
 结算信息,按需传入
//JSONObject settleInfo = new JSONObject();
//JSONArray settleDetailInfos = new JSONArray();
//JSONObject settleDetail = new JSONObject();
//settleDetail.put("trans_in_type", "defaultSettle");
//settleDetail.put("amount", 0.01);
//settleDetailInfos.add(settleDetail);
//settleInfo.put("settle_detail_infos", settleDetailInfos);
//bizContent.put("settle_info", settleInfo);
 二级商户信息,按需传入
//JSONObject subMerchant = new JSONObject();
//subMerchant.put("merchant_id", "2088000603999128");
//bizContent.put("sub_merchant", subMerchant);
 业务参数信息,按需传入
//JSONObject businessParams = new JSONObject();
//businessParams.put("busi_params_key", "busiParamsValue");
//bizContent.put("business_params", businessParams);
 营销信息,按需传入
//JSONObject promoParams = new JSONObject();
//promoParams.put("promo_params_key", "promoParamsValue");
//bizContent.put("promo_params", promoParams);
        request.setBizContent(bizContent.toString());
        AlipayTradePrecreateResponse response = alipayClient.execute(request);
        if(response.isSuccess()){
            System.out.println("调用成功");
            log.info("res:{}",response.getBody());
            JSONObject jsonObject = JSONObject.parseObject(response.getBody());
            return jsonObject.getJSONObject("alipay_trade_precreate_response").getString("qr_code");
        } else {
            log.error("res:{}",response.getBody());
            System.out.println("调用失败");
            return "";
        }
    }

如果是本地测试,可以使用钉钉提供的免费内网渗透工具。这里我用的是自己的服务,frp内网穿透到本地。回调地址必须是公网可以访问的域名,否则回调失败。

支付回调

@PostMapping ("/notify")
    public String preOrderNotify(HttpServletRequest request) throws AlipayApiException {
        //获取支付宝POST过来反馈信息,将异步通知中收到的待验证所有参数都存放到map中
        Map<String, String> params = new HashMap<String, String>();
        Map requestParams = request.getParameterMap();
        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
            }
            //乱码解决,这段代码在出现乱码时使用。
            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }
        log.info("params:{}",params);
        //调用SDK验证签名
        //公钥验签示例代码
        boolean signVerified = AlipaySignature.rsaCheckV1(params, aliPayBusinessConfig.getPublicKey(), aliPayBusinessConfig.getCharset(), aliPayBusinessConfig.getSignType());
        //公钥证书验签示例代码
        //   boolean flag = AlipaySignature.rsaCertCheckV1(params,alipayPublicCertPath,"UTF-8","RSA2");
        PayBill oldPayBill = payBillService.getPayBillByNotifyId(params.get("notify_id"));
        if (null != oldPayBill) {
            return "success";
        } else if (signVerified) {
            // TODO 验签成功后
            PayBill payBill = new PayBill();
            payBill.setOrderNum(params.get("out_trade_no"));
            payBill.setIsPay(true);
            payBill.setNotifyId(params.get("notify_id"));
            payBill.setPayerId(params.get("buyer_id"));
            payBill.setSellerEmail(params.get("seller_email"));
            payBill.setSellerId(params.get("seller_id"));
            payBill.setTradeNo(params.get("trade_no"));
            payBill.setBuyerLogonId(params.get("buyer_logon_id"));
            PayBill newPayBill = payBillService.updatePayBill(payBill);
            // push queue
            try {
                QueueCore<PayBill> billQueueCore = new QueueCore<>("NOTIFY_JOB");
                billQueueCore.get("NOTIFY_JOB").push(newPayBill);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            return "success";
            //按照支付结果异步通知中的描述,对支付结果中的业务内容进行1\2\3\4二次校验,校验成功后在response中返回success
        } else {
            // TODO 验签失败则记录异常日志,并在response中返回fail.
            return "fail";
        }
    }

这是支付宝提供的代码。您可以添加自己的签名验证失败和成功逻辑代码。这里我把结果放到队列里,为了后面把数据存到数据库企业支付宝如何开通当面付,通知我其他服务支付结果等等。

测试截图

测试地址

不同风险等级的产品,投资方向很不同(图)

最近,金融圈来了一个大瓜。“宇宙第一行”的工行所销售的资管产品,被雷到了。一个大银行带货,大基金公司操作,盈利4个点,风险R3爆的产品,怎么可能?在业内人士看来,可能有两方面的原因。一是标的资产暴涨,二是期限错配(用短期的钱买长期的产品)。

工行事件后,有人劝投资者买理财不要迷信大机构。但问题是,如果连大银行都信不过,我还能痛快买理财吗?

事实上,购买理财产品与平台无关。理财产品的风险是由标的资产决定的,也就是金融机构把你的钱投在什么上面。那么问题来了,普通投资者如何理解理财产品和标的资产的风险,老鲁会今天与大家分享。

不同风险等级的产品有不同的投资方向

银行理财市场的风险评级有两种,一种是针对理财产品的,一种是针对投资者的。

银行理财产品评级分为五个等级,即R1(低风险)、R2(中低风险)、R3(中风险)、R4(中高风险)、R5(高风险)。对应投资者的风险承受能力,也分为五个等级,即C1(保守)、C2(稳健)、C3(平衡)、C4(激进)、C5(激进)。理论上,银行不能向客户销售超出其风险承受能力的产品。

老鲁在一家商业银行的APP上找了几款理财产品,看看不同风险等级的产品之间的区别。

从该表可以看出,R1和R2风险产品的投资范围基本相同,固定收益类资产是指债券、同业存单、银行存款、同业拆放等金融资产。R3、R4、R5产品均配置不同比例的权益类资产,包括但不限于股票、外汇、黄金等波动性较大的金融产品。正是这部分股权资产,使得金融产品的风险更大。

目前,银行理财产品的风险评级并没有统一的标准,因此不同银行可能对同一类型的理财产品给予不同的风险评级,也可能出现理财产品的实际风险不尽相同的情况。不同于标榜的风险,所以大家都在买理财产品。在做产品之前一定要多加注意,不仅要看风险高低,还要学会阅读产品说明书中的“产品投资范围和方向”。

中低风险产品等于没有风险吗?

可能有人会说,产品的标的资产投资太专业了。即使我阅读了产品手册,我仍然对风险等级感到有些困惑。那我就闭着眼睛买中低风险或者低风险的产品,可以吗?

不能!中低风险≠无风险。

据新华社报道,近期有投资者因购买的R2理财产品出现亏损向银行投诉,理由是该产品涉嫌虚假宣传。该投资人表示:“50万元购买的产品,一个月已经亏了近2000元,实在难以接受。”

事实上,银行在产品说明书中已经明确标明了主要风险。因此,银行也觉得自己受了委屈。有理财经理表示,虽然销售人员会提醒客户注意风险,但客户没有耐心,只关心收益率。因为在大多数投资者的印象中,以往在银行购买理财产品最重要的是保本保息。银行理财怎么可能赔钱?

因为资管新规出台后,银行理财产品必须突破刚性兑换。我们看到,今年以来,银行理财产品开始向净值化转型,让理财产品在运作过程中的浮亏情况真实地展现在客户面前。上半年,部分银行理财产品跌破净值即出现亏损,令投资者感到意外。原因还在于标的资产。由于上半年债券市场剧烈波动,配置较多债券资产的理财产品受到影响。

中国金融网数据显示,目前银行理财子公司共发行2163只产品,其中5级(高风险)产品1只,4级(中高风险)产品5只,4级(中风险)3只。险)产品。共有1316种产品,815种为二级(中低风险)产品,26种为一级(低风险)产品。也就是说,在投诉重灾区,中低风险产品占比高达38%,而中风险产品占比高达61%。

部分投资者固守以往对银行理财产品的认知,认为中低风险或低风险就是无风险邮政银行理财有风险吗,这是绝对不能接受的。

部分银行调整产品风险等级

向客户充分说明风险是银行的责任。近期出台的《商业银行法》修订提到,商业银行应当充分了解和评估客户的风险偏好和风险承受能力,充分提示客户风险,确保提供的产品和服务符合客户的风险承受能力。匹配。

为此,今年以来,交通银行建设银行工商银行等多家商业银行纷纷调整理财风险等级,提前“筑牢”极端市场行情。

10月13日,中国建设银行正式公告调整个人客户风险评估业务。优化版在措辞上更加谨慎,将原来的“收益型”调整为“谨慎”,将原来的“进取型”调整为“进取型”。”。

8月,工行宣布调整代理产品风险等级。工商银行表示,调整后,客户的风险承受水平可能与产品的风险水平不匹配,持有相关产品的客户可根据自身实际情况决定是否进行相应调整。

此前,今年5月,交通银行宣布调整单项产品风险等级的名称和表述以及单项风险承受能力等级的表述。最大的变化是,针对最高级别的“激进型”投资者,首次发出“可能损失全部本金”的风险提示:最坏情况下,可能导致投资本金损失殆尽,对因投资造成的任何损失承担责任。

虽然我们去银行购买理财产品前肯定会被要求做风险评估,但坦白说,有些风险评估只是走个形式邮政银行理财有风险吗,投资者不太重视,导致失败。风险评估以达到应有的效果。

某大型国有银行相关人士直言,对于银行而言,需要更加合理地评估金融创新产品的风险水平,适当告知投资者风险匹配度,避免误导投资者的判断由于复杂的交易结构,以免发生纠纷。

随着银行“硬换汇”被打破,投资者不仅要更加重视风险评估,还要逐渐认识和接受银行理财产品的净值波动。该银行的投资者教育还有很长的路要走。此外,业内人士指出,银行除了通过调整风险来提醒客户外,还需要完善和加强制度、体系、管理和运营。

老卢友情提醒

现在公众号不再像以前那样按发布时间排序。在文末设置“star”和“watching”,这样我们的推送就会出现在最前面~

分享,观看,点赞,至少我得有一个

另一视角

换一换