电脑网站支付开发(Alipay)

环境 : 开发者当前所在公司支付宝上线账号(配置SDK公共请求参数)

文档 : https://docs.open.alipay.com/270/alipay.trade.page.pay

下载SDKdemo : https://docs.open.alipay.com/270/106291/

电脑网站支付开发(Alipay)

支付过程 : 前端带订单参数请求后端,后端带 订单信息和验签参数(SDK配置) 生成请求支付宝的表单字符串:"<form>...</form><script>...</script>" 返回给前端,前端js用选择器 选择div的属性名.html(后端返回的数据) 得到支付二维码, 扫完之后回调return_url 和 notify_url

流程图:

电脑网站支付开发(Alipay)


Java Demo:

OrderPayPO order = new OrderPayPO(...); 
   insertEntity2Cache(order);
   // SDK 公共请求类,包含公共请求参数,以及封装了签名与验签,开发者无需关注签名与验签     
   AlipayClient client = new DefaultAlipayClient(JinHonConfig.URL, JinHonConfig.APPID,
    JinHonConfig.RSA_PRIVATE_KEY, JinHonConfig.FORMAT, JinHonConfig.CHARSET,  
    JinHonConfig.ALIPAY_PUBLIC_KEY,JinHonConfig.SIGNTYPE);
   // 设置请求参数  
   AlipayTradePagePayRequest  alipayRequest=new AlipayTradePagePayRequest();
   // 设置异步通知地址
   alipayRequest.setNotifyUrl(JinHonConfig.notify_url+notifyUrl);
   // 设置同步地址
   alipayRequest.setReturnUrl(JinHonConfig.return_url);   
    // 商户订单号,商户网站订单系统中唯一订单号,必填
   String out_trade_no = order.getOrder_no();
    // 订单名称,必填
   String subject = order.getGoods_info();
   // 付款金额,必填
   String total_amount = order.getPay_amount().toString();
   // 商品描述,可空
   String body = order.getOrder_param();
   // 超时时间 可空
   String timeout_express = "10m";

 //穿透参数(必须转码)*
   String passback_params = "";
    try {
passback_params = URLEncoder.encode(session, "Utf-8");
    } catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
    }
   // 商品列表信息,可空
   alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","   
    + "\"subject\":\""+ subject +"\","   
           + "\"total_amount\":\""+ total_amount +"\","   
           + "\"body\":\""+ body +"\"," 
           + "\"passback_params\":\"" +passback_params+"\"," 
   + "\"timeout_express\":\""+ timeout_express +"\","   
           + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");  


   // form表单生产
   ReqAlipayParamVO alipayParam = new ReqAlipayParamVO();
   try {
// 调用SDK生成表单
String form = client.pageExecute(alipayRequest).getBody();
  return form ;//返回 :"<form>...</form><script>...</script>"
} catch (AlipayApiException e) {
e.printStackTrace();
JinHonApi.service.info(e.getErrMsg());
}
return "";