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