payment api (jsr 229)
DESCRIPTION
Trabalho de Payment API (JSR 229) da aula de Java2ME da especialização em Tecnologias de Desenvolvimento de Aplicações Móveis (TECDAM) do CESAR.Grupo:- JOSÉ ANDRÉ HENRIQUES- LUIZ TIAGO OLIVEIRA- RAFAEL ROCHA- RICARDO DAMASCENOTRANSCRIPT
![Page 1: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/1.jpg)
JOSÉ ANDRÉ HENRIQUESLUIZ TIAGO OLIVEIRA
RAFAEL ROCHARICARDO DAMASCENO
Mobile Payment APIJSR - 229
![Page 2: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/2.jpg)
Mobile Payment API
Roteiro1. Histórico e literatura relacionada2. Estado da Arte3. Escopo e Requisitos4. Arquitetura5. Comunicação6. Pacote7. Provisionamento de Dados8. Segurança9. Adapters10. Conclusão11. Bibliografia
![Page 3: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/3.jpg)
Histórico
01/04/2004 Draft inicialReleases (principais adds)
abril/2004 suporte a localização, Pay-Debug-DemoMode, capítulo de segurança, redefinição formato SMS, etcmaio/2004 novos métodos para TransactionRecordssetembro/2004 removeu métodos gets, mudou TransactionRecord de class para interface, registro na IANA, publicação do Draftnovembro/2004 atualizou UML, formato SMS livrejunho/2005 Draft final proposto
30/06/2005 release final
![Page 4: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/4.jpg)
Estado da Arte
Consolidado em países como Japão, Estados Unidos, FrançaMac Donald’s – JapãoMoneo - França
![Page 5: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/5.jpg)
Estado da Arte
MobiPay – EspanhaJoint Venture entre todas as operadoras móveis e 80% dos bancos
União de bancos e operadoras de telefonia celularpagamento de taxi e transporte urbanocinemasfaturasdoaçõesetc
![Page 6: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/6.jpg)
Estado da Arte
PayPass – MasterCard e CitiBank (imagem)uso em estações de metrô
Chiltern RailWays(trens): tíquetes através de celularesBancos
![Page 7: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/7.jpg)
Estado da Arte
BrasilMobility Pass:
gerenciamento de despesas de taxi em ambiente corporativosoutros serviços
Oi PagooCartão de crédito via telefone
M-Ticket Cliente Claro e Visa podem comprar entradas de cinema da rede Cinemark em São Paulo (transmissão do código de barras após pagamento) – usa PPSMS
![Page 8: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/8.jpg)
Mobile Payment API
Literatura RelacionadaEspecificação Java.LangEspecificação JVMJSR-30, JSR-68, JSR-118, JSR-228
Payment API Expert Group – PAPI-EGLíder da especificação – Jean Yves Bitterlich (Siemens)Outros representates: Sony, Symbiam, Nokya, T-Mobile, Aplix, Mtsushita Eletric, etc
![Page 9: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/9.jpg)
Escopo e Requisitos
EscopoDefinir uma API genérica para iniciativas de “PaymentTransaction” de maneira segura e transparente Definir uma sintaxe de descrição de dados de pagamento para suportar diferentes “Adapters”
![Page 10: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/10.jpg)
Escopo e Requisitos
EscopoPermitir que desenvolvedores construam aplicações com controle de produtos e serviços precificados e passíveis de pagamentoPortanto, inclui métodos para:
Requisitar transações de pagamentoRequisitar gerenciamento de preços para produtos e serviçosDisponibilizar serviços de pagamento móvel
![Page 11: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/11.jpg)
Escopo e Requisitos
RequisitosA Payment API é um pacote opcional que roda sob:
CLDCMIDP ou IMP
Não é uma especificação para Aplicações, mas para PaymentModule-PM e Payment Adapaters-PA.
implica que PM e PA podem adicionar outros requisitos fora do escopo dessa especificação• Ex: PPSMS usam JSR-120 e JSR-205
![Page 12: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/12.jpg)
Escopo e Requisitos
RequisitosMIDP x IMP
MIDP oferece interface com o usuárioIMP não oferece interface com o usuário
ObservaçõesNão determina método de pagamentoAPI extras dependem da forma de pagamento
Premium-Price SMS (PPSMS) JapãoVodafon e Cingular possuem SMS Center(SMSC)Wireless API
Tipos de comunicaçãoSMS – Short Message ServiceNFC – Near Field Communication
![Page 13: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/13.jpg)
Arquitetura
A figura mostra os componentes do lado do terminal em uma transação de pagamento
![Page 14: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/14.jpg)
ArquiteturaPanorama funcional e de componentes (EN)
![Page 15: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/15.jpg)
ArquiteturaPanorama funcional e de componentes (PT)
![Page 16: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/16.jpg)
Arquitetura
AtoresApplication: lógica do negocio, recursos da API, pode persistir dados
prover dados no arquivo JAR-Manifest que são injetados pelo comerciante em tempo de deploy
Payment Module: gerenciar um ou mais Adapters, interagir com o usuário final quando necessário, interage com o Adapter, faz a intermediação dos dados provisionados
Payment Adapter: implementa a lógica para processar um pagamento baseado nas requisições do Payment Module, suporta o envio do Payload (dados do pagamento), adota protocolo de comunicação
![Page 17: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/17.jpg)
Arquitetura
AtoresImplementer: desenvolvedor que implementa o módulo de pagamento e ou adaptador de pagamento, em conformidade com a JSR-229Payment Service Provider - PSP: provê informações ao comerciante, dependendo do tipo de pagamento também responde pela confirmação do pagamentoPrice Manager: fixa, atualiza e informa preços aos PSPApplication Provider/Merchant: Homologador e Provedor de aplicações baseada em PAPI
Tem relacionamento com o Price ManagerApplication Developer: Implementa os recursos da JSR-229
Tem relacionamento com o comerciante(merchant)
![Page 18: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/18.jpg)
Arquitetura
Relacionamento de ConfiançaUsuários finais confiam no módulo de pagamento e nos adaptadores quanto ao sigilo das suas informaçõesDesenvolvedores confiam nos provedores de aplicações e nos fabricantes quanto a não alteração das suas implementaçõesO Provedor de APP confia no gerenciador de preçosOs PSPs confiam nos fabricantes quanto aos terminais seguros e compatíveisOs fabricantes confiam nas implementações dos adaptadores
![Page 19: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/19.jpg)
Arquitetura
ResponsabilidadesApplication: gerenciar seu estado internoPayment Module:
responsabilidade = funcionalidades providas e não acessíveis diretamente pela APPProver mapeamento JAR-Manifest Adapter• dados de um APP não devem ser acessados por outra APPSelecionar Métodos• oferecer ao usuário uma forma de selecionar o método desejado• em MIDP isso é simples• em IMP não existe mais de um métodoHistórico das transaçõesInteração de apresentação de erros
![Page 20: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/20.jpg)
Arquitetura
ResponsabilidadesPayment Module: (continuação...)
Atualização de preços e dados
![Page 21: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/21.jpg)
Arquitetura
ResponsabilidadesPayment Adapter:
Encaminhar carga de pagamentos• adota uma carga de até 132 bytes
Prover autenticação de pagamentoInteração de apresentação de erros
![Page 22: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/22.jpg)
Pacote
javax.microedition.payment.
![Page 23: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/23.jpg)
PacoteDesign
![Page 24: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/24.jpg)
Pacote
– Interface TransactionListener
• recebe notificação de registros de transações geradas pelo PM e por conseguinte processadas
• pressupõe que o PM esteja apto a processar uma transação– dados provisionados corretamente
• Método processed() recebe um parâmetro– Registro que mantém o estado da transação
» SUCCESSFUL, FAILED, REJECTED– O registro é identificado pelo ID retornado pelo método
PROCESS() que disparou o início da transação– O registro contém:
» featureID» Estado final» TimeStamp
![Page 25: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/25.jpg)
Mobile Payment API
Interface TransactionRecord• Cada transação é representada por um objeto que
implementa esta interface
![Page 26: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/26.jpg)
Pacote
Classe TransactionModule - TM• Representa a ligação entre a APP e o PM• Cada chamada do método PROCESS() retorna imediatamente
(assíncrono)
![Page 27: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/27.jpg)
Pacote
• Construtor – instancia um objeto TM e verifica se as informações provisionadas estão corretas– parâmetro – o próprio MIDLet ou IMLet
• Métodos:– SetListener() define o listener para eventos assíncronos – Process() tem duas assinaturas
• inicia uma transação para um recurso identificado pelo featuredID configurando no JAR/JAD
• pode gerar exceções• se iniciado, o PM notificará a APP através do listener
quando a transação for encerrada• o listener tem que ser definido antes de chamar esse
método
![Page 28: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/28.jpg)
Pacote
Membros da Classe TransactionModule (continuação..)
– Process() tem duas assinaturas• ao chamar esse método o PM deve interagir com o usuário
apresentando os dados das features bem como datas do provisionamento
• deve pedir confirmação e seleção de método(adapter)• Parâmetros:
– FeatureID, featureTitle, featureDescription– payload – vetor de bytes contendo dados – ex: code activation
de um jogo (pode gerar TransactionPayloadException)• Retorno - ID positivo e único• Exceções
– TransactionModuleException– TransactionListenerException– TransactionFeatureException
![Page 29: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/29.jpg)
Pacote
Membros da Classe TransactionModule (continuação..)
– getPastTransactions(int max) • retorna um vetor de objetos TransactionRecord• o tamanho do vetor é limitado pelo parâmetro max• ordena em ordem crescente• max = 0 nada é retornado
– deliverMissedTransactions() • solicita ao PM para gerar todas as transações perdidas na
interface listener PROCESSED()• não gera duplicida quando chamado mais de uma vez
![Page 30: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/30.jpg)
Provisionamento de dados
Dados são entregues como parte do JAR-ManifestOutros dados podem ser providos pelo JADO MIDLet deve proteger o provisionamento através de assinatura do JAR
para facilitar o desenvolvimento o modo DEBUG dispensa a assinatura
![Page 31: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/31.jpg)
Provisionamento de dados
TagMandatório /
Opcional DescriçãoPay-Version M Versão do JAR-Manifest
Pay-Adapters M Adapters registrados. Pode ser uma lista separada por vírgula
Pay-Debug-DemoMode O Valor boleano e se true habilita o modo debug
Pay-Debug- (outros) O Habilita debug específico para ser simular a falha
Arquivo JAD e tags
JAD
![Page 32: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/32.jpg)
Provisionamento de dados
TagMandatório /
Opcional DescriçãoPay-Version M Versão do JAR-Manifest
Pay-Update-Stamp M Data do último provisionamento
Pay-Update-URL M URL que aponta para a última versão dos dados de provisionamento
Pay-Cache O Especifica se vai usar cache ou não. Valores possíveis:
[yes|no|<Expiration-Date>].Pay-Providers M Lista de provedores suportados
Pay-feature-<n> M Representa a feature configurada para o adapter - <n> é um número sequencialsem lacunas e começando de ZERO
Arquivo JAR-Manifest e tags
JAR-Manifest
![Page 33: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/33.jpg)
Provisionamento de dados
TagMandatório /
Opcional DescriçãoPay-Version M Versão do JAR-Manifest
Pay-Update-Stamp M Data do último provisionamento
Pay-Update-URL M URL que aponta para a última versão dos dados de provisionamento
Pay-Cache O Especifica se vai usar cache ou não. Valores possíveis:
[yes|no|<Expiration-Date>].Pay-Providers M Lista de provedores suportados
Pay-feature-<n> M Representa a feature configurada para o adapter - <n> é um número sequencialsem lacunas e começando de ZERO
Arquivo JAR-Manifest e tags
JAR-Manifest
![Page 34: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/34.jpg)
Provisionamento de dados
Arquivo JAD - exemplo
[…]Pay-Version: 1.0Pay-Adapters: PPSMSPay-Debug-DemoMode: yesPay-Debug-FailInitialize: noPay-Debug-FailIO: noPay-Debug-MissedTransactions: noPay-Debug-RandomTests: noPay-Debug-AutoRequestMode: accept
![Page 35: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/35.jpg)
Provisionamento de dados
Arquivo JAR-Manifest - exemplo
[…]Pay-Version: 1.0Pay-Update-Stamp: 2004-11-15 02:00+01:00Pay-Update-URL: http://<update-site>/thisgame.manifest.jppPay-Providers: TestPay-Feature-0: 0Pay-Test-Info: PPSMS, EUR, 001, 01Pay-Test-Tag-0: 2.40, 4321, 0x123456789abcdef0, 1
![Page 36: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/36.jpg)
Provisionamento de dados
Arquivo JAD – exemploUma aplicação cujo provedor suporta SMS e X-Test(adapter proprietário) proverá os seguintes arquivos JAD e JAR respectivamente
JAD
[…]Pay-Version: 1.0Pay-Adapters: PPSMS, X-TESTMIDlet-Permissions: javax.microedition.payment.process.jppMIDlet-Certificate-<n>-<m>: <base64 encoding of a certificate>MIDlet-Jar-RSA-SHA1: <base64 encoded Jar signature>
![Page 37: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/37.jpg)
Provisionamento de dados
Arquivo JAR-Manifest - exemplo
[…]Pay-Version: 1.0Pay-Update-Stamp: 2004-11-15 02:00+01:00Pay-Providers: SMS1, Test1Card, Test2CardPay-Update-URL: http://<update-site>/thisgame.manifest.jppPay-Cache: noPay-Feature-0: 0Pay-Feature-1: 0Pay-Feature-2: 1Pay-SMS1-Info: PPSMS, EUR, 928, 99Pay-SMS1-Tag-0: 1.20, 9990000, 0x0cba98765400Pay-SMS1-Tag-1: 2.50, 9990000, 0x0cba98765401, 2Pay-Test1Card-Info: X-TEST8, EUR, c4d21, soap://<soap-site-1>/Pay-Test1Card-Tag-0: 1.21Pay-Test1Card-Tag-1: 2.46Pay-Test2Card-Info: X-TEST8, USD, 8DiU, soap://<soap-site-2>/jsr229
![Page 38: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/38.jpg)
Segurança
No contexto da JSR-229, segurança está relacionada com a garantia do provisionamento de dados, da aplicação e seu estado contra modificações não autorizadas
Trata-se também de garantir que o proprietário do terminal tenha conhecimento de todas as transações realizadas no mesmo
A JSR-229 foi definida e projetada para tirar vantagem dos recursos de segurança e mecanismos de controle previstos pela MIDP2.0.
![Page 39: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/39.jpg)
Segurança
RequisitosResistência a adulteração de:
provisionamento de dados de pagamentosdo estado da informação de pagamentosdo código da aplicação de pagamentos
Proteger :o proprietário do terminal contra sobre-pagamentoo PSP contra acesso fraudulentoo Provedor de Aplicações contra acesso fraudulento
![Page 40: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/40.jpg)
Segurança
Permission NameResistência a adulteração de:
provisionamento de dados de pagamentosdo estado da informação de pagamentosdo código da aplicação de pagamentos
Proteger :o proprietário do terminal contra sobre-pagamentoo PSP contra acesso fraudulentoo Provedor de Aplicações contra acesso fraudulento
![Page 41: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/41.jpg)
Adapters
A JSR faz uma definição do Premium Priced SMS Adapter e faz recomendações de nomeação para novos Adapters
Mostra como o PPSMS devem ser implementados
![Page 42: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/42.jpg)
Adapters
Modelo de pagamento PPSMSBaseado
no número Premium Priced SMS pré-definido pela operadoraou no valor inserido no corpo da mensagem
Essa especificação tanto é válida para SMS-MO (mobileoriginated) como SMS-MT(mobile terminated)
![Page 43: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/43.jpg)
Adapters
Especificação do Provisionamento de DadosADAPTER NAMESPACE - PPSMS
Tag DescriçãoPay-<ProviderTitle>-info Descreve infromações no modelo de provider
<info> - Moeda, MCC, MNCPay-SMS1-Info: PPSMS, EUR, 928, 99
Pay-<ProviderTitle>-tag-<m> The format is <Price>, <PremiumPriced-SMSNumber,<Prefix>,[,NbSMS]Prefix – um vetor de byte que antecede o SMS,uso livreEx:Pay-SMS1-Tag-1: 2.80, 9990000, 0x0cba98765401, 2
![Page 44: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/44.jpg)
Adapters
LimitaçãoFormato 8-bit SMS (máx 140 caracteres)Confiabilidade do Adapter (não é 100%)
![Page 45: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/45.jpg)
Adapters
Exemplo arquivo JAR-Manifest PPSMS
![Page 46: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/46.jpg)
Adapters
Exemplo arquivo JAR-ManifestPPSMS
![Page 47: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/47.jpg)
Bibliografia
http://jcp.org/en/jsr/detail?id=229http://wiki.forum.nokia.com/index.php/API_de_pagamento:_JSR_229http://www.devmedia.com.br/post-10331-Artigo-WebMobile-19-Construindo-Mobile-Payment-com-Java-ME.htmlhttp://download.oracle.com/javame/dev-tools/wtk-cldc-2.5.2-01/UserGuide-html/payment.htmlhttp://innovator.samsungmobile.com/cms/cnts/knowledge.detail.view.do?platformId=3&cntsId=7160
![Page 48: Payment API (JSR 229)](https://reader031.vdocuments.net/reader031/viewer/2022012315/5573868dd8b42a9f288b488c/html5/thumbnails/48.jpg)
Iniciativas da Industria