Recentemente, o desenvolvimento do pagamento da conta pública do WeChat foi explorada por alguns dias porque foi feita pela primeira vez e atingiu apenas o nível de função de implementação
O pagamento geral da conta pública do WeChat é realmente muito simples e é dividido aproximadamente em três etapas. A primeira etapa precisa ser obtida pela Autorização do Usuário; A seguir, apresenta o processo de desenvolvimento de cada etapa.
Primeiro de tudo, é necessário esclarecer que o pagamento da conta pública do WeChat é um pagamento da versão da Web, por isso é necessário para uma etapa mais autorização do WeChat do que o aplicativo recuperou diretamente o pagamento do WeChat. Ou seja, você precisa obter o OpenID do usuário. O tipo de transação usada pela conta pública do WeChat é JSAPI, então o documento da interface de ordem unificada é claramente escrito para
Portanto, devemos obter o OpenID e, ao mesmo tempo, podemos lidar com alguma lógica de que precisamos. Existem duas maneiras de obter autorização do usuário: 1.Scope = SNSAPI_BASE;
O escopo é snapi_base
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&rdirect_uri=htt %2fchong.qq.com%2FPPPHPCPDODXP.P.%3 26. 3 26. 3 26. 36FP1FPPHPPDOLPDEXP%3 26. 3 26. 36FP1FPPHPPDEX%3 26. 3 26 de 36 de 360 36FPPHPPPHPDP1F.P.P.P. Aytitle% 3D1%26VB2CTAG%3D4_2030_5_1194_60 & Response_type = Código & SCOPE = SNSAPI_BASE & STATE = 123#wechat_redirect
O escopo é snapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http% 3a%2f%2fnBa.bluewebgame.com%2FOATH_RESPO Estado#wechat_redirect
O documento oficial do WeChat também tem uma explicação detalhada de cada parâmetro, e explicarei cuidadosamente os principais parâmetros. Primeiro, o Appid não tem muito a dizer que o Appid da sua conta pública do WeChat é fixa até a morte. Você pode costurar os parâmetros necessários neste link. Os parâmetros de estado podem ser entendidos como campos estendidos. A seguir, o clipe de código do OpenID.
// Obtenha o OpenId HttpClientUtil Util = httpclientutil.getInstance (); , Wxpayconfig.appsecret); /Sns/oauth2/access_token ", null, mapa); logger.info (" returnStr: [" + returnst +"] "); accessstoken at = json.parseObject (returnstr, accessstoken.c lass);AccessToken.java
classe pública AccessToken {String privada Acesso_taken; Retorno expires_in;} public void setexpires_in (string expires_in) {this.expires_in = expires_in; OpenId;} public void SetopenId (String OpenId) {this.openid = OpenId;} public string e () {return scope;} public void setScope (string scope) {this.Scope = scope;} public string getUnionId () {return {return {return {return {return UnionId;} public void setUnionId (String UnionId) {this.unionId = UnionId; OpenId = " + OpenId +", Scope = " + Scope +", UnionId = " + UnionId +"] "]"] "]"Segundo, depois que obtivemos o OpenID, podemos realizar a próxima colocação unificada de pedidos. O documento da interface única no WeChat é mais detalhada e não vou apresentar o significado específico do parâmetro. O código mais intuitivo é publicado abaixo, especialmente lembrando que você deve prestar atenção à assinatura correta. A chave usada na assinatura não é o AppSecret, mas a chave do comerciante que você definiu quando se aplica.
// Uniforme O pedido WXPaySendData Data = novo WXPaySendData (); Data.SetNonce_ST (Non -CEST); IP); alias ("xml", wxpayrendurndata.class);UnifiedorderService.java
Classe pública UnifiedorderService {private Final Static Logger = LoggerFactory.getLogger (UnifiedorDerService.class); Objeto, objeto> parâmetros = novo Treemap <objeto, objeto> (); Parâmetros; .getout_trade_no ()); ", Data.getOpenid ()); parameters.put (" device_info ", d ata.getdevice_info ()); logger.info (" sinal: "+wxsign.createSign (parâmetros, chave); f-8", novo Xmlfriendlynamecoder ("- _", "_")); xml); " + Returnxml);} catch (Exceção e) {e.printStacktrace ();} return returnxml;}}}}}}}}}WXSIGN
Classe pública wxsign {private static string caracterrencoding = "utf-8"; Parâmetros.EntrySet (); It. {sb.append (k + "=" + v + "&");}} sb.append ("key =" + key); ); {Return string.valueof (System.CurrentTimemillis () / 1000);}}A última coisa a mencionar é o endereço de retorno de chamada notify_url para receber o endereço de retorno de chamada de notificação assíncrona do WeChat.
Obtivemos a preparação da preparação da transação de pré -pagamento, para que possamos executar a última etapa. Use H5 para ajustar a API de pagamento.
// H5 Aumente o pagamento de pagamento. ); "Appid", Redata.getAppid ()); ); ", wxsign.createsign (signmap, wxpayconfig.key));
Depois de passar os parâmetros necessários para a página, use o WeChat para fornecer um método para configurar o pagamento.
<Cript> função getUrlParam (nome) {// Construa um objeto de expressão regular contendo parâmetros de destino var reg = new regexp ("(^| &)" + nome + "= ([^&]*) (& | $)) "); // corresponde ao parâmetro de destino var r = window.location.search.substr (1) .match (reg); // retorna o valor do parâmetro if (r! = null) retorna unescape (r [2]); null;} função onbridgeready () {var appid = geturlparam ('Appid'); 'SignType'); Timestamp, //" 1395712654 ", // Timelia, the second number of seconds since 1970" Noncestr ": Noncestr, //" E61463F8EFA94090B1F366cccfbbb444 ", // Random string" Package " GE, // "Prepay_id = u802345jgfjsdgsdg888 "," Signtype ": Signtype, //" MD5 ", // WeChat signature method:" PaySign ": PaySign, //" 70EA570631E4bb79628fbca905343FFADD89 "" // WeChat signature}, function (res) {// Use the above method to judge the front end De volta, a equipe do WeChat lembra solenemente: Res.err_msg retornará ao OK depois que o usuário paga com sucesso, mas não garante que seja absolutamente confiável. get_brand_wcpay_request: cancel ") {alert (" cancelamento da transação ");} if (res.err_msg ==" get_wcpay_request: falha ") lert (" falha de pagamento ");}});} função == "Subfinado") {if (document.addeventristener) {document.addeventlistener ('wei xinjsbridgeready', onbridgeready, false);} else (document. AnexeEvent ('onweixinjsbridgeready', onbridgeready);}} else {onbridgeready ();}} </sCript>Você pode personalizar sua própria página de retorno, onde retorna o resultado.
Resumo: Como eu também faço isso pela primeira vez, escrever este artigo é registrar meus resultados de trabalho, e os amigos que compartilham com iniciantes podem ter alguma ajuda progresso.
O exposto acima é todo o conteúdo do desenvolvimento de Java do Pagamento Público do WeChat.