申明: 内容中的图片都消失了。
最近有这个需求,扫描二维码后打开一个网页,在网页中选择支付方式。
如果是微信打开,就调用微信的网页支付功能。
如果是支付宝打开,就调用支付宝的网页支付功能。
这篇讲解支付宝内置浏览器支付。
完善这个需求之前,登录支付宝的管理平台。
进入开发者重点,创建一个应用。
选择支付应用,并填写应用名称
点击创建。
这个时候,注意功能选项里面添加 手机网站支付 , 需要签约。根据支付宝需要的信息签约。
我们查看支付宝官方密钥生成方法,我下载的Window密钥生成工具。
打开 RSA 签名工具后,选择密钥长度 2048。
然后设置到支付宝,并配置网关。
保存提交审核。
private AlipayClient mClient;
private AlipayTradeWapPayRequest mAliPayRequest;
/**
* properties 是我的配置文件帮助类。
* url : https://openapi.alipay.com/gateway.do
* appId: 刚才创建的应用的APPID.
* 公钥和私钥以及其它必须字段
*/
public AliPay() {
mClient = new DefaultAlipayClient(
properties.getAliURL(), properties.getAliAppID(), properties.getAliPrivateKey(),
"json", "utf-8", properties.getAliPublicKey(), "RSA2");
mAliPayRequest = new AlipayTradeWapPayRequest();
}
/**
* 封装请求支付信息
* @param subject 商品名称
* @param totalAmount 商品金额
* @param body Body
* @throws AlipayApiException 生成订单异常
* @return 支付宝交易页面 Web
*/
public String pay(String subject, String totalAmount, String body) throws AlipayApiException {
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
String outTradeNo = getOutTradeNo();
// 商户网站唯一订单号
model.setOutTradeNo(getOutTradeNo());
// 商品名称
model.setSubject(subject);
// 商品金额
model.setTotalAmount(totalAmount);
model.setBody(body);
model.setProductCode("QUICK_WAP_PAY");
mAliPayRequest.setBizModel(model);
mAliPayRequest.setNotifyUrl(properties.getAliNotifyUrl()); // 异步支付通知
return mClient.pageExecute(mAliPayRequest).getBody();
}
// 在外使用, String from = new AliPay().pay("费用", "0.01", "Your Body");