package com.partynetwork.iparty.alipay; import java.net.URLEncoder; import android.app.Activity; import android.os.Handler; import android.os.Message; import com.alipay.android.app.sdk.AliPay; import com.lidroid.xutils.util.LogUtils; import com.partynetwork.dataprovider.util.Util; import com.partynetwork.iparty.R; import com.partynetwork.iparty.info.CommonOrderInfo; public class AlipayHelper { /** 支付 */ public static final int RQF_PAY = 1; /** 登陆 */ public static final int RQF_LOGIN = 2; /** * 打开支付宝付款 */ public static void doAlipay(final Activity activity, final Handler mHandler, CommonOrderInfo info) { try { String infoStr = getNewOrderInfo(info); String sign = Rsa.sign(infoStr, Keys.PRIVATE); sign = URLEncoder.encode(sign); infoStr += "&sign=\"" + sign + "\"&" + getSignType(); // start the pay. final String orderInfo = infoStr; new Thread() { public void run() { AliPay alipay = new AliPay(activity, mHandler); // 设置为沙箱模式,不设置默认为线上环境 // alipay.setSandBox(true); String result = alipay.pay(orderInfo); Message msg = new Message(); msg.what = RQF_PAY; msg.obj = result; mHandler.sendMessage(msg); } }.start(); } catch (Exception ex) { ex.printStackTrace(); Util.showMsg(activity, R.string.remote_call_failed); } } /** * 更具订单获取字符串 * * @param position * @return */ private static String getNewOrderInfo(CommonOrderInfo info) { StringBuilder sb = new StringBuilder(); // 合作者身份ID sb.append("partner=\""); sb.append(Keys.DEFAULT_PARTNER); // 商户网站唯一订单号 sb.append("\"&out_trade_no=\""); sb.append(info.getOrderNumber()); // 商品名称 sb.append("\"&subject=\""); sb.append(info.getOrderName()); // 商品详情 sb.append("\"&body=\""); sb.append(info.getOrderContent()); // 总金额 sb.append("\"&total_fee=\""); sb.append(info.getOrderMoney()); // 服务器异步通知页面路径 sb.append("\"¬ify_url=\""); // 网址需要做URL编码 sb.append(URLEncoder.encode(info.getNotifyUrl())); // 接口名称 sb.append("\"&service=\"mobile.securitypay.pay"); // 参数编码字符集 sb.append("\"&_input_charset=\"UTF-8"); // sb.append("\"&return_url=\""); sb.append(URLEncoder.encode("http://m.alipay.com")); // 支付类型 sb.append("\"&payment_type=\"1"); // 卖家支付宝账号 sb.append("\"&seller_id=\""); sb.append(Keys.DEFAULT_SELLER); // 商品展示地址 // 如果show_url值为空,可不传 //sb.append("\"&show_url=\""); // 未付款交易的超时时间 sb.append("\"&it_b_pay=\"1m"); sb.append("\""); return new String(sb); } private static String getSignType() { return "sign_type=\"RSA\""; } }