1. Pacotes inúteis com códigos-chave de AÇÃO podem ser eliminados.
importe-o.sauronsoftware.base64.Base64;
importar java.io.IOException;
importar java.io.PrintWriter;
importar java.net.HttpURLConnection;
importar java.util.HashMap;
importar java.util.Map;
importar java.util.ResourceBundle;
importar javax.servlet.http.HttpServletResponse;
importar org.apache.struts2.ServletActionContext;
importar org.dom4j.Document;
importar org.springframework.stereotype.Controller;
importar com.alibaba.fastjson.JSON;
importar com.hzdracom.action.BaseAction;
importar com.hzdracom.config.AlipayConfig;
importar com.hzdracom.util.AlipaySubmit;
importar com.hzdracom.util.HTTPService;
importar com.hzdracom.util.UtilDate;
importar com.hzlq.source.security.DESUtil;
/*
* Interface de pagamento Alipay
* @autor ZhuangZi
* @Direções
* @versão $Id: AliPayAction.java,v 0.1 27/03/2013 16:49:57 PM ZhuangZi Exp $
*/
@Controlador
classe pública AliPayAction estende BaseAction {
string privada phoneCode;
private String taxa total;
/**
* Ligue para a interface Alipay
* @autor ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method Alipay
* @Directions chama interface Alipay
* @data 27-3-2013 16:53:35 nulo
*/
pagamento público nulo() {
tentar {
/*1****Gera o número da transação Alipay, com base no tempo até o nível de milissegundos*/
String out_trade_no = UtilDate.getOrderNum();
/*2*****↓↓↓↓↓↓↓↓↓↓Empacote os parâmetros da solicitação em um array↓↓↓↓↓↓↓↓↓↓*/
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp = getPayPrama(totalfee, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓Solicitar interface Alipay ↓↓↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, "obter", "confirmar");
Resposta HttpServletResponse = ServletActionContext.getResponse();
resposta.setContentType("texto/html");
resposta.setCharacterEncoding("utf-8");
PrintWriter fora;
fora = resposta.getWriter();
json = JSON.toJSONString(json);
saída.write(json);
fora.flush();
out.close();
} catch (IOException e) {
}
}
/**
*
* @autor ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method GetPayPrama
* @Directions encapsula os parâmetros de chamada do Alipay
* @data 01/04/2013 17:26:11
* @param valor da taxa total
* @param out_trade_no número do pedido
* @return Mapa<String,String>
*/
public Map<String, String> getPayPrama(String totalfee, String out_trade_no) {
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("serviço", "create_direct_pay_by_user");
sParaTemp.put("parceiro", AlipayConfig.parceiro);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("payment_type", AlipayConfig.payment_type);
/*Caminho da página de notificação assíncrona do servidor //Requer um caminho completo no formato http:// e não pode adicionar parâmetros personalizados como ?id=123*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*Caminho da página de notificação de sincronização de salto de página//Requer um caminho completo no formato http://. Parâmetros personalizados como ?id=123 não podem ser adicionados e não podem ser gravados como http://localhost/*/.
sParaTemp.put("return_url", AlipayConfig.return_url);
/*Conta Alipay do vendedor*/
sParaTemp.put("vendedor_email", AlipayConfig.seller_email);
/*Número do pedido do comerciante*/
sParaTemp.put("out_trade_no", out_trade_no);
/*Nome do pedido*/
sParaTemp.put("assunto", AlipayConfig.subject);
/*Valor do pagamento*/
sParaTemp.put("total_fee", totalfee);
/*Descrição do pedido*/
sParaTemp.put("corpo", AlipayConfig.body);
/*Requer um caminho completo começando com http://, por exemplo: http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//Carimbo de data/hora anti-phishing
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*O endereço IP do cliente não é o endereço IP externo da LAN, como: 221.0.0.1*/
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
retornar sParaTemp;
}
public String getPhoneCode() {
retornar códigotelefone;
}
public void setPhoneCode(String phoneCode) {
this.phoneCode = phoneCode;
}
public String getTotalfee() {
devolver taxa total;
}
public void setTotalfee(String taxatotal) {
this.totalfee = totalfee;
}
}
2. A classe AlipayConfig encapsula os parâmetros da interface Alipay
importar com.hzdracom.util.UtilDate;
/* *
*Nome da classe: AlipayConfig
*Função: Classe de configuração básica
*Detalhes: Defina informações relacionadas à conta e caminho de retorno
*Versão: 3.3
*Data: 10/08/2012
*ilustrar:
*O código a seguir é apenas um exemplo de código fornecido para facilitar o teste do comerciante. Os comerciantes podem escrevê-lo de acordo com a documentação técnica de acordo com as necessidades de seus próprios sites e não são obrigados a usar este código.
*Este código serve apenas para aprender e pesquisar a interface do Alipay e é fornecido apenas como referência.
*Dica: como obter o código de verificação de segurança e o ID do parceiro
*1. Use sua conta Alipay contratada para fazer login no site Alipay (www.alipay.com)
*2. Clique em "Serviços Comerciantes" (https://b.alipay.com/order/myOrder.htm)
*3 Clique em "Consultar identidade do parceiro (PID)" e "Consultar código de verificação de segurança (chave)"
*Ao visualizar o código de verificação de segurança, após inserir a senha de pagamento, a página fica cinza. O que devo fazer?
*Solução:
*1. Verifique a configuração do navegador e não permita que ele bloqueie caixas com marcadores.
*2 Mude o navegador ou computador e faça login novamente para consultar.
*/
classe pública AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓Por favor, configure suas informações básicas aqui↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// ID do parceiro, uma string de 16 dígitos começando com 2088
public static String parceiro = "2088001466494907";
// Chave privada do comerciante
chave de string estática pública = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
//↑↑↑↑↑↑↑↑↑Por favor configure suas informações básicas aqui↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//Para depuração, crie o caminho da pasta de log TXT
public static String log_path = "D://";
//O formato de codificação de caracteres atualmente suporta gbk ou utf-8
string estática pública input_charset = "utf-8";
// O método de assinatura não precisa ser modificado
public static String sign_type = "MD5";
public static String pagamento_type = "1";
//Obrigatório, não pode ser modificado
//Caminho da página de notificação assíncrona do servidor
string estática pública notify_url = "notify_url.jsp";
//O caminho completo no formato http:// é obrigatório e parâmetros personalizados como ?id=123 não podem ser adicionados.
//Caminho da página de notificação de sincronização de salto de página
string estática pública return_url = "return_url.jsp";
//O caminho completo no formato http:// é obrigatório. Parâmetros personalizados como ?id=123 não podem ser adicionados e http://localhost/ não podem ser adicionados.
//Conta Alipay do vendedor
string estática pública vendedor_email = "[email protected]";
//obrigatório
//Número do pedido do comerciante
public static String out_trade_no =UtilDate.getOrderNum();
//O único número de pedido no sistema de pedidos do site do comerciante, obrigatório
//Nome do pedido
public static String subject = "Recarga de conta oculta";
//obrigatório
//Descrição do pedido
public static String body = "Recarga de conta oculta";
//Endereço de exibição do produto
string estática pública show_url = "";
//Carimbo de data/hora anti-phishing
public static String anti_phishing_key="";
/*O endereço IP do cliente não é o endereço IP externo da LAN, como: 221.0.0.1*/
string estática pública exter_invoke_ip="";
}
3. arquivo de configuração de suporte
<nome da ação="pagamento" método="pagamento">
</action>
O texto acima é a parte do código-chave. Os itens a serem observados são:
1. Você precisa introduzir várias classes da interface fornecida pelo Alipay em seu projeto, incluindo o pacote de prateleira
2. Os endereços notify_url.jsp e return_url.jsp devem ser preparados para serem o caminho completo do endereço de rede externo.
3. Escreva seu próprio processamento de negócios em notify_url.jsp ou você pode escrever diretamente uma interface para chamar a interface Alipay.