String orderInfo = getOrderInfo(order);
/**
- 特别注意,这里的签名逻辑需要放在服务端,切勿将私钥泄露在代码中!
*/
String sign = sign(orderInfo);
try {
/**
- 仅需对sign 做URL编码
*/
sign = URLEncoder.encode(sign, “UTF-8”);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
/**
- 完整的符合支付宝参数规范的订单信息
*/
final String payInfo = orderInfo + “&sign=”" + sign + “”&" + getSignType();
Runnable payRunnable = new Runnable() {
@Override
public void run() {
// 构造PayTask 对象
PayTask alipay = new PayTask(context);
// 调用支付接口,获取支付结果
String result = alipay.pay(payInfo, true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
}
@SuppressLint(“HandlerLeak”)
private Handler mHandler = new Handler() {
@SuppressWarnings(“unused”)
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
/**
-
同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
-
detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
-
docType=1) 建议商户依赖异步通知
*/
String resultInfo =