1. Documento oficial do WeChat Processo de Desenvolvimento de Pagamentos WeChat (pagamento da conta pública)
Primeiro, vamos para a seção de etapas de desenvolvimento da documentação oficial do WeChat Pay para verificar as configurações necessárias.
[Falha no upload da imagem ... (Image-5EB825-1531014079742)]
Como o pagamento do WeChat requer altas permissões, apenas contas de serviço certificadas podem ter permissão para usar a interface de pagamento do WeChat. É difícil solicitá -lo pessoalmente, por isso precisamos emprestar uma conta de outros amigos.
Venha para o processo de negócios parte do documento e verifique o processo de pagamento do WeChat (acho que isso ainda requer um entendimento e visualização muito cuidadosos, o que o ajudará a entender o processo de desenvolvimento do WeChat).
Em seguida, o acesso à interface de pagamento do WeChat exige que muitos parâmetros sejam aprovados. Veja o single Unified
[Falha no upload da imagem ... (Image-DF7051-1531014079742)]
Depois de verificar os documentos oficiais de pagamento do WeChat acima, acredito que você deve ter um certo entendimento disso, mas ainda acho que o desenvolvimento do pagamento do WeChat é muito problemático, por isso usaremos o SDK de terceiros para desenvolver.
2. Desenvolvimento SDK de terceiros pagos WeChat (pagamento da conta pública)
Este é um pagamento pela conta oficial. Usamos o melhor pagamento-sdk. Este SDK usa o PayRequest e o PayResponse para encapsular a interface de solicitação e os resultados correspondentes. Os principais parâmetros que precisam ser passados dinamicamente são OpenId (Usuário, identificador exclusivo) e OrderId. Em seguida, vamos dar uma olhada em como desenvolver.
1. Configuração
// Configuração de pagamento da conta pública weChat wxpayh5config wxpayh5config = new wxpayh5config (); wxpayh5config.setappid ("xxxxx"); wxpayh5config.setAppSecret ("xxxxxxxx"); wxpayh5config.setMchid ("xxxxxx"); wxpayh5config.setmchkey ("xxxxxxx"); wxpayh5config.setNotifyurl ("http: // xxxxx"); // aula de pagamento, todos os métodos estão nesta classe BestPayServiceImpl bestPayService = new BestPayServiceImpl (); BestPayService.setwxpayh5config (wxpayh5config);2. Inicie o pagamento
PayRequest PayRequest = new PayRequest (); PayRequest.SetPayTypeenum (BestPayTypeenum.wxpay_h5); payrequest.setorderId ("123456"); PayRequest.SetOrderName ("Pedido de pagamento da conta pública do WeChat"); PayRequest.SetorderAmount (0,01); PayRequest.setOpenId ("OpenID_XXXXXX"); BestPayService.Pay (PayRequest);3. Retorno de chamada assíncrona
bestPayService.asyncNotify();
É isso que este SDK diz 10 linhas de código para resolver o pagamento do WeChat.
Após a conclusão do pagamento, o WeChat retornará o resultado do pagamento como uma parte de dados XML de pagamento. Precisamos passar esses dados para o URL de notificação assíncrona (notify_url) para concluir a verificação do resultado do pagamento (verifique a assinatura, verifique o status do pagamento). Ambas as etapas do SDK são feitas para nós. Basta ligar para o BestPayService.asyncnotify (notifyData);, após concluir a verificação, precisamos devolver uma peça de dados ao WeChat:
<xml> <rort_code> <! [CDATA [success]]> </rort_code> <lorpT_msg> <! [CDATA [OK]]> </rort_msg> </xml>
Diga ao WeChat que a verificação foi concluída e não nos envie nenhum pedido de notificações assíncronas.
Ainda não está claro como se integrar ao projeto? Não importa, há também uma demonstração de exemplo, que pode ser mais clara.
3. Demo execução
O URL da demonstração é: https://github.com/pay-group/best-pay-demo
Nosso principal controlador está aqui:
@Controlador @slf4jpublic class PayController {@AUTOWIRED PRIVADO BESTPAYSERVICEIMPL BESTPASERVICE; /*** Inicie o pagamento*/@getMapping (value = "/pay") public ModelAndView Pay (@RequestParam ("OpenId") String OpenId, Map <String, Object> Map) {PayRequest Request = new PayRequest (); Aleatório aleatório = novo aleatório (); // Parâmetro de solicitação de pagamento request.setPayTypeenum (BestPayTypeenum.wxpay_h5); request.setorderId (String.Valueof (Random.NextInt (1000000000))); request.setOrderAmount (0,01); request.setOrderName ("Melhor Pagamento SDK"); request.setOpenId (OpenID); log.info ("【Iniciar o pagamento】 request = {}", jsonutil.tojson (request)); PayResponse PayResponse = BestPayService.Pay (solicitação); log.info ("【Iniciar o pagamento】 Resposta = {}", jsonutil.tojson (foca de pagamento)); map.put ("PayResponse", PayResponse); retornar novo ModelAndView ("Pay/Criar", mapa); }/*** retorno de chamada assíncrono*/@PostMapping (value = "/notify") public ModelAndView notify (@RequestBody String notifyData) lança exceção {Log.info ("【Retorno de chamada assíncrona】 request = {}", notifyData); Resposta de PayResponse = BestPayService.asyncnotify (notifyData); Log.info ("【ASYNC Callback】 Response = {}", jsonutil.tojson (resposta)); retornar novo ModelAndView ("Pay/Sucesso"); }}Você pode baixar isso sozinho. Vamos ver como funciona
Descrição do projeto
Precisa ser executado na versão JDK> 1.8
Este projeto foi desenvolvido usando o Springboot 1.5.1
Estrutura do projeto
src/main/java/com/github/lly835├─— paydemoApplication.java ├── servletinitializer.java ├── config│ └─— payconfig.java // Chave de pagamento da classe de pagamento └sto.
Exemplo de execução
Você precisa configurar a chave antes de executar, consulte PayConfig.java
Execute o comando
clone git https://github.com/pay-group/best-pay-democd best-may-demomvn packagejava -jar alvo/*. war
Browser Access http://127.0.0.1:8080/Pay
Resumir
O exposto acima está todo o processo de desenvolvimento de pagamento da versão Java da conta pública do WeChat, apresentada a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo!