一、支付方式选择
对接的API文档:
可选方式支付方式
扫码付:出示付款码或者用户扫码付款
APP支付:在APP中唤起支付宝
手机网站支付:在移动端网页中唤起支付宝 App 或支付宝网页
电脑网站支付:在PC端唤起支付宝App或者网页登录支付宝账户
刷脸付:需硬件支持
商家扣款:类似每月会员扣款
预授权支付:冻结对应额度,交易完成后给商家
JSAPI支付:小程序
在里选择手机扫码支付方式,用户点击下单后,页面返回支付二维码,用户扫码支付跳转
二、代码调用
简易版SDK
通用办SDK
测试我们选择简易版SDK,通用版官网有API调用示例
1、引入依赖
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.2.3</version>
</dependency>
下面是业务请求参数,必选必须调用,否则会引起错误,非必选根据需求填写
2、代码
我这里仅填写了必要参数,调用成功后将返回
@Service
public class textpay {
public String pay() throws AlipayApiException {
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
// 设置商户订单号
model.setOutTradeNo("2015033320011001");
// 设置订单总金额
model.setTotalAmount("19888.88");
// 设置订单标题
model.setSubject("小米19 1T,64G");
// 设置卖家支付宝用户ID
request.setBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AlipayTradePrecreateResponse response = alipayClient.execute(request);
String body = response.getBody();
JSONObject jsonObject = JSONObject.parseObject(body);
String qurl = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
System.out.println(response.getBody());
if (response.isSuccess()) {
System.out.println("调用成功");
return qurl;
} else {
System.out.println("调用失败");
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
System.out.println(diagnosisUrl);
}
return "s";
}
private static AlipayConfig getAlipayConfig() {
String privateKey = "";//填写密钥建议放到application.yml配置文件中,或设置到系统环境。
String alipayPublicKey = "";
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
alipayConfig.setAppId("9021000143680943");
alipayConfig.setPrivateKey(privateKey);
alipayConfig.setFormat("json");
alipayConfig.setAlipayPublicKey(alipayPublicKey);
alipayConfig.setCharset("UTF-8");
alipayConfig.setSignType("RSA2");
// alipayConfig.notify();
return alipayConfig;
}
}
3、正常返回响应我们get返回数据中的“qr_code”用于生成二维码(上述代码中包含)
4、我们将获取的数据返回前端看效果
这里是用沙箱环境做的测试
5、具体前后端代码:https://github.com/jiunianyi/pay