支付宝面对面支付(境外)

本文详细介绍了境外支付宝的面对面支付方式,包括条码支付、商户静态二维码和动态二维码的使用。涉及到的关键文件和方法有AlipayNotify.jsp、InStorePay.html/jsp等,并提到了境外支付中数据签名采用MD5,且密钥与境内不同。网关地址在测试和正式环境中有所不同,同时提供了操作流程和注意事项,如验证签名时需去除空值键值对。参考支付宝的demo链接可在优快云下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、面对面支付分为:条码支付、正向扫码(商户静态二维码)、正向扫码(商户动态二维码)

2、文件名:AlipayNotify.jsp(信息回调接收页面)、InStorePay.html/jsp(条码支付)、MerchantQR.html/jsp(静态二维码)、TransactionQR.html/jsp(动态二维码)、query.html/jsp(查询交易信息)、refund.html/jsp(交易退款)、cancel.java(撤销交易)、CheckQuery.java(ajax 查询交易)、Method.java(生成请求数据,生成请求连接、请求支付宝服务器、查询逻辑、撤销逻辑)、web.xml(配置ajax 关联到CheckQuery.java)

3、境外的支付宝支付,数据签名是用MD5签名的,支付宝不提供相关jar包

4、境外支付宝使用MD5的密钥,这个跟境内的不一样,还有就是旧版接口和新版接口用的密钥是不同的两条(境内同理)

5、网关地址:测试环境为:https://openapi.alipaydev.com/gateway.do?

   正式环境为:https://intlmapi.alipay.com/gateway.do? (具体以官网集成文档为准)


境外的代码比较容易,具体如下:

try{
System.out.println("");
System.out.println("********InStorepay start********");
out.println("<a href =\"index.html\"></a>");
int cancelcounter = 0;
SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
String orderId = date.format(new Date());
String key = properties.key;
String buyer_identity_code = request.getParameter("buyer_identity_code");
String biz_product = properties.biz_product;
String partner = properties.PID;
String alipay_seller_id = partner;
String trans_amount = request.getParameter("trans_amount");
String _input_charset = properties.input_charset;
String service = properties.f2f_service;
String partner_trans_id = orderId;
String currency = request.getParameter("currency");
String identity_code_type = properties.identity_code_type;
String trans_create_time = orderId;
String sign_type = properties.sign_type;
String trans_name = request.getParameter("trans_name");
String secondary_merchant_name = properties.secondary_merchant_name;//the name u decide
String secondary_merchant_id = properties.secondary_merchant_id;//the id u decide
String secondary_merchant_industry = properties.secondary_merchant_industry;//check-> MCC code Alipay merchant onboarding form 20161021.xlsx
String extend_info = "{'secondary_merchant_name':'"+secondary_merchant_name+"','secondary_merchant_id':'"+secondary_merchant_id+"','secondary_merchant_industry':'"+secondary_merchant_industry+"'}";
String sign = "";

Map<String, String> para = new HashMap<String, String>();
para.put("alipay_seller_id", alipay_seller_id);
para.put("biz_product", biz_product);
para.put("buyer_identity_code", buyer_identity_code);
para.put("currency", currency);
para.put("extend_info", extend_info);
para.put("identity_code_type", identity_code_type);
para.put("partner", partner);
para.put("partner_trans_id", partner_trans_id);
para.put("service", service);
para.put("sign_type", sign_type);
para.put("trans_amount", trans_amount);
para.put("trans_create_time", trans_create_time);
para.put("trans_name", trans_name);
para.put("_input_charset", _input_charset);

String sUrlText = Method.buildRequest(para,"get","确认");
//System.out.println(sUrlText);

String res = Method.requestAlipay(sUrlText);
//System.out.println(res);

Map data = Method.doXMLParse(res);
System.out.println("*****data:"+data);
String isSuccess = data.get("is_success").toString();
String old_sign = data.get("sign").toString();

Map data_rp = Method.doXMLParse("<xml>"+data.get("response").toString()+"</xml>");
Map alipay = Method.doXMLParse("<xml>"+data_rp.get("alipay").toString()+"</xml>");
JSONObject json = new JSONObject(alipay);
//System.out.println("alipay:"+alipay);

String request_rs = data.get("request").toString();

System.out.println(request_rs);
可以看出,容易出错的是extend_info,里面的字符串需要以 {'key':'value','key2':'value2'} 形式来传递到下一步,key和value都需要用单引号包着,这里是跟境内不一样的

然后看生成请求参数,使用Method.buildRequest方法,把请求的数据组合成一条链接就好了,如:https://intlmapi.alipay.com/gateway.do?key=value&key=value&key=value,然后用URLConnection发出去就可以等反馈数据了,退款、撤销等操作的逻辑一样,注意参数就好了,还有注意对返回结果验证签名是,要把值为空的键值对去掉


支付宝demo链接:http://download.youkuaiyun.com/download/qq_22778717/10231371

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值