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;
}
}