在线支付so easy
来源:互联网 发布:视频播放cms 编辑:程序博客网 时间:2024/05/25 18:12
在项目开发时,也经常用到支付接口。那我们如何实现在线支付呢?
(一)在线支付方式
第一种方式:就是直接和银行对接,引用对应银行的接口。
优点:免费;
缺点:
1、需要引用所有银行的接口,比较麻烦;
2、商业银行一般只针对大型企业及集团公司提供接口,对个人及小企业的网站不支持。所以申请不易;
第二种方式:就是通过一个第三方支付平台,和银行对接;这个第三方支付平台就很类似我们学过的外观,整合所有接口,网站只需要调用第三方的接口就可以完成所有对接;
优点:简单,只需了解第三方的接口;
缺点:
1、收费;
2、风险;
(二)什么是第三方支付:
所谓第三方支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达。
目前中国国内的第三方支付产品主要有PayPal(易趣公司产品)、支付宝(阿里巴巴旗下)、易宝、财付通(腾讯公司)、快钱、百付宝(百度C2C)、环迅支付、汇付天下等,其中数量最大的用户群体是PayPal和支付宝,前者主要在欧美国家流行,后者是阿里巴巴旗下的产品。
(三)支付流程:
用户在支付的过程中,必须传递一些关键的参数,所以必须保证数据安全。可以采用数字签名的方式。如果作为练习,不妨用易宝提供的测试账号
p1_MerId=10001126856
keyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl
responseURL=http://localhost:8080/onlinepay/servlet/PaymentResponse
//订单付款方法public String payOrder() throws IOException {//修改订单Order currOrder = orderService.findByOid(order.getOid());currOrder.setAddr(order.getAddr());currOrder.setName(order.getName());currOrder.setPhone(order.getPhone());orderService.update(currOrder);//完成付款String p0_Cmd = "Buy"; // 业务类型:String p1_MerId = "10001126856";// 商户编号:String p2_Order = order.getOid().toString();// 订单编号:String p3_Amt = "0.01"; // 付款金额:String p4_Cur = "CNY"; // 交易币种:String p5_Pid = ""; // 商品名称:String p6_Pcat = ""; // 商品种类:String p7_Pdesc = ""; // 商品描述:String p8_Url = "http://192.168.??.???:8080/MyShop/order_callBack.action"; // 商户接收支付成功数据的地址:String p9_SAF = ""; // 送货地址:String pa_MP = ""; // 商户扩展信息:String pd_FrpId = this.pd_FrpId;// 支付通道编码:String pr_NeedResponse = "1"; // 应答机制:String keyValue = "69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl";String hmac = PaymentUtil.buildHmac(p0_Cmd, p1_MerId, p2_Order, p3_Amt,p4_Cur, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, p9_SAF, pa_MP,pd_FrpId, pr_NeedResponse, keyValue); // hmac//向易宝出发StringBuffer stringBuffer = new StringBuffer("https://www.yeepay.com/app-merchant-proxy/node?");stringBuffer.append("p0_Cmd=").append(p0_Cmd).append("&");stringBuffer.append("p1_MerId=").append(p1_MerId).append("&");stringBuffer.append("p2_Order=").append(p2_Order).append("&");stringBuffer.append("p3_Amt=").append(p3_Amt).append("&");stringBuffer.append("p4_Cur=").append(p4_Cur).append("&");stringBuffer.append("p5_Pid=").append(p5_Pid).append("&");stringBuffer.append("p6_Pcat=").append(p6_Pcat).append("&");stringBuffer.append("p7_Pdesc=").append(p7_Pdesc).append("&");stringBuffer.append("p8_Url=").append(p8_Url).append("&");stringBuffer.append("p9_SAF=").append(p9_SAF).append("&");stringBuffer.append("pa_MP=").append(pa_MP).append("&");stringBuffer.append("pd_FrpId=").append(pd_FrpId).append("&");stringBuffer.append("pr_NeedResponse=").append(pr_NeedResponse).append("&");stringBuffer.append("hmac=").append(hmac);//重定向到易宝ServletActionContext.getResponse().sendRedirect(stringBuffer.toString());return NONE;}//付款成功后的转向public String callBack() {//修改订单状态,为已经付款Order currOrder = orderService.findByOid(Integer.parseInt(r6_Order));currOrder.setState(2);orderService.update(currOrder);//在页面上显示付款成功信息!this.addActionMessage("订单付款成功:订单编号:"+r6_Order+"订单金额:"+r3_Amt);return "msg";}
具体的参数说明,可以查看易宝帮助文档(关于支付请求参数说明、支付结果参数说明)。
- 在线支付so easy
- 银行卡识别让移动支付So Easy
- Android 仿支付宝充流量so easy?
- So Easy!
- so easy
- so easy
- So Easy!
- 在线支付
- 在线支付
- 在线支付
- 在线支付
- 在线支付
- 在线支付
- 在线支付
- 数据库对象so easy
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU4565 So Easy!
- 未能加载类型"命名空间.类"
- BuildBox<0> 连接(Connection)
- 剑指offer 算法 (发散思维能力)
- java将pdf文件转String
- 二叉树中和为某一值的路径
- 在线支付so easy
- 分享:office2010的一些有用的小技巧
- Tutorial 02: Outputting to the Screen
- Android学习之路
- 图片放大插件Zoom
- 如何让cmd窗口执行上一条命令后暂停会继续执行下一条命令
- Java 数组合并问题
- Layout动画:在android布局发生变化时添加动画效果
- 操作系统基本内容