怎么做到别人给我支付宝充值后我给网站上充值相等的单价金额相关项不相等

招商银行信用卡怎么给支付宝充值
导读:回答招商银行信用卡怎么给支付宝充值这个问题,首先得清楚招商银行信用卡能不能给支付宝充值。目前支付宝不支持任何银行(包括招商银行)的信用卡充值,只支持储蓄银行卡充值,主要目前是为了防止使用支付宝来套现信用卡资金。您可以通过招商银行储蓄卡或借记卡为支付宝充值。
&&& 回答招商银行怎么给支付宝充值这个问题,首先得清楚能不能给支付宝充值。目前支付宝不支持任何银行(包括招商银行)的信用卡充值,只支持储蓄银行卡充值,主要目前是为了防止使用支付宝来套现信用卡资金。您可以通过招商银行储蓄卡或借记卡为支付宝充值。&&& 要想通过网上银行为支付宝充值的话,前提是你已经开通了网上银行,只有开通了才能使用,才能给支付宝充值。 & 招商银行支付宝充值操作指南: & 1、登陆支付宝:,进入&我的支付宝&页面,点击&充值&;  2、选择&招商银行&,输入充值金额(点击这里查看:招商银行信用卡支付宝充值 & 额度规定,并点击&下一步&;  3、进入中转页面,点击&去充值&;  4、进入招商银行网上银行支付页面,首先确认右侧的支付信息,确认无误后依次输入:卡号、查询密码、有效期、卡背面末三位数字及验证码即可;  这样就完成了招商银行支付宝充值的全部流程。&【延伸阅读】  
免责声明:本文仅代表作者个人观点。文中以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,仅作参考。
信用卡优惠
中信腾讯QQ会员卡
QQ企鹅为主题,QQ号码可印在卡面
广发淘宝卡
支付获2千支付宝积分连续分期获得90元返还
极速贷款 当天到账
信用卡论坛
我爱卡申请系统经过VeriSign顶级安全认证
 京公网安备67号Copyright
51credit Corporation. All Rights Reserved支付宝充值 被骗子当钓鱼用具了,怎么办? · Ruby China
我们网站是电子商务网站,有支付宝充值功能。
充值的金额 在消费满20%后,可以全额提款。
现在骗子在淘宝开店,然后骗子发 网站充值 跳到 支付宝 的 “充值页面” 给买家
然后,买家居然付款了。
一天发出来充值连接有几十条,每天成功的 居然有 好几条,金额有一般是几百块。
现在 买家 过来找我们协助调查。
请问大家,从技术的解决如何 防止 支付宝充值被骗子当钓鱼用具使用?
再补充一点,我们查证过了,骗子注册的信息
手机号是空号,不知道怎么通过我们短信验证的
真实姓名和身份证估计是假的
提款的银行卡目前不知道是不是他的
登录后才能充值
提款频率高吗,不高就加个延时24小时操作,高就需要用户提供更多身份信息了。
判断和分析http referer,记录异常情况,异常数据需要手动审核
“现在骗子在淘宝开店,然后骗子给发 我们网站充值 跳到 支付宝 的 充值页面 给买家”
这句没理解,骗子给发是什么意思
国内预防钓鱼,看来要监控发过来的地址,有可疑的接口需要提醒用户。
现在骗子在淘宝开店,然后骗子发 网站充值 跳到 支付宝 的 “充值页面” 给买家
手机号是空号,不知道怎么通过我们短信验证的
这个漏洞太神奇了
哎,骗子的准备工作做的很好,假身份证,假手机号,银行卡现在不确定是不是假的
虽然骗子手段高明,但肯定会有蛛丝马迹可以遵循。
我能想到的:
手机号是空号,不知道怎么通过我们短信验证的
短信还有成本,这个验证其实不靠谱。不如换成页面验证。比如楼上的说的,登录才让充值。
判断和分析http referer,记录异常情况,异常数据需要手动审核
记录referer,有客户来报告异常,可以很快记录出一个特征库。以后拿这个特征库匹配,有异常的转到手功审核。并报告给支付宝,一起配合处理。
假身份证,假手机号,假银行卡
建立和网络警察的沟通联系,就这个问题达成一个工作流。方便打击网络犯罪。
你是不是华侨?咋不懂中国国情呢?
目前是登陆才让充值,还是手机注册并通过短信验证的用户才让登陆
受骗者报告支付宝和淘宝了,两边都不处理,说不是通过旺旺交易的(骗子是通过QQ发的交易连接),他们让受骗者报警
找了网监了,网监说金额太少,请按网站流程处理。
这些在你们网站上面不是正常充值这些么?只是一些买家比较蠢被骗了吧?
“蠢”?可以这么说吧。哎,只是不忍心看到有人被骗,对我们网站也不好
没办法,要不就更多用户信息,和延长提款的频率,这样到你们网站上面还比较好处理;
我们现在是:
要求手机短信认证实名注册,绑定身份证和银行卡才能提款
这么严格的要求,骗子也能对付:
手机号短信验证通过注册,而我们打过去是空号。
身份证和银行卡不确定是本人的,但是能够提款成功。这一块想冻结银行卡,得司法机关涉入,也是有金额门槛
一次充值的金额才几百块,警察不管
骗子的淘宝网站我也看到了,很小的店,没什么人气,一天过来充值的数量却是二十多单,上当率有10%以上。
受骗者也举报了淘宝店铺,但是没有旺旺交易记录,淘宝没有封店。。。
这样的账号多么?
不多,目前是一个,昨天我们冻结了他的帐户,他过来骂人。
我们如实告知他:受骗者已经报警,警方涉案了,请协助我们调查,他就软了,说钱不要了,继续赚就是了,我晕了,要不要提醒他,这是诈骗罪,会坐牢的。
然后,他又开始注册另外一个帐号,如法炮制,继续来
我不是华侨,知道在中国做电商的困难。我只是有兴趣讨论一下这个话题。
1. 目前是登陆才让充值,用户还是手机注册并通过短信验证的用户才让登陆
这里,骗子通过手机注册并验证一次后,然后可以重复利用这个账号了。在交易的时候,你无法通过这个账户和手机号来验证这个用户的合法性。所以用手机防范不住骗子。用短信还增加你的成本。
2. 受骗者报告支付宝和淘宝了,两边都不处理,说不是通过旺旺交易的,他们让受骗者报警
这里绝对是中国特色,支付宝和淘宝都是提供服务的,它们处理不了这么复杂的情况。相应的你也处理不了。不过一旦受骗者报告那个淘宝店上当了,你这边如果可以记录一下链接,交易过程的数据,那是再好不过的证据的。这一块应该是可以做到的。
找了网监了,网监说金额太少,请按网站流程处理。
保持和网监的沟通,积极了解这方面的动态。这里不会只有你一家遇到这种情况,业界是如何处理的,那这个搞清楚不是一天两天能解决的。 在中国做电商需要付出的不是一般的多。
不好意思啊,我说话语气不好,向你道歉
牛B的人啊,他自己肯定也知道是神马罪的,只是以为你们不知道他做的勾当而已
目前我们的处理流程如下:
要求双方在一周内 提供 充值的银行回执单,上面有支付宝的交易号
我们核对交易号,如果有一方正确,我们的充值金额原路退回充值银行卡。
但是,现在的情况是:
有些金额骗子已经消费掉
骗子在继续钓鱼
大部分受骗者没有向我们举报。
刚刚的消息,我们找到了支付宝api有相关的防钓鱼参数,先试试再向大家报告。
了解。网络上技术交流不太可能表达出准确的语气。所以大家都是技术人,我不会介意。
防钓鱼也解决不了,不过会少一些, 我们这边也有这样的用户,一般不怎么消费,加黑处理,如果提现时等过一段时间(比如1个月)再处理,有人投诉处理,时间过去之后按照网站流程处理
网上有很多方法可以生成假的手机号码来收短信,之前我们刷百万亚瑟王的注册的时候经常用
打过去是空号不一定真是空号,只是骗子不想接而已,360就可以这样设置
记录每次充值的方式和帐号,提款只允许按原路退
结论汇报:支付宝的防钓鱼参数也不行。
27楼 已删除
很难解决吧,坐等比较好的解决方案
想请问楼主
你们的支付宝充值是什么方式?
我确认我使用的支付宝付款方式
把生成的url发送给别人是不能支付的
支付宝提示
"对不起,您要支付的收银台订单存在钓鱼风险,无法完成后续支付操作。请重新发起支付操作。"
能贴一个测试订单的支付地址给我试试么
有同学在阿里安全 可以帮忙看看
大哥说的方法是可行的 提款只能原路退回
安全浏览器都是提示:对不起,您要支付的收银台订单存在钓鱼风险,无法完成后续支付操作。请重新发起支付操作。
但是你用IE试下就不提示,或者你用 httpwatch之类的抓取软件可以抓到支付地址,比如:
假设我是骗子,我把上面这个地址给你付款,你是受骗者,用IE打开试下,chrome也可以
有很多卡是特殊卡,只能收发短信的,打过去是空号
现在国家在搞手机号实名制,但实际上很多匿名的卡还是存在的
所以不能以这个为主要依据
像微信的公共账号是以个人照片+身份证来验证的
对不起,您要支付的收银台订单存在钓鱼风险,无法完成后续支付操作。请重新发起支付操作。
好的 我去让阿里安全的同学试试
我用macos的chrome打开是不行的
三位试这个
显示了支付页面
骗子就是把这个给小白付款的,小白可能没看清楚就支付了。
就这样钱被充到我们平台了,然后骗子再用钱消费,中奖就提款,我们一点办法也没有。
堵不了入口堵出口啊
41楼 已删除
刚刚还说可能是漏洞 但是后来发现不对啊 这个应该是你们服务器回跳得到的那个url吧
还是堵出口吧
哪里充的退回哪里
"小白可能没看清楚就支付了。"
真的,如果是缺少社会经验,真的是很容易上当的。特别是年龄小的人。还有笨的人。
犯罪风险小,惩罚小,收益高,成本低。 金额小的话,警察也没精力的(违法、执法 : 成本、收益)
最新动态:支付宝最新api有两个参数: 防钓鱼时间戳 和 校验远程IP。
测试结果:用上这两个参数之后,再发支付网址不会出现充值页面。
骗子动态:晚上在疯狂尝试找漏洞,充值尝试了近一百次,目前还没有充值成功。
后方可回复, 如果你还没有账号请点击这里 。
共收到 42 条回复关于Alipay支付宝接口(Java版) -
- ITeye技术网站
博客分类:
本文转载自ykko2009
附注:我拿到alipay双功能支付的时候,里面AlipayConfig.java文件中,input_charset="UTF-8"。这让人很无语,只支持小写,可默认的却又大写。导致出现奇怪的异常...
2.2 提交支付订单的Action (AlipayAction.java)
* 要充值的金额
* 要支付的订单编号
private String tradeN
* 生成的HTML-URL,需到JSP打印出来
private String sHtmlT
// Getter/Setter 方法略,若还需要其他信息同理。 17
public String payTo() {
boolean flag = true;
// 商业逻辑判断,判断各种信息是否正确,如:金钱,用户信息等
21 // ...略 22
if(flag) {
// 如若无误,写入数据库,并记录状态,生成订单,获取订单ID等信息。
25 // ...略
27 // 调用入口页方法 28
alipayTo();
// 跳转到打印sHtmlText页面 31
return SUCCESS;
// 信息部正确,跳转到提示错误页面 34
return INPUT;
* 功能:设置商品有关信息(入口页) 详细:该页面是接口入口页面,生成支付时的URL
private void alipayTo() {
String input_charset = AlipayConfig.input_
String sign_type = AlipayConfig.sign_
String seller_email = AlipayConfig.seller_
String partner = AlipayConfig.
String key = AlipayConfig.
String show_url = AlipayConfig.show_
String notify_url = AlipayConfig.notify_
String return_url = AlipayConfig.return_
///////////////////////////////////////////////////////////////////////////////////
55 // 以下参数是需要通过下单时的订单数据传入进来获得
56 // 必填参数 57
///////////////////////////////////////////////////////////////////////////////////
59 // 这里是需要修改的,暂且注释掉
60 // UtilDate date = new UtilDate();//调取支付宝工具类生成订单号
61 // String out_trade_no = date.getOrderNum();//请与贵网站订单系统中的唯一订单号匹配 62
String out_trade_no = tradeN
// 订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
65 // String subject = new String(request.getParameter("aliorder").getBytes("ISO-8859-1"),"utf-8"); 66
String subject = "XX网站充值" + alimoney + "元货币";
// 订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
69 // String body = new String(request.getParameter("alibody").getBytes("ISO-8859-1"),"utf-8"); 70
String body = "default";
// 订单总金额,显示在支付宝收银台里的“应付总额”里
73 // String price = new String(request.getParameter("alimoney").getBytes("ISO-8859-1"),"utf-8"); 74
String price =
String logistics_fee = "0.00";
// 物流费用,即运费。 77
String logistics_type = "EXPRESS";
// 物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) 78
String logistics_payment = "SELLER_PAY";
// 物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费) 79
String quantity = "1";
// 商品数量,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品。
82 // 扩展参数——买家收货信息(推荐作为必填)
83 // 该功能作用在于买家已经在商户网站的下单流程中填过一次收货信息,而不需要买家在支付宝的付款流程中再次填写收货信息。
84 // 若要使用该功能,请至少保证receive_name、receive_address有值 85
String receive_name
= "收货人姓名";
// 收货人姓名,如:张三 86
String receive_address = "收货人地址";
// 收货人地址,如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号 87
String receive_zip = "123456";
// 收货人邮编,如:123456 88
String receive_phone = "7";
// 收货人电话号码,如:7 89
String receive_mobile = "";
// 收货人手机号码,如:
91 //扩展参数——第二组物流方式
92 //物流方式是三个为一组成组出现。若要使用,三个参数都需要填上数据;若不使用,三个参数都需要为空
93 //有了第一组物流方式,才能有第二组物流方式,且不能与第一个物流方式中的物流类型相同,
94 //即logistics_type="EXPRESS",那么logistics_type_1就必须在剩下的两个值(POST、EMS)中选择 95
String logistics_fee_1 = "";
// 物流费用,即运费。 96
String logistics_type_1
// 物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) 97
String logistics_payment_1 = "";
// 物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
99 //扩展参数——第三组物流方式
100 //物流方式是三个为一组成组出现。若要使用,三个参数都需要填上数据;若不使用,三个参数都需要为空
101 //有了第一组物流方式和第二组物流方式,才能有第三组物流方式,且不能与第一组物流方式和第二组物流方式中的物流类型相同,
102 //即logistics_type="EXPRESS"、logistics_type_1="EMS",那么logistics_type_2就只能选择"POST"103
String logistics_fee_2 = "";
// 物流费用,即运费。104
String logistics_type_2
// 物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)105
String logistics_payment_2 = "";
// 物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
106 107 //扩展功能参数——其他108
String buyer_email = "";
// 默认买家支付宝账号109
String discount = "";
// 折扣,是具体的金额,而不是百分比。若要使用打折,请使用负数,并保证小数点最多两位数110
/////////////////////////////////////////////////////////////////////////////////////////////////////112
////构造函数,生成请求URL114
sHtmlText = AlipayService.BuildForm(partner,seller_email,return_url,notify_url,show_url,out_trade_no,
subject,body,price,logistics_fee,logistics_type,logistics_payment,quantity,receive_name,receive_address,
receive_zip,receive_phone,receive_mobile,logistics_fee_1,logistics_type_1,logistics_payment_1,
logistics_fee_2,logistics_type_2,logistics_payment_2,buyer_email,discount,input_charset,key,sign_type);
2.3 跳转到alipay支付页面(alipayto.jsp)
&%@ page language="java" contentType="text/ charset=UTF-8"
pageEncoding="UTF-8"%&
&%@ taglib uri="/struts-tags" prefix="s"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml"&
&meta http-equiv="Content-Type" content="text/ charset=UTF-8"&
&title&数据传输中...&/title&
&!-- escape 用于设置是否编码,若为true会将内容(如:空格会被转成&)进行转换,建议设置成false,事实上,设置成true麻烦事更多 --&
&s:property value="sHtmlText" escape="false"/&
2.4 设置struts配置文件 (struts.xml)
&!-- 上部分,略 --&
&action name="payTo" class="AlipayAction" method="payTo"&
&result name="success"&alipayto.jsp&/result&
&result name="input"&exception.jsp&/result&
======================
华丽丽的分割线
======================
3.alipay 整合双功能支付及发货信息同步
3.1 交易通知
  在担保交易中,有如下的通知状态:WAIT_BUYER_PAY(等待买家付款)→WAIT_SELLER_SEND_GOODS(买家已付款,等待卖家发货)→WAIT_BUYER_CONFIRM_GOODS(卖家已发货,等待买家收货)→TRADE_FINISHED(买家已收货,交易完成)
  (在使用alipay做本次项目时,没涉及到退货环节,故不写上)
  由于alipay有这个WAIT_BUYER_CONFIRM_GOODS(卖家已发货,等待买家收货)状态存在,故在买家已付款的时候,我们需通知alipay,告知我们已发货,故需要在双功能支付的基础上整合进发货信息同步(其实也就2个方法),放在AlipayService.java中。
3.2 整合发货信息同步
1 import java.io.BufferedR
2 import java.io.InputStreamR
3 import java.io.OutputS
4 import java.io.UnsupportedEncodingE
5 import java.net.HttpURLC
6 import java.net.URL;
7 import java.net.URLE
8 import java.util.ArrayL
9 import java.util.C
10 import java.util.HashM
11 import java.util.L
12 import java.util.M
*类名:alipay_service
*功能:支付宝外部服务接口控制
*详细:该页面是请求参数核心处理文件,不需要修改
*版本:3.1
*修改日期:
以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
26 public class AlipayService {
* 功能:构造表单提交HTML
* @param partner 合作身份者ID
* @param seller_email 签约支付宝账号或卖家支付宝帐户
* @param return_url 付完款后跳转的页面 要用 以http开头格式的完整路径,不允许加?id=123这类自定义参数
* @param notify_url 交易过程中服务器通知的页面 要用 以http开格式的完整路径,不允许加?id=123这类自定义参数
* @param show_url 网站商品的展示地址,不允许加?id=123这类自定义参数
* @param out_trade_no 请与贵网站订单系统中的唯一订单号匹配
* @param subject 订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
* @param body 订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
* @param price 订单总金额,显示在支付宝收银台里的“商品单价”里
* @param logistics_fee 物流费用,即运费。
* @param logistics_type 物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
* @param logistics_payment 物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
* @param quantity 商品数量,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品。
* @param receive_name 收货人姓名,如:张三
* @param receive_address 收货人地址,如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
* @param receive_zip 收货人邮编,如:123456
* @param receive_phone 收货人电话号码,如:7
* @param receive_mobile 收货人手机号码,如:
* @param logistics_fee_1 第二组物流费用,即运费。
* @param logistics_type_1 第二组物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
* @param logistics_payment_1 第二组物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
* @param logistics_fee_2 第三组物流费用,即运费。
* @param logistics_type_2 第三组物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
* @param logistics_payment_2 第三组物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
* @param buyer_email 默认买家支付宝账号
* @param discount 折扣,是具体的金额,而不是百分比。若要使用打折,请使用负数,并保证小数点最多两位数
* @param input_charset 字符编码格式 目前支持 GBK 或 utf-8
* @param key 安全校验码
* @param sign_type 签名方式 不需修改
* @return 表单提交HTML文本
public static String BuildForm(String partner,
String seller_email,
String return_url,
String notify_url,
String show_url,
String out_trade_no,
String subject,
String body,
String price,
String logistics_fee,
String logistics_type,
String logistics_payment,
String quantity,
String receive_name,
String receive_address,
String receive_zip,
String receive_phone,
String receive_mobile,
String logistics_fee_1,
String logistics_type_1,
String logistics_payment_1,
String logistics_fee_2,
String logistics_type_2,
String logistics_payment_2,
String buyer_email,
String discount,
String input_charset,
String key,
String sign_type){
Map sPara = new HashMap();
sPara.put("service","trade_create_by_buyer");
sPara.put("payment_type","1");
sPara.put("partner", partner);
sPara.put("seller_email", seller_email);
sPara.put("return_url", return_url);
sPara.put("notify_url", notify_url);
sPara.put("_input_charset", input_charset);
sPara.put("show_url", show_url);
sPara.put("out_trade_no", out_trade_no);
sPara.put("subject", subject);
sPara.put("body", body);
sPara.put("price", price);
sPara.put("logistics_fee", logistics_fee);
sPara.put("logistics_type", logistics_type);
sPara.put("logistics_payment", logistics_payment);
sPara.put("quantity", quantity);
sPara.put("receive_name", receive_name);
sPara.put("receive_address", receive_address);
sPara.put("receive_zip", receive_zip);
sPara.put("receive_phone", receive_phone);
sPara.put("receive_mobile", receive_mobile);
sPara.put("logistics_fee_1", logistics_fee_1);
sPara.put("logistics_type_1", logistics_type_1);
sPara.put("logistics_payment_1", logistics_payment_1);
sPara.put("logistics_fee_2", logistics_fee_2);
sPara.put("logistics_type_2", logistics_type_2);
sPara.put("logistics_payment_2", logistics_payment_2);
sPara.put("buyer_email", buyer_email);
sPara.put("discount", discount);
Map sParaNew = AlipayFunction.ParaFilter(sPara); //除去数组中的空值和签名参数121
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//生成签名结果122
StringBuffer sbHtml = new StringBuffer();
List keys = new ArrayList(sParaNew.keySet());
String gateway = "/cooperate/gateway.do?";
//GET方式传递128
sbHtml.append("&form id=\"alipaysubmit\" name=\"alipaysubmit\" action=\"" + gateway + "_input_charset=" + input_charset + "\" method=\"get\"&");
//POST方式传递(GET与POST二必选一)
130 //sbHtml.append("&form id=\"alipaysubmit\" name=\"alipaysubmit\" action=\"" + gateway + "_input_charset=" + input_charset + "\" method=\"post\"&");131
for (int i = 0; i & keys.size(); i++) {
String name = (String) keys.get(i);
String value = (String) sParaNew.get(name);
sbHtml.append("&input type=\"hidden\" name=\"" + name + "\" value=\"" + value + "\"/&");
sbHtml.append("&input type=\"hidden\" name=\"sign\" value=\"" + mysign + "\"/&");
sbHtml.append("&input type=\"hidden\" name=\"sign_type\" value=\"" + sign_type + "\"/&");
//submit按钮控件请不要含有name属性
142 //sbHtml.append("&input type=\"submit\" value=\"支付宝确认付款\"&&/form&");143
sbHtml.append("&script&document.forms['alipaysubmit'].submit();&/script&");
return sbHtml.toString();
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 整合Alipay发货信息同步 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓149
* 功能:把数组所有元素按照“参数=参数值”的模式用“&”字符拼接成字符串
* @param params 需要排序并参与字符拼接的参数组
* @param input_charset 编码格式
* @return 拼接后字符串
public static String CreateLinkString_urlencode(Map params, String input_charset){
List keys = new ArrayList(params.keySet());
Collections.sort(keys);
String prestr = "";
for (int i = 0; i & keys.size(); i++) {
String key = (String) keys.get(i);
String value = (String) params.get(key);
prestr = prestr + key + "=" + URLEncoder.encode(value,input_charset) + "&";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
* 功能:远程xml解析
* @param partner 合作身份者ID
* @param trade_no 支付宝交易号。它是登陆支付宝网站在交易管理中查询得到,一般以8位日期开头的纯数字(如:XXXXXXXXXX)
* @param logistics_name 物流公司名称
* @param invoice_no 物流发货单号
* @param transport_type 物流发货时的运输类型,三个值可选:POST(平邮)、EXPRESS(快递)、EMS(EMS)
* @param seller_ip 卖家本地电脑IP地址
* @param input_charset 字符编码格式 目前支持 GBK 或 utf-8
* @param key 安全校验码
* @param sign_type 签名方式 不需修改
* @return 获得解析结果
public static String PostXml(String partner,
String trade_no,
String logistics_name,
String invoice_no,
String transport_type,
String seller_ip,
String input_charset,
String key,
String sign_type) throws Exception{
Map sPara = new HashMap();
sPara.put("service","send_goods_confirm_by_platform");
sPara.put("partner", partner);
sPara.put("trade_no", trade_no);
sPara.put("logistics_name", logistics_name);
sPara.put("invoice_no", invoice_no);
sPara.put("transport_type", transport_type);
sPara.put("seller_ip", seller_ip);
sPara.put("_input_charset", input_charset);
Map sParaNew = AlipayFunction.ParaFilter(sPara); //除去数组中的空值和签名参数209
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//生成签名结果210
sParaNew.put("sign", mysign);
sParaNew.put("sign_type", "MD5");
String strUrl = "/cooperate/gateway.do?_input_charset=utf-8";
URL url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(CreateLinkString_urlencode(sParaNew,input_charset).getBytes("utf-8"));
os.close();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String xmlResult ="";
while( (line =br.readLine()) != null ){
xmlResult += "\n"+
br.close();
return xmlR
======================
华丽丽的分割线
======================
4.alipay 页面跳转同步通知处理
4.1 页面跳转同步通知
  当买家完成了支付流程后,会出现成功支付的页面,该页面做短暂停留后,会跳转到我们AlipayConfig.xml中的 return_url 属性所指定的页面,这称为页面跳转同步通知。
  我们需要在该页面请求中,做相应的商业逻辑处理,如判断并更改订单状态,增加数据库中表示money的字段,注意:判断状态是十分必要的,避免重复进行操作。
4.2 returnURL
* 功能:付完款后跳转的页面(页面跳转同步通知页面)
* WAIT_SELLER_SEND_GOODS(表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货);
* TRADE_FINISHED(表示买家已经确认收货,这笔交易完成);
public String returnURL() {
String key = AlipayConfig.
// 获取支付宝GET过来反馈信息 11
Map params = new HashMap();
// MyServletContext 为自定义的类,可无视,换成如下写法:
14 // HttpServletRequet request = ServletActionContext.getRequest(); 15
HttpServletRequest request = MyServletContext.getRequest();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i & values. i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
// 乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化 27
valueStr = new String(valueStr.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
params.put(name, valueStr);
// 判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致
36 // responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
37 // mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 38
String mysign = AlipayNotify.GetMysign(params, key);
String responseTxt = AlipayNotify.Verify(request
.getParameter("notify_id"));
String sign = request.getParameter("sign");
// 写日志记录(若要调试,请取消下面两行注释)
44 // String sWord = "responseTxt=" + responseTxt +
45 // "\n return_url_log:sign=" + sign + "&mysign=" + mysign +
46 // "\n return回来的参数:" + AlipayFunction.CreateLinkString(params);
47 // AlipayFunction.LogResult(sWord);
49 // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)//
String trade_no = request.getParameter("trade_no"); // 支付宝交易号 51
String order_no = request.getParameter("out_trade_no"); // 获取订单号 52
String total_fee = request.getParameter("price"); // 获取总金额 53
String subject = "";
subject = new String(request.getParameter("subject").getBytes(
"ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block 59
e1.printStackTrace();
}// 商品名称、订单名称 61
String body = "";
if (request.getParameter("body") != null) {
body = new String(request.getParameter("body").getBytes(
"ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}// 商品描述、订单备注、描述 70
String buyer_email = request.getParameter("buyer_email"); // 买家支付宝账号 72
String receive_name = "";// 收货人姓名 73
if (request.getParameter("receive_name") != null) {
receive_name = new String(request.getParameter("receive_name")
.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String receive_address = "";// 收货人地址 82
if (request.getParameter("receive_address") != null) {
receive_address = new String(request.getParameter(
"receive_address").getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String receive_zip = "";// 收货人邮编 91
if (request.getParameter("receive_zip") != null) {
receive_zip = new String(request.getParameter("receive_zip")
.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String receive_phone = "";// 收货人电话100
if (request.getParameter("receive_phone") != null) {
receive_phone = new String(request
.getParameter("receive_phone").getBytes("ISO-8859-1"),
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block107
e.printStackTrace();
String receive_mobile = "";// 收货人手机111
if (request.getParameter("receive_mobile") != null) {
receive_mobile = new String(request.getParameter(
"receive_mobile").getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String trade_status = request.getParameter("trade_status"); // 交易状态
120 // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//
String verifyStatus = "";
if (mysign.equals(sign) && responseTxt.equals("true")) {
//////////////////////////////////////////////////////////////////////////////////////////125 // 请在这里加上商户的业务逻辑程序代码
126 127 // ——请根据您的业务逻辑来编写程序(以下代码仅作参考)——128
if (trade_status.equals("WAIT_SELLER_SEND_GOODS")) {
// 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
130 // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
131 // 如果有做过处理,不执行商户的业务程序
132 133 //
if ("WAIT_BUYER_PAY".equals(memberMoney.getRemark())
&& mMoney == Double.parseDouble(total_fee)) {
memberMoney.setRemark("WAIT_BUYER_CONFIRM_GOODS");
memberMoneyService.saveOrUpdate(memberMoney);
Members member = memberService.get(mid);
if(member.getIdealMoney()==null){ // 这里是前人的数据库设置不合理,没给金钱这字段默认值,故判断其是否为空
member.setIdealMoney(mMoney);
member.setIdealMoney(member.getIdealMoney() + mMoney);
memberService.saveOrUpdate(member); // 如果订单状态为默认状态,则添加金钱
146 //// 这里是发货信息同步
String xmlResult = AlipayService.PostXml(
AlipayConfig.partner, trade_no, "直接充值",
"请到个人中心-我的钱包查看充值货币", "EXPRESS", "",
AlipayConfig.input_charset, AlipayConfig.key,
AlipayConfig.sign_type);
} catch (Exception e) {
e.printStackTrace();
// ——请根据您的业务逻辑来编写程序(以下代码仅作参考)——159
if (trade_status.equals("TRADE_FINISHED")) {
// 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
161 // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
162 // 如果有做过处理,不执行商户的业务程序
163 164 //
if ("WAIT_BUYER_PAY".equals(memberMoney.getRemark())
&& mMoney == Double.parseDouble(total_fee)) {
memberMoney.setRemark("TRADE_FINISHED");
memberMoneyService.saveOrUpdate(memberMoney);
Members member = memberService.get(mid);
if(member.getIdealMoney()==null){
member.setIdealMoney(mMoney);
member.setIdealMoney(member.getIdealMoney() + mMoney);
memberService.saveOrUpdate(member); // 如果订单状态为默认状态,则添加金钱
175 //176 //
177 //// 这里是发货信息同步
178 179 //
String xmlResult = AlipayService.PostXml(
AlipayConfig.partner, trade_no, "直接充值",
"个人中心请查看充值货币", "EXPRESS", "",
AlipayConfig.input_charset, AlipayConfig.key,
AlipayConfig.sign_type);
} catch (Exception e) {
e.printStackTrace();
} else if ("WAIT_BUYER_CONFIRM_GOODS".equals(memberMoney
.getRemark())
&& mMoney == Double.parseDouble(total_fee)) {
memberMoney.setRemark("TRADE_FINISHED");
memberMoneyService.saveOrUpdate(memberMoney);
verifyStatus = "验证成功";
// ——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
198 199 //////////////////////////////////////////////////////////////////////////////////////////
verifyStatus = "验证失败";
return SUCCESS;
4.3 struts.xml
&!-- 上面略,该action用于页面跳转同步通知 --&
&action name="payMoney" class="AlipayAction" method="payMoney"&
&result name="success"&alipayto.jsp&/result&
&result name="input"&exception.jsp&/result&
======================
华丽丽的分割线
======================
5.alipay 服务器异步通知处理
5.1 服务器异步通知
  买家在支付宝中完成交易,付了款后,会出现如下页面:
  该页面做数秒停留后,会跳转到 AlipayConfig.xml 中的 return_url 属性所指定的页面,这称为页面跳转同步通知(如前所述),而商业网站便在被调用的页面中,做业务逻辑处理。
  但是,买家可能在 Alipay 尚未跳转前,便把上面那页面关闭,这时怎么办?
  为解决这问题 ,支付宝便有了服务器异步通知。即每当交易状态发生变化,Alipay 都会主动通知AlipayConfig.xml 中的 notify_url 属性所指定的页面(该action不能有返回值,也不能跳转)。这样做确实解决了该问题,但也带来了可能重复调用,故,我们需要判断alipay传过来的状态是否被处理过,若处理过,则不重复执行。
5.2 notifyURL
逻辑处理语句略!!!
* 功能:支付宝主动通知调用的页面(服务器异步通知页面)
public void notifyURL() {
String key = AlipayConfig.
// 获取支付宝POST过来反馈信息
Map params = new HashMap();
//HttpServletRequest request = ServletActionContext.getRequest(); 11
HttpServletRequest request = MyServletContext.getRequest();
PrintWriter out = null;
// out = ServletActionContext.getResponse().getWriter(); 15
out = MyServletContext.getResponse().getWriter();
} catch (IOException e) {
e.printStackTrace();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i & values. i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
// 乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化
29 // valueStr = new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"); 30
params.put(name, valueStr);
// 判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致
34 // responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
35 // mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 36
String mysign = AlipayNotify.GetMysign(params, key);
String responseTxt = AlipayNotify.Verify(request
.getParameter("notify_id"));
String sign = request.getParameter("sign");
// 写日志记录(若要调试,请取消下面两行注释) 42
String sWord = "responseTxt=" + responseTxt + "\n notify_url_log:sign="
+ sign + "&mysign=" + mysign + "\n notify回来的参数:"
+ AlipayFunction.CreateLinkString(params);
AlipayFunction.LogResult(sWord);
// 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)//
String trade_no = request.getParameter("trade_no"); // 支付宝交易号 49
String order_no = request.getParameter("out_trade_no"); // 获取订单号 50
String total_fee = request.getParameter("price"); // 获取总金额 51
String subject = "";
subject = new String(request.getParameter("subject").getBytes(
"ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}// 商品名称、订单名称 58
String body = "";
if (request.getParameter("body") != null) {
body = new String(request.getParameter("body").getBytes(
"ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}// 商品描述、订单备注、描述 66
String buyer_email = request.getParameter("buyer_email"); // 买家支付宝账号 68
String receive_name = "";// 收货人姓名 69
if (request.getParameter("receive_name") != null) {
receive_name = new String(request.getParameter("receive_name")
.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String receive_address = "";// 收货人地址 78
if (request.getParameter("receive_address") != null) {
receive_address = new String(request.getParameter(
"receive_address").getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String receive_zip = "";// 收货人邮编 87
if (request.getParameter("receive_zip") != null) {
receive_zip = new String(request.getParameter("receive_zip")
.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String receive_phone = "";// 收货人电话 96
if (request.getParameter("receive_phone") != null) {
receive_phone = new String(request
.getParameter("receive_phone").getBytes("ISO-8859-1"),
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String receive_mobile = "";// 收货人手机106
if (request.getParameter("receive_mobile") != null) {
receive_mobile = new String(request.getParameter(
"receive_mobile").getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
String trade_status = request.getParameter("trade_status"); // 交易状态
115 // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//
if (mysign.equals(sign) && responseTxt.equals("true")) {// 验证成功
118 //////////////////////////////////////////////////////////////////////////////////////////119 // 请在这里加上商户的业务逻辑程序代码
120 121 122 // —— 请根据您的业务逻辑来编写程序(以下代码仅作参考)——123
if (trade_status.equals("WAIT_BUYER_PAY")) {
// 该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款
125 126 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
127 // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
128 // 如果有做过处理,不执行商户的业务程序
129 // 不做处理130
out.println("success"); // 请不要修改或删除131
} else if (trade_status.equals("WAIT_SELLER_SEND_GOODS")) {
// 该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货
133 134 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
135 // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
136 // 如果有做过处理,不执行商户的业务程序137
out.println("success"); // 请不要修改或删除140
} else if (trade_status.equals("WAIT_BUYER_CONFIRM_GOODS")) {
// 该判断表示卖家已经发了货,但买家还没有做确认收货的操作
142 143 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
144 // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
145 // 如果有做过处理,不执行商户的业务程序146
out.println("success"); // 请不要修改或删除148
} else if (trade_status.equals("TRADE_FINISHED")) {
// 该判断表示买家已经确认收货,这笔交易完成
150 151 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
152 // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
153 // 如果有做过处理,不执行商户的业务程序154
out.println("success"); // 请不要修改或删除157
out.println("success"); // 请不要修改或删除159
// ——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
161 162 //////////////////////////////////////////////////////////////////////////////////////////
}else {// 验证失败164
out.println("fail");
5.3 struts.xml
&!-- 上面略,该action不能执行任何跳转 --&
&action name="notifyURL" class="AlipayAction" method="notifyURL"/&
浏览: 290131 次
来自: 广州
推荐一款轻量开源的支付宝组件:https://github.c ...
太好了,非常有用,谢谢分享~
http://www.atool.org/json2javab ...
这样只要是手机登录了微信的用户。扫描二维码后都可以登录进入网站 ...
好文章,收藏~\(≧▽≦)/~啦啦啦

我要回帖

更多关于 支付宝交电费充值金额 的文章

 

随机推荐