本帖仅供参考,非官方demo
一、文档地址
手机网站支付文档地址:[url]https://docs.open.alipay.com/203[/url]
二、开发前准备工作
1、签约:[url]https://openclub.alipay.com/read.php?tid=276&fid=72[/url]
2、创建应用:[url]https://openclub.alipay.com/read.php?tid=1606&fid=72[/url]
3、生成密钥:[url]https://openclub.alipay.com/read.php?tid=1833&fid=69[/url]
4、下载服务端sdk:[url]https://docs.open.alipay.com/54/106370/[/url]
如何签约以及签约无法成功等相关签约问题:[url]https://openclub.alipay.com/read.php?tid=276&fid=72[/url]
注意事项:1、支持沙箱测试;2、需签约并添加功能;3、不支持第三方调用。
检查调用appid的应用功能列表中是否添加“手机网站支付”并显示已签约。
三、接口集成示例代码
1、参数说明
(1)out_trade_no:商户订单号,由商户自定义设置;
(2)subject:商品标题;
(3)product_code:固定产品码值:QUICK_WAP_WAY;
(4)total_amount:交易订单金额,精确到小数点后2位,最小设置为0.01;
2、JAVA版请求示例
(适用于jdk1.5以上)
//获得初始化的AlipayClient AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key,AlipayConfig.sign_type); AlipayTradeWapPayRequest alipayRequest=new AlipayTradeWapPayRequest(); //设置同步回调地址,用于支付成功后页面跳转 alipayRequest.setReturnUrl(AlipayConfig.return_url); //设置异步回调地址,用于支付成功后post接收返回的订单信息 alipayRequest.setNotifyUrl(AlipayConfig.notify_url); AlipayTradeWapPayModel model = new AlipayTradeWapPayModel(); model.setSubject("手机网站支付测试"); model.setTotalAmount("0.01"); //设置中途退出返回按钮,添加后h5支付收银台会出现返回按钮,用于付款中途退出并返回传值页面。注:该参数对支付宝钱包标准收银台下的跳转不生效。 model.setQuitUrl("https://docs.open.alipay.com/203/107090/"); model.setProductCode("QUICK_WAP_WAY"); //自定义参数请转码后传入该参数内,可以传值逗号,等号之类,但不能传引号,否则会报错,其他特殊符号是否报错以实测为准 String passback_params = "{channelcode:alipay,instcode:alipay}"; String passback_params2 =URLEncoder.encode(passback_params,"UTF-8"); model.setPassbackParams(passback_params2); //该笔订单允许的最晚付款时间,逾期将关闭交易 model.setTimeoutExpress("1m"); alipayRequest.setBizModel(model); /** * BizContent传值模式 alipayRequest.setBizContent("{\"out_trade_no\":\"2018092031012228432\"," + "\"total_amount\":\"0.01\"," + "\"subject\":\"手机网站支付测试\"," + "\"quit_url\":\""+ quit_url +"\"," + "\"passback_params\":\""+ passback_params2 +"\"," + "\"product_code\":\"QUICK_WAP_WAY\"}"); **/ //get请求方式 AlipayTradeWapPayResponse response = alipayClient.pageExecute(alipayRequest,"get"); //post请求方式 //AlipayTradeWapPayResponse response = alipayClient.pageExecute(alipayRequest); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); } System.out.println(response.getBody());
注:timeout_express是订单创建之后才开始计时生效的,而不是接口调用成功开始生效!!!
3、PHP版请求示例
(适用于ph5.5以上环境)
appId = '填写您的appid';$aop->rsaPrivateKey = '填写您的私钥';$aop->alipayrsaPublicKey='填写您的支付宝公钥';$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';$aop->apiVersion = '1.0';$aop->postCharset='utf-8';$aop->format='json';$aop->signType = 'RSA2';//生成随机订单号$date=date("YmdHis");$arr=range(1000,9999);shuffle($arr);$request = new AlipayTradeWapPayRequest ();//收款方账户类型为:ALIPAY_LOGONID:支付宝登录号,支持邮箱和手机号格式。$request->setBizContent("{" . "\"out_trade_no\":\"".$date.$arr[0]."\"," . "\"total_amount\":\"0.1\"," . "\"subject\":\"tets\"," . "\"product_code\":\"QUICK_WAP_WAY\"" . "}");//get请求,返回链接$result = $aop->pageExecute($request,"get");//post请求,返回表单//$result = $aop->pageExecute($request);print_r(htmlspecialchars($result));?>
4、.NET版请求参数
适用于Visual studio 2010及以上版本、Framework3.5 SP1及以上版本的开发环境
注:适用于Visual studio 2010及以上版本、Framework3.5 SP1及以上版本的开发环境
IAopClient client = new DefaultAopClient("https://openapi.alipaydev.com/gateway.do", Com.Alipay.Config.appId, Com.Alipay.Config.merchant_private_key, "json", "1.0", "RSA2", Com.Alipay.Config.alipay_public_key, "GBK", false); AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request AlipayTradeWapPayModel model = new AlipayTradeWapPayModel(); model.OutTradeNo = "2018092815181234561223434123"; model.Subject = "手机网站支付测试"; model.TotalAmount = "0.01"; model.ProductCode = "QUICK_WAP_WAY"; alipayRequest.SetBizModel(model); //默认请求方式为post,返回form表单 // AlipayTradeWapPayResponse response = client.pageExecute(alipayRequest); //传入GET,返回http链接 AlipayTradeWapPayResponse response = client.pageExecute(alipayRequest, "", "GET"); //post请求,返回form表单 // AlipayTradeWapPayResponse response = client.pageExecute(alipayRequest); Console.WriteLine("手机网站支付返回信息:" + response.Body);
get请求返回结果
[url]https://openapi.alipaydev.com/gateway.do?alipay_sdk=alipay-sdk-java-3.3.1&app_id=2016101800718925&biz_content=%7B%22out_trade_no%22%3A%222018110510414153215%22%2C%22passback_params%22%3A%22%257Bchannelcode%253Aalipay%252Cinstcode%253Aalipay%257D%22%2C%22product_code%22%3A%22QUICK_WAP_WAY%22%2C%22quit_url%22%3A%22https%3A%5C%2F%5C%2Fdocs.open.alipay.com%5C%2F203%5C%2F107090%5C%2F%22%2C%22subject%22%3A%22%E6%89%8B%E6%9C%BA%E7%BD%91%E7%AB%99%E6%94%AF%E4%BB%98%E6%B5%8B%E8%AF%95%22%2C%22total_amount%22%3A%220.01%22%7D&charset=utf-8&format=JSON&method=alipay.trade.wap.pay¬ify_url=http%3A%2F%2F106.14.187.178%2Fopendevtools%2Fnotify%2Fdo%2Fa9bed896-0fc0-4b05-ba55-6a2550cacd36&return_url=https%3A%2F%2Fwww.baidu.com%2F&sign=f1acmfoP8oMJDX2ctxQcu%2BJHXsauURqmoEQzaStDpiXz9P1pSbOieaHSLwERSUGsk9wKyMpyiNmyOKbeMQsVNVWJHyHB%2FZiRGvFDec3keXc8dv%2BFrhEU%2BsZDPB%2FznK8jpHseX6ClWrKMWUoCmznO51Hfp7VNjeTQOSnsHodPDK3G6Sp55N7v0rxAybgnuQRBkdA7Y4Woj4ewX7w9zTGE9SEKJgoQY%2FOamrYfsrJVaHuA%2Fjj%2Be4r%2B8Eue%2BCTQ%2B7Wx4VUYtktgKoLKWKWJtkrsj%2FGk3IKVfiATfFQ5r4NW6gvv0kR83fjSMVD%2FZze913nCUbqlARkLh0x%2FeMv2PPntHg%3D%3D&sign_type=RSA2×tamp=2018-11-06+10%3A41%3A23&version=1.0[/url]
post返回结果
四、注意事项
1、如何查看沙箱买家账号
地址:[url]https://openhome.alipay.com/platform/appDaily.htm?tab=account[/url]
2、辅助接口
alipay.trade.query(统一收单线下交易查询)集成流程:[url]https://openclub.alipay.com/read.php?tid=13842&fid=56[/url]
alipay.trade.refund(统一收单交易退款接口) 集成流程:[url]https://openclub.alipay.com/read.php?tid=13853&fid=56[/url]
alipay.trade.fastpay.refund.query(统一收单交易退款查询) :[url]https://openclub.alipay.com/read.php?tid=13962&fid=56[/url]
alipay.trade.close(统收单交易关闭接口)集成流程:[url]https://openclub.alipay.com/read.php?tid=13963&fid=56[/url]
alipay.data.dataservice.bill.downloadurl.query(查询对账单下载地址):[url]https://openclub.alipay.com/read.php?tid=14016&fid=56[/url]
五、显示效果
将返回结果传到前端,显示效果如下:
将沙箱返回链接放入手机浏览器中访问,如果手机中装有支付宝,则会弹出在浏览器上弹出收银台(如图三),正式环境则是直接跳转到支付宝钱包唤起收银台(如图四)