示例#1
0
  @Override
  public String onPay(PayCfg payCfg, Order order) {
    Map<String, String> params = paymentManager.getConfigParams(this.getId());
    String seller_email = params.get("seller_email");
    String partner = params.get("partner");
    String key = params.get("key");

    String show_url = this.getShowUrl(order);
    String notify_url = this.getCallBackUrl(payCfg);
    String return_url = this.getReturnUrl(payCfg);

    // //////////////////////////////////请求参数//////////////////////////////////////

    // 必填参数//

    // 请与贵网站订单系统中的唯一订单号匹配
    String out_trade_no = "" + order.getSn();
    // 订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
    String subject = "订单:" + order.getSn();
    // 订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
    String body = "网店订单";
    String price = String.valueOf(order.getOrder_amount());
    // 物流费用,即运费。
    String logistics_fee = "0.00";
    // 物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
    String logistics_type = "EXPRESS";
    // 物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
    String logistics_payment = "SELLER_PAY";

    // 商品数量,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品。
    String quantity = "1";

    // 扩展参数//

    // 买家收货信息(推荐作为必填)
    // 该功能作用在于买家已经在商户网站的下单流程中填过一次收货信息,而不需要买家在支付宝的付款流程中再次填写收货信息。
    // 若要使用该功能,请至少保证receive_name、receive_address有值
    String receive_name = order.getShip_name(); // 收货人姓名,如:张三
    String receive_address = order.getShip_addr(); // 收货人地址,如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
    String receive_zip = order.getShip_zip(); // 收货人邮编,如:123456
    String receive_phone = order.getShip_tel(); // 收货人电话号码,如:0571-81234567
    String receive_mobile = order.getShip_email(); // 收货人手机号码,如:13312341234

    // ////////////////////////////////////////////////////////////////////////////////

    // 把请求参数打包成数组
    Map<String, String> sParaTemp = new HashMap<String, String>();
    sParaTemp.put("payment_type", "1");
    sParaTemp.put("show_url", show_url);
    sParaTemp.put("out_trade_no", out_trade_no);
    sParaTemp.put("subject", subject);
    sParaTemp.put("body", body);
    sParaTemp.put("price", price);
    sParaTemp.put("logistics_fee", logistics_fee);
    sParaTemp.put("logistics_type", logistics_type);
    sParaTemp.put("logistics_payment", logistics_payment);
    sParaTemp.put("quantity", quantity);
    sParaTemp.put("receive_name", receive_name);
    sParaTemp.put("receive_address", receive_address);
    sParaTemp.put("receive_zip", receive_zip);
    sParaTemp.put("receive_phone", receive_phone);
    sParaTemp.put("receive_mobile", receive_mobile);

    sParaTemp.put("service", "trade_create_by_buyer");
    sParaTemp.put("partner", partner);
    sParaTemp.put("return_url", return_url);
    sParaTemp.put("notify_url", notify_url);
    sParaTemp.put("seller_email", seller_email);
    sParaTemp.put("_input_charset", AlipayConfig.input_charset);

    return AlipaySubmit.buildForm(sParaTemp, AlipayService.ALIPAY_GATEWAY_NEW, "get", key);
  }