package com.bigdo.alipay; import java.net.URLEncoder; import com.alipay.android.app.sdk.AliPay; import com.bigdo.util.PayResult; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; /** * 支付宝帮助类 * */ public final class AliPayHelper { public static String getNewOrder(Context context, String orderno, String subject, String detail, float payAmount) { StringBuilder sb = new StringBuilder(); sb.append("partner=\""); sb.append(Keys.DEFAULT_PARTNER); sb.append("\"&out_trade_no=\""); sb.append(orderno); sb.append("\"&subject=\""); sb.append(subject); sb.append("\"&body=\""); sb.append(detail); sb.append("\"&total_fee=\""); sb.append(payAmount); // sb.append("\"¬ify_url=\""); // 网址需要做URL编码 // sb.append(URLEncoder.encode(RConfig.GetMobilePayNotifyUrl(context))); 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("\"&app_id=\"android"); sb.append("\"&seller_id=\""); sb.append(Keys.DEFAULT_SELLER); // 如果show_url值为空,可不传 // sb.append("\"&show_url=\""); sb.append("\"&it_b_pay=\"30m"); sb.append("\""); // 将订单生成加密签名 String sign = Rsa.sign(sb.toString(), Keys.PRIVATE); sign = URLEncoder.encode(sign); sb.append("&sign=\"" + sign + "\"&sign_type=\"RSA\""); // sb.append("&sign=\"" + sign + "\"&sign_type=\"RSA\""); return new String(sb); } public static boolean startPay(final Activity context, final Handler handler, final String orderInfo, final Bundle userData, final int requestCode) { if (orderInfo != null && !orderInfo.equals("")) { new Thread() { public void run() { AliPay alipay = new AliPay(context, handler); // 设置为沙箱模式,不设置默认为线上环境 // alipay.setSandBox(true); if (handler != null) { PayResult pr = new PayResult(); pr.PayType = "2"; pr.PayResult = alipay.pay(orderInfo); pr.RequestCode = requestCode; pr.UserData = userData; Message msg = new Message(); msg.arg1 = PayResult.pay_request_code; Bundle b = new Bundle(); b.putParcelable(PayResult.ResultKey, pr); msg.setData(b); handler.sendMessage(msg); } } }.start(); return true; } return false; } }