前言

个人开发者由于没有企业资质,所以无法使用支付宝支付和微信支付接口。

解决方案

使用支付宝当面付接口,这是为个体商户准备的一个支付接口,只要有营业执照签约之后收款无限额。

如果没有营业执照,只要有门店照片门店地址同样可以完成签约,但只能使用当面付“基础版”,收款有限额(单笔收款<=1000,单日收款<=5w),一般情况下足够用了。

请求alipay.trade.precreate支付宝预下单接口后,会返回一张支付二维码,使用支付宝扫一扫完成支付后,支付宝轮询指定接口返回支付信息。

接入流程

1.提交签约资料审核

上传营业执照(有就上传,没有就算了),添加门店照片(可自行百度,注意水印)+门店地址,门店和地址最好是真实存在的吧,可能审核更容易通过。然后提交审核,应该几分钟就可以通过了。

2.当面付接口接入

当面付接口配置

开发者中心控制台→选择网页&移动应用→可以选择创建应用(我这里当面付签约完成后就有了一个应用,我直接用这个应用开发)

补全应用名称和应用图标

选择应用信息,设置接口加签方式

根据接入文档下载支付宝开发平台接入助手

选择RSA2加密方式后生成应用公钥和应用私钥,应用公钥粘贴到支付宝加签配置中后保存设置,应用私有需要妥善保存,不要泄露。应用私钥需填写到代码中供签名时使用。

当面付SDK

Github地址:https://github.com/alipay/alipay-easysdk

在pom中引入

<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-easysdk</artifactId><version>Use the version shown in the maven badge</version>
</dependency>

修改支付宝提供的支付Demo

import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.BaseClient;
import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class aliPayUtil {private static Logger logger = LoggerFactory.getLogger(aliPayUtil.class);public static String getQRcode(String subject, String orderNo, String totalAmount) {// 1. 设置参数(全局只需设置一次)Factory.setOptions(getOptions());try {// 2. 发起API调用(使用面对面支付中的预下单)AlipayTradePrecreateResponse response = Factory.Payment.FaceToFace().preCreate(subject,orderNo, totalAmount);// 3. 处理响应或异常if ("10000".equals(response.code)) {logger.info("调用成功:{}",response.qrCode);return response.qrCode;//返回二维码} else {logger.error("调用失败,原因:{},{}",response.msg,response.subMsg);}} catch (Exception e) {logger.error("调用遭遇异常,原因:{}",e.getMessage());throw new RuntimeException(e.getMessage(), e);}return null;}private static BaseClient.Config getOptions() {BaseClient.Config config = new BaseClient.Config();config.protocol = "https";config.gatewayHost = "openapi.alipay.com";config.signType = "RSA2";// 请更换为您的AppIdconfig.appId = "你的应用的appid";
//        // 请更换为您的应用公钥证书文件路径
//        config.merchantCertPath = "/home/foo/appCertPublicKey_2019051064521003.crt";
//        // 请更换为您的支付宝公钥证书文件路径
//        config.alipayCertPath = "/home/foo/alipayCertPublicKey_RSA2.crt";
//        // 请更换为您的支付宝根证书文件路径
//        config.alipayRootCertPath = "/home/foo/alipayRootCert.crt";// 请更换为您的PKCS8格式的应用私钥config.merchantPrivateKey = "你的应用私钥";config.alipayPublicKey = "你的支付宝公钥";// 如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可// config.alipayPublicKey = "MIIBIjANBg...";config.notifyUrl = "https://你的域名/mall/pay/aliPay.do";//这里是支付宝接口回调地址return config;}
}

在接口中使用

    //支付宝回调接口,扫码支付,支付宝会请求该接口@RequestMapping("/aliPay.do")public Object aliPay(HttpServletRequest request){logger.info("【===支付宝回调开始===】");Map<String, String> params = new HashMap<>();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] + ",";}params.put(name,valueStr);}logger.info("支付宝回调: sign:{}, trade_status:{}, 参数:{}",params.get("sign"),params.get("trade_status"),params.toString());//验证回调的正确性:是不是支付宝发的String alipayPublicKey = "你的支付宝公钥";String signType = "RSA2";params.remove("sign_type");try {//这里使用的是支付宝提供的验签方式boolean alipayRSACheckedV2 = AlipaySignature.rsaCheckV2(params, alipayPublicKey,"utf-8",signType);if(!alipayRSACheckedV2) {return ServerResponse.createByErrorMessage("非法请求,验证不通过!");}} catch (AlipayApiException e) {logger.error("支付宝回调异常",e);}//todo:订单号、总金额等数据也需要验证//订单支付后修改订单状态ServerResponse serverResponse = iOrderService.aliCallback(params);//返回支付状态给支付宝,避免支付宝重复通知if(serverResponse.isSuccess()){return "TRADE_SUCCESS";}return "failed";}

使用支付宝官方的验签方式需要引入alipay-sdk-java-all

Github地址:https://github.com/alipay/alipay-sdk-java-all

<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.9.153.ALL</version>
</dependency>

支付宝回调内容

===============进入支付宝回调======================
gmt_create 2020-05-10 15:33:20
charset UTF-8
seller_email “此处是商户信息”
subject Apple iPhone11 128G
sign “此处是验签信息”
buyer_id 2088922366209782
invoice_amount 0.01
notify_id 2020051000222153325009781427216094
fund_bill_list [{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]
notify_type trade_status_sync
trade_status TRADE_SUCCESS
receipt_amount 0.01
buyer_pay_amount 0.01
app_id 2021001160684626
sign_type RSA2
seller_id 2088802069255014
gmt_payment 2020-05-10 15:33:25
notify_time 2020-05-10 15:33:25
version 1.0
out_trade_no 15890959691712020
total_amount 0.01
trade_no 2020051022001409781449095372
auth_app_id 2021001160684626
buyer_logon_id 153****4669
point_amount 0.00

个人开发者支付接入方案——支付宝当面付相关推荐

  1. 第三方支付接入之支付宝当面付

    第三方支付接入之支付宝当面付 首先对于支付大家都是比较了解的.目前市面上很多支付方式,云闪付,微信,支付宝,易支付,码支付等等第三方第四方的支付接口,但是大家在接入的时候会发现一个问题也就是需要企业认 ...

  2. 支付 | Java个人接入支付宝当面付(免签约,超详细步骤)

    文章目录 1. 前言 2. 当面付产品介绍 2.1 场景描述2种场景 2.2 申请条件 2.3 费率 2.4 产品签约管理 3. 实现的效果 3.1 基于当面付 - 扫码支付 实现的[电脑端web]支 ...

  3. 最详细支付宝接口申请、使用!!!带详细流程--实践--支付宝当面付申请

    前言: 今天是看到同学,申请了一波支付宝当面付,而且成功了,现在已经可以应用到项目中,就是手续费有点高(0.6%)100块要上交6毛.但是对比起其他的第三方服务,还是便宜了不少.而且这个是唯一一个能够 ...

  4. 个人支付方案(免签约)-支付宝当面付 附带源码

    支付宝当面付接入流程 点击在这里进入,登陆支付宝账户选择立即接入. 经营内容选择百货零售-超市-超市(非平台类) 营业执照可不上传 店铺招牌 百度即可 提交申请后十多分钟就可收到通过通知. 开发流程 ...

  5. 支付宝当面付方案(个人免签方案)

    作者作为个人开发者,想接入支付功能,所以了解了下目前支付相关的方案,发现大体有以下几种(参见xpay): 支付宝和微信官方支付接口:基本都需要企业资格才能开通,最起码也要是个体工商户才可以(有营业执照 ...

  6. ASP.NET Core 2.0 支付宝当面付之扫码支付

    前言 自从微软更换了CEO以后,微软的战略方向有了相当大的变化,不再是那么封闭,开源了许多东西,拥抱开源社区,.NET实现跨平台,收购xamarin并免费提供给开发者等等.我本人是很喜欢.net的,并 ...

  7. 支付宝 当面付(扫描支付) 对接逻辑

    支付宝 当面付(扫描支付) 对接逻辑 这两天给网站 博客下方添加了 打赏功能 使用的是 支付宝的 当面付功能 特此记录一下,觉得不错的可以在下方打赏 嘿嘿 ,下面先来看一下效果图. 1.当面付产品介绍 ...

  8. 支付宝当面付扫码支付支付后不回调_对接支付宝当面付进行电脑网站和手机网站收款教程...

    对接支付宝当面付进行电脑网站和手机网站收款教程 第一步:风铃自动卡密发卡平台前端搭建 第二步:对接支付宝当面付进行电脑网站和手机网站收款 项目地址:https://github.com/Tai7sy/ ...

  9. java对接支付宝当面付支付和查询

    最近看到很多人想用java写支付宝的收款功能用来做网站支付, 个人感觉网站支付的话支付宝的当面付功能算是有简单又实用的 当面付功能只需要实现他的两个接口就可以完成网站的支付和结果校验 1.支付宝的预创 ...

最新文章

  1. ASP.NET返回上一页面的实现方法
  2. 如何监控mysql数据库时间_如何监控MySQL数据库主从之间的延时
  3. Linux学习笔记之三
  4. Index of open source
  5. RxJava 2.x 教程
  6. vs.net各版本解决方案相互转换工具
  7. 【前端性能优化】不用 setTimeout 实现防抖
  8. HashMap底层实现及原理
  9. Setup Factory 卸载 Invalid Start mode :archive filename
  10. 计算机组成原理笔记 半导体随机存储器RAM和ROM
  11. 77个提升自我的网站
  12. MVC5+EF6 入门完整教程
  13. beats 耳机 android,Beats app安卓,Beats app安卓耳机管理预约 v2.3.5 - 游戏盒子下载站...
  14. PDPS软件:机器人可达性测试功能介绍与使用方法
  15. Cadence Allegro修改Waived DRC标识颜色图文教程及视频演示
  16. 如何用Jmeter发送消息到Solace JNDI
  17. 自我健康检测及产品应用方案
  18. 尚雯婕变芭比娃娃 你被雷到了还是被电到?
  19. 如何通过AWS Route53注册域名
  20. 蓝桥ROS云课→一键配置←f1tenth和PID绕圈

热门文章

  1. 三角化公式推导手撕代码
  2. 单细胞转录组高级分析: 多样本合并与批次校正
  3. SetStretchBltMode
  4. 微信H5支付(MWEB)、扫码支付(NATIVE)、APP支付(APP)
  5. 新华三H3C无线控制器AC对接网络准入实现定制化Portal短信认证
  6. 本地连接云服务器mysql数据库出现Access denied的解决方法
  7. kernel启动流程-head.S的执行_4.el2_setup
  8. leap motion原理
  9. 安全专属的移动数字化平台WorkPlus加速国企数字化转型
  10. 【Windows系统】windows服务