最近在个人的小项目中用到了沙箱环境下的支付宝支付功能,这里做一个总结和介绍。
配置
先去支付宝开发者文档-沙箱配置沙箱环境,这里主要注意沙箱环境密钥的设置方法,具体步骤文档都写的很清楚了。
配置.png
开始使用
首先需要引入两个概念,同步回调和异步回调。
同步回调:在用户完成支付之后回调,告诉用户已经支付成功,但是并不表示扣款成功,如果你把这个当成扣款成功的标识,那么你可亏惨了。
异步回调:扣款成功之后的回调。
联想到实际的支付场景,用户肯定要先支付,再从支付宝余额中扣除,才真正实现了支付功能。
link.png
前端
用户点击支付按钮之后,进入支付页面,这里我主要传递了4个参数,具体根据自己需求
payment: function (orderNumber) {
var data = {};
data.out_trade_no = orderNumber;//订单
data.total_amount = “5.00”;//支付金额
data.subject = “图像隐写在线服务平台资源下载支付”;//标题
data.body = “在您完成付款之后,平台会自动将生成的图片下载到您本地”;//备注信息
$.ajax({
url: ‘/order/pay’,
type: ‘post’,
data: JSON.stringify(data),
contentType: ‘application/json’,
success: function (result) {
location.href = “/orderView/href”;
},
error: function () {
layer.msg(‘数据异常’)
}
})
}
后端
Controller
//付款
@PostMapping(“/pay”)
@ResponseBody
public void payment(@RequestBody OrderPaymentRequest orderPaymentRequest) {
orderService.payment(orderPaymentRequest);
}
Service
public void payment(OrderPaymentRequest orderPaymentRequest) {
String result = null;
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConstant.GATEWAR_URL, AlipayConstant.APP_ID, AlipayConstant.MECHART_PRIVATE_KEY,
“json”, AlipayConstant.CHARSET, AlipayConstant.APLPAY_PUBLIC_KEY, AlipayConstant.SIGN_TYPE);
AlipayTradePagePayRequest alipayTradePagePayRequest = new AlipayTradePagePayRequest();
alipayTradePagePayRequest.setReturnUrl(AlipayConstant.RETURN_URL);
alipayTradePagePayRequest.setNotifyUrl(AlipayConstant.NOTIFY_URL);
alipayTradePagePayRequest.setBizContent(“{“out_trade_no””:””””+ orderPaymentRequest.getOutTradeNo() +””””
+ “”””subject””:””””+ orderPaymentRequest.getSubject() +””””
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!