路由
一码付指的是一个二维码同时指出支付宝、微信扫描并支付。
微信和支付宝支持扫描一个url二维码并通过内置的浏览器跳转。
我们可以通过js获得是来自支付宝的还是微信的浏览器,通过user-agent
,有MicroMessenger是微信,有AlipayClient是支付宝。
var ua = navigator.userAgent.toLowerCase();
if (/MicroMessenger/.test(window.navigator.userAgent)) {
//微信
} else if (/AlipayClient/.test(window.navigator.userAgent)) {
//支付宝
}
接着就是查看支付宝和微信中关于网页支付的教程了。
支付宝:https://docs.open.alipay.com/203/
微信: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1
notice
1.网址必须以http://
或https://
开头。
流程时序图
支付宝
在一码付中,支付宝属于手机网站支付
一类。官方api地址:https://docs.open.alipay.com/203/
测试代码
@Test
public void main() throws AlipayApiException {
alipayClient = new DefaultAlipayClient(alipayConfig.getAlipayGateway(), alipayConfig.getAppId(),
alipayConfig.getAppPrivateKey(), "json", DEFAULT_ENCODING, alipayConfig.getAppPublicKey(),
SIGN_RSA);
AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request
alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");
alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");
alipayRequest.setBizContent("{" +
"\"out_trade_no\":\"fc00001\"," +
"\"total_amount\":0.01," +
"\"product_code\":\"QUICK_WAP_WAY\","+
"\"subject\":\"测试\"" +
"}");
AlipayTradeWapPayResponse response = alipayClient.pageExecute(alipayRequest);
if(response.isSuccess()){
System.out.println("调用成功");
System.out.println(response.getBody());
} else {
System.out.println("调用失败");
System.out