webapp 支付宝支付

3 篇文章 0 订阅

前沿:纯H5写的app需要支付功能,h+中有支付宝微信支付的demo,但是就支付宝而言
var PAYSERVER=‘http://demo.dcloud.net.cn/payment/?payid=’; 这个支付宝的请求地址没找到办法支付。
最后采用了经过修改代码如下

后台代码:

public String alipayMobile(OrderDetail orderdetail) throws AlipayApiException {
		Map<String,String> map = new TreeMap<String, String>();
		//bizcontent(业务字段)
		Map<String,String> bizMap = new HashMap<String,String>();
		
		bizMap.put("subject", orderdetail.getRoomName());//我这里用的是房间名字,根据业务写
		bizMap.put("out_trade_no", orderdetail.getOrderCode());//订单号
		bizMap.put("total_amount", orderdetail.getTradeAmt()+"");//金额
		bizMap.put("product_code", "QUICK_MSECURITY_PAY");//固定的
		
		String bizStr = JSON.toJSONString(bizMap);
		map.put("app_id", app_id);//自己的appid(申请的时候有的)
		map.put("method", "alipay.trade.app.pay");(就写这个)
		map.put("charset", "utf-8");
		map.put("sign_type", "RSA2");
		map.put("timestamp", DateTimeUtil.getDateString19());//时间格式参照官方给的中间有空格
		map.put("version", "1.0");
		map.put("notify_url", notify_url);//你的回调地址(异步通知用)
		map.put("biz_content", bizStr);//业务字段
		//拼接好的含有&的字符串
		String jsonStr2 = AlipaySignature.getSignContent(map);
		//获取签名(支付宝官方api)
		String sign = AlipaySignature.rsaSign(jsonStr2,merchant_private_key,"utf-8","RSA2");
		map.put("sign", sign);
		//对value值进行url编码
		for(Map.Entry<String, String> map2:map.entrySet()){
			String key = map2.getKey();
			String value = map2.getValue();
			value = URLEncoder.encode(value);
			map.put(key, value);
		}
		//获取最终的json串(支付宝官方api)
		String realStr = AlipaySignature.getSignContent(map);
		return realStr;
	}

manifest.json中

在这里插入图片描述

前端页面

正常来说应该先创建订单,然后调支付接口,然后通知后台,我们呢后端是做在一起了
在这里插入图片描述

//放在点击支付事件中
//创建订单 返回上面后端代码返回的字符串 如上图

ajaxPostPay({amount:$(".mui-numbox-input").val(),item_id:info.item_id},'/order/create',function(data){
			// $("#zhifubao").html(data)
			var aliChannel = null; // 支付宝支付

        	var channel = null; 
			
			
        	// 获取支付通道
                plus.payment.getChannels(function(channels){
                    aliChannel=channels[0];
                    //我把这个方法放在这里面没放外面,放外面会出现aliChannel还是null 无法调用支付宝
									plus.nativeUI.showWaiting();
					                        plus.nativeUI.closeWaiting();
					                        channel = aliChannel;
					                        if (data) {
									
					                            plus.payment.request(channel, data, function(result) {
					                                console.log(JSON.stringify(result));
					                                mui.alert("付费成功");
					                            }, function(e) {
					                                console.log(JSON.stringify(e));
					                                
					                                mui.alert("付费失败");
					                            });
					                        } else {
					                            plus.nativeUI.alert("支付失败");
					                        }
					                    });
                },function(e){
                 alert("获取支付通道失败:"+e.message);
                });

		})

注意:在测试的时候发现本地环境调试失败,后端把包放到服务器上就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值