applica.yml文件配置微信、支付宝支付接口调用参数;
支付宝支付
第一步:生成订单,保存订单信息(除了支付状态、支付时间等状态)
orderService.save(order);
第二步:封装客户端请求
AlipayClient client=new DefaultAlipayClient(alipayProperties.getUrl(),alipayProperties.getAppid(),alipayProperties.getRsa_private_key(),alipayProperties.getFormat(),alipayProperties.getCharset(),alipayProperties.getAlipay_public_key(),alipayProperties.getSigntype());
第三步:
支付宝服务器异步通知:支付完成获取支付宝GET过来反馈信息
boolean signVerified = AlipaySignature.rsaCheckV1(params,alipayProperties.getAlipay_public_key(),alipayProperties.getCharset(),alipayProperties.getSigntype());//调用SDK验证签名
验证支付完成,更新订单表
order.setBuyTime(new Date());// 支付时间
order.setIsPay(1);// 支付支付状态 已经支付
orderService.save(order);
支付宝服务器同步通知:跳转支付成功页面
boolean signVerified = AlipaySignature.rsaCheckV1(params,alipayProperties.getAlipay_public_key(),alipayProperties.getCharset(),alipayProperties.getSigntype());//调用SDK验证签名
微信支付
第一步:微信支付需要传入参数到微信后台,跳转到支付页面
weixinpay.ftl页面,image标签调loadPayImage方法并将返回数据流生成支付二维码,扫码并支付
<image src="/weixinpay/loadPayImage?id=${order.id?c}"></image>
同时生成订单,保存订单信息(除了支付状态、支付时间等状态)
orderService.save(order);
第二步:支付完成,微信服务器异步通知notifyUrl调isTenpaySign方法验证支付结果
验证支付完成更新订单表
order.setBuyTime(new Date());// 支付时间
order.setIsPay(1);// 支付支付状态 已经支付
orderService.save(order);
第三步:weixinpay.ftl支付页面定时查询订单支付结果loadPayState
function orderStatus(){
$.post("/weixinpay/loadPayState",{
id:${order.id?c}},
function(data,status){
if(data==1){
location.href ="/weixinpay/returnUrl";
}});}
setInterval("orderStatus()",3000);
支付成功,跳转returnUrl页面
网友评论