支付宝异步通知处理(完整 上线版)

(请勿盗用转载 多谢)

完整...

#支付宝即时到帐#       #支付宝异步通知 #

支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url.

最开始从官网下载到支付宝的接口代码后,虽然程序有注释,还是有一点不太理解异步通知时如何处理的

服务器通知,参数时notify_url,使用POST方式 
页面跳转通知,参数是return_url,使用GET方式 
 notify_url=http://www.xxx.com/notify_url.jsp 注意:www.XXX.com是上线网站的域名,也可以用ip地址代替。对于服务器通知,ip地址一定是公网的

支付宝官方demo  
1.配置相关信息 
AlipayConfig.java
package com.alipay.config;

import java.io.FileWriter;
import java.io.IOException;

/* *
 *类名:AlipayConfig
 *功能:基础配置类
 *详细:设置帐户有关信息及返回路径
 *修改日期:2017-04-05
 *说明:
 *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
 */

public class AlipayConfig {

//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "";

// 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "";

// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "";

// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "http://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";

// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";

// 签名方式
public static String sign_type = "RSA2";

// 字符编码格式
public static String charset = "utf-8";

// 支付宝网关
public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";

// 支付宝网关
public static String log_path = "C:\\";


//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    /** 
     * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
     * @param sWord 要写入日志里的文本内容
     */
    public static void logResult(String sWord) {
        FileWriter writer = null;
        try {
            writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");
            writer.write(sWord);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2.
下载支付宝官方DEMO 然后把demo集合进自己的项目,配置完成之后  其实支付宝接入支付就完成了...接下来 是去处理支付完成之后 自己网站的业务逻辑 : 点击确认支付跳转到支付宝时 先把充值金额等一系列信息存入自己的数据库 

只不过状态是未付款,等扫描支付宝二维码 付款成功之后 利用支付宝服务器通知即notify_url 先去验证支付宝返回的  out_trade_no 、trade_no 、 trade_status

接着去判断trade_status
  状态 为TRADE_SUCCESS")或者 TRADE_FINISHED" 的时候去处理自己的业务逻辑(更新之前存入数据库的交易记录的状态)

3.现在我们就主要说下如何处理自己的业务逻辑以及在哪里写自己的业务逻辑
 notify其实是要提供一个服务,所以我们可以写个servlet  ,支付宝返回的请求是进入这个servlet(配置AlipayConfig 里 notify_url 配置到我们写的这个servlet )在servlet里去接收支付宝返回的 out_trade_no 、trade_no 、 trade_status,然后去判断trade_status   假设 状态我success时 去执行业务逻辑  即: if("TRADE_SUCCESS".equals(trade_status)){ 
//   这里写上自己业务逻辑操作  update
// 利用spring getbean 得到 service 
  
alipayNotifyService.updateXXX(out_trade_no);// 自己的业务逻辑 service——dao——xml 去更新状态
  out.write("success");// 这句必须有 

}

这样 我们就去未付款的状态改成了已付款  
建议;先去看下支付宝官方的demo以及文档    接入支付还是很简单的 主要是去理解服务器通知。

你可能感兴趣的:(支付宝整合)