1.微信公众号中的网页如何调用支付宝
支付宝沙箱环境 登录 - 支付宝
基本流程
1.前端页面调用后台下单接口,后台接口返回支付宝支付url。
2.前端跳转后台返回的支付宝url,跳转到支付宝付款页面
3.用户支付订单,支付成功后,支付宝异步回调我们在支付宝后台配置的应用网管URL。
4.用户在异步回调接口做相应业务逻辑。
步骤2因为微信浏览器对支付宝进行屏蔽,我们要进行相应的处理
支付宝官方提供了相应的解决方案,点我
基本思想是做一个引导页,打开外部浏览器的方式来打开支付页面。
以上url在前端拼装,改为后端返回比较妥当,只需把goUrl改为后端返回url。后台接口如下
java代码
网页端唤起支付宝接口
public void aliapyForm(HttpServletRequest request, HttpServletResponse response) {
// //设置编码
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
request.setNotifyUrl("你的回调通知url");
request.putOtherTextParam("app_auth_token", "商户accessToken"); //如果是isv,代商户发起支付请求,那么如何区别是那个商户呢,此参数用于区别商户。
String out_trade_no = "o123";
String subject = "这是一笔支付订单";
request.setBizContent("{\\"out_trade_no\":\\"" + para.getOrderCode() + \"\\", "
+ "\"total_amount\":\"" + 1 + "\","
+ "\"subject\":\"" + subject + "\","
+ "\"product_code\":\"QUICK_WAP_WAY\"}"
);
AlipayTradeWapPayResponse response = null;
AlipayClient alipayClient = new DefaultAlipayClient(this.getGatewayUrl(), // 支付宝网关(固定)
this.getAppId(), // APPID 即创建应用后生成
this.getPrivateKey(), // 开发者私钥,由开发者自己生成
"json", // 参数返回格式,只支持json
this.getCharset(), // 编码集,支持GBK/UTF-8
this.getPublicKey(), // 支付宝公钥,由支付宝生成
this.getSignType()); // 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,
try {
response = alipayClient.pageExecute(request, "get");
} catch (AlipayApiException e) {
log.error("发起支付宝付款失败", e);
throw new RuntimeException("", "发起支付宝付款失败");
}
if (response.isSuccess()) {
return response.getBody();
} else {
throw new RuntimeException("", response.getSubMsg());
}
out.println(response.getBody());
}
response = alipayClient.pageExecute(request, "get"); 传参get,此方法会返回url,不传参,支付宝返回form表单字符串
未完待续,支付成功后相关教程将在后续推出
有问题请联系 微信号 120213828
相关效果