Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 16619|Resposta: 0

[Interface] C# implementa pagamento pelo WeChat

[Copiar link]
Publicado em 15/03/2019 11:59:31 | | |

Recentemente, eu estava desenvolvendo uma conta oficial no WeChat e tive alguns problemas com o pagamento no WeChat, fiquei confuso por 3 dias, mas hoje finalmente consegui. Durante esse período, gostaria de agradecer a alguns grandes deuses pela ajuda, e vou compartilhar minha experiência com eles enquanto estão quentes.

Antes de implementar o WeChat Pay,

Preciso acessar a plataforma de desenvolvimento do WeChat para a certificação, não vou falar muito sobre essas informações de autenticação e configuração, aqui é principalmente do nível do código para realizar pagamentos.

Documentação oficial: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

Diante de vários parâmetros no JS, vou dar uma explicação principal:


Durante o processo de desenvolvimento, existem 4 parâmetros muito importantes: um é appid, AppSecret, apikey e número de comerciante. O appID no js acima é um deles. TimeStamp é um timestamp, 10 dígitos, nonceStr é um número aleatório, dentro de 32 bits, os dois parâmetros mais importantes aqui, e os mais propensos a erros são package e paySign. Deixe-me contar um por um. Vamos falar primeiro sobre o pacote, precisamos usar prepay_id aqui, esse parâmetro é o número do pedido gerado pelo WeChat, precisamos ligar para a interface unificada de pedidos para obtê-lo. Documentação oficial: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Como você pode ver na documentação, para obter prepay_id, muitos parâmetros são necessários, e um dos parâmetros mais importantes é a assinatura. Nota: A assinatura aqui é diferente da assinatura de pagamento no JS. Existem dois pontos no documento do algoritmo assinado, e eu apenas enfatizo dois pontos. Um é a ordem dos parâmetros, que devem ser emendados de acordo com o ASCII de pequeno para grande, e o outro é que o apikey não deve estar errado, onde está esse apikey? Faça login na plataforma de comerciantes para configurá-lo.

Após emendar as strings necessárias para a assinatura, a criptografia MD5 pode ser usada para obter a assinatura. Depois, combine a assinatura e todos os parâmetros anteriores em uma string de formato xml e chame o endereço URL da interface:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Vamos falar sobre o último parâmetro no JS, PaySign: PaySign. O mesmo vale para o algoritmo de assinatura de pagamento, que combina os outros 5 parâmetros em JS em ordem, além de apikey, criptografia MD5, ok.
O algoritmo de assinatura é o mesmo, mas os valores dos parâmetros são diferentes. Aqui vai uma coisa a se notar. Ao pagar pela assinatura, são usados o número aleatório nonceStr e o timestamp de carimbo de tempo, e esses dois parâmetros são usados ao assinar
Se os valores desses dois parâmetros no JS forem iguais, eles são o mesmo número aleatório e o mesmo carimbo de tempo. Por quê? Embora a documentação não diga isso, pelo que entendo, assinaturas de pagamento são geradas por números aleatórios e carimbos de data,
Depois, ao pagar, envie o número aleatório, carimbo de tempo e assinatura de pagamento juntos, e quando o WeChat verificar, também será baseado no número aleatório e no carimbo de data no JS para gerar uma assinatura e compará-la com a assinatura de pagamento que você enviou.
Se você recuperar o novo número aleatório e o carimbo de data em js, a assinatura calculada será diferente da assinatura que você enviou, e um erro será reportado: assinatura falhada.

Isso é tudo para o nível do código, e claro, há alguns outros pontos a serem notados. Por exemplo, o parâmetro openid útil também precisa ser obtido chamando a interface, e se o diretório de autorização de pagamento está configurado corretamente.
Resumo da última frase: Olhe atentamente para o documento e, por fim, pergunte para outras pessoas, você pode encontrar grupos relacionados a pagamentos no WeChat, há muitos deuses nele, já tive um problema antes e lutei por 2 dias sem resolvê-lo (às vezes só olhar o documento não é suficiente),
Depois, ele adicionou com raiva 8 grupos de desenvolvimento no WeChat e finalmente saiu sob a orientação dos especialistas. Obrigado novamente. Programadores são um grupo de pessoas que adoram compartilhar, e ficam mais do que felizes em compartilhar o que conhecem. Então, quando você não entender, pergunte mais.






Anterior:Exemplo de função de mensagem de modelo push da interface C# WeChat
Próximo:Sinto bem o sistema de atendimento ao cliente das grandes empresas
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com