AliPay.java 3.85 KB
package com.zteits.pay.util;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Random;


public class AliPay {
   String mPayway, mSubject, mBody, mPrice, mOrderId, mReserve, mCouponId;
   
   private static final int SDK_PAY_FLAG = 1;

   private static final int SDK_CHECK_FLAG = 2;
   public void pay(){
      // 订单
      String orderInfo = getOrderInfo(mOrderId, mSubject, mBody, mPrice, mReserve, mCouponId);
      // 对订单做RSA 签名
      String sign = sign(orderInfo);
      System.out.println("orderInfo:" + orderInfo);
      System.out.println("sign:" + sign);
      try {
         // 仅需对sign 做URL编码
         sign = URLEncoder.encode(sign, "UTF-8");
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
      // 完整的符合支付宝参数规范的订单信息
      final String payInfo = orderInfo + "&sign=\"" + sign + "\"&" + getSignType();
      
   }
   
   /**
    * sign the order info. 对订单信息进行签名
    * 
    * @param content
    *            待签名订单信息
    */
   public String sign(String content) {
      return SignUtils.sign(content, null);
   }
   
   /**
    * get the sign type we use. 获取签名方式
    * 
    */
   public String getSignType() {
      return "sign_type=\"RSA\"";
   }
   
   /**
    * create the order info. 创建订单信息
    * 
    */
   public String getOrderInfo(String orderId, String subject, String body, String price, String reserve, String couponId) {

      // 签约合作者身份ID
      String orderInfo = "partner=" + "\"" + null + "\"";

      // 签约卖家支付宝账号
      orderInfo += "&seller_id=" + "\"" + null + "\"";

      // 商户网站唯一订单号
      orderInfo += "&out_trade_no=" + "\"" + getOutTradeNo() + "\"";

      // 商品名称
      orderInfo += "&subject=" + "\"" + subject + "\"";


      // 商品详情
      orderInfo += "&body=" + "\"" + "eee" + "\"";//orderId + "####" + Config.getSessionValue(mContext) + "####" + reserve + "####" + couponId + "####" + Config.SERVER_URL +"\"";

      // 商品金额
      orderInfo += "&total_fee=" + "\"" + price + "\"";

      //服务器异步通知页面路径
      orderInfo += "&notify_url=" + "\"" + "http://120.26.116.79/zteitsrnt/alipay"//"http://alipay.api.rnting.com/notify_url.aspx"
            + "\"";

      // 服务接口名称, 固定值
      orderInfo += "&service=\"mobile.securitypay.pay\"";

      // 支付类型, 固定值
      orderInfo += "&payment_type=\"1\"";

      // 参数编码, 固定值
      orderInfo += "&_input_charset=\"utf-8\"";

      // 设置未付款交易的超时时间
      // 默认30分钟,一旦超时,该笔交易就会自动被关闭。
      // 取值范围:1m~15d。
      // m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
      // 该参数数值不接受小数点,如1.5h,可转换为90m。
      orderInfo += "&it_b_pay=\"30m\"";

      // extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付
      // orderInfo += "&extern_token=" + "\"" + extern_token + "\"";

      // 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空
      orderInfo += "&return_url=\"m.alipay.com\"";

      // 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)
      // orderInfo += "&paymethod=\"expressGateway\"";

      return orderInfo;
   }
   
   public String getOutTradeNo()
     {
       String str = new SimpleDateFormat("MMddHHmmss", Locale.getDefault()).format(new Date());
       Random localRandom = new Random();
       return (str + localRandom.nextInt()).substring(0, 15);
     }
   
}