大致流程:
1;String orderInfo = getOrderInfo("测试的商品", "该测试商品的详细描述", "0.01");//传入商品名称,描述,待付金额zj。
2;对要发送到支付宝服务器的信息进行签名。(保证该信息发送者的唯一)
签名的过程要放在后台服务器端执行,使用私钥进行签名。
/**
* 特别注意,这里的签名逻辑需要放在服务端,切勿将私钥泄露在代码中!
*/
String sign = sign(orderInfo);// 签名过程应该放在服务器端执行。zj
try {
/**
* 仅需对sign 做URL编码
*/
sign = URLEncoder.encode(sign, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
/**
* 完整的符合支付宝参数规范的订单信息
*/
final String payInfo = orderInfo + "&sign=\"" + sign + "\"&"
+ getSignType();
3;起线程来发送信息:
Runnable payRunnable = new Runnable() {
@Override
public void run() {
// 构造PayTask 对象
PayTask alipay = new PayTask(PayDemoActivity.this);
// 调用支付接口,获取支付结果
String result = alipay.pay(payInfo, true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);//使用handler来处理支付宝返回来的支付结果。zj
}
4;客户端同步获得支付宝服务器的返回支付情况的结果。
5;客户端获得的该结果,异步发送到本应用的后台服务器,由后台服务器来验证结果。(商户可以使用签约时支付宝提供的公钥进行验证。)(防止数据在传输过程中被篡改).
6;具体的验证内容:见支付宝网页https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&docType=1
7;根据本服务器返回的结果来判断是否支付成功,然后做后续的操作。