Penerangan dokumentasi


Perjanjian Perniagaan

Akses aplikasi tiga pihak hanya boleh menggunakan sistem akaun yang disediakan oleh Alibaba untuk log masuk dan kebenaran, dan fungsi pendaftaran akaun bebas tidak boleh disediakan.

Perjanjian Komunikasi

Pelayan pembayaran menyokong dua mod komunikasi iaitu mod http (https) dan mod TOP.

Kaedah komunikasi Https: sesuai untuk panggilan balik pelayan hiburan digital selepas pembayaran berjaya Gunakan kaedah komunikasi https dan gunakan penyulitan dan penyahsulitan kunci awam dan persendirian. Dalam kaedah CP ini, anda perlu terlebih dahulu mengisi maklumat kunci awam RSA pembangun pada Platform Terbuka TV Hiburan Digital (http://open.aliplay.com/). Hiburan Digital menggunakan kunci awam yang diisi oleh CP untuk menandatangani Selepas pelayan CP menerima panggilan balik, ia menggunakan kunci peribadi untuk menyahsulitkan kandungan asal panggilan balik dalam format json, dan definisi medan khusus merujuk kepada Rangkaian Antara Muka Pembayaran - Selepas pembayaran pelayan berjaya Pemberitahuan panggilan balik bab. Content encryptedData berdasarkan rentetan json kandungan asal dan kunci awam RSA akan digunakan dalam medan data parameter http untuk CP menyahsulit menggunakan kaedah komunikasi TOP RSA: sesuai untuk senario di mana CP secara aktif memanggil perkhidmatan pembayaran (seperti sebagai Semak status pesanan, dsb.) Melalui kaedah komunikasi TOP, dalam kaedah ini CP perlu menggunakan kunci aplikasi dan rahsia aplikasi yang dikeluarkan oleh Platform Terbuka TV Hiburan Digital (http://open.aliplay.com/) semasa mendaftar masuk (maklumat ini boleh diuruskan pada aplikasi AliTV Open Platform View di halaman), sila rujuk //open.taobao.com/doc2/detail.htm?

Spesifikasi Keselamatan

Untuk mengelakkan risiko keselamatan yang tidak perlu yang disebabkan oleh penyalahgunaan antara muka (pelayan) yang dipersetujui oleh kedua-dua pihak, rakan kongsi akses perlu mematuhi keperluan berikut dan melaksanakan kawalan keselamatan. Jika ada sebarang pertanyaan, boleh sertai group Wangwang 621730614 untuk konsultasi.

1. Spesifikasi keselamatan antara muka 1) Antara muka dibuka dalam mod HTTP.

2) Antara muka reka bentuk perlu mempunyai pengesahan identiti, membenarkan sumber, dan hanya membenarkan akses IP yang dibenarkan

3) Semua panggilan antara muka perlu dilog untuk merekodkan pemindahan kunci dan menyimpan kunci yang dipersetujui oleh kedua-dua pihak. yang sepatutnya tidak besar Skop penghantaran e-mel harus dilakukan secara pembangun-ke-pembangun. Kunci perlu disimpan dengan betul untuk mengelakkan risiko keselamatan yang disebabkan oleh kebocoran kunci.

2 Penghantaran dan penyimpanan kunci dan rahsia

Maklumat sensitif yang dipegang oleh rakan kongsi akses tidak boleh dihantar secara besar-besaran melalui e-mel, tetapi harus dihantar dari orang ke orang oleh pembangun. Kunci persendirian dan rahsia perlu disimpan dengan betul untuk mengelakkan risiko keselamatan yang disebabkan oleh kebocoran kunci persendirian.

Contoh teknikal

    1

    RSA ialah algoritma asimetri yang boleh digunakan untuk tandatangan, iaitu kunci tandatangan (kunci peribadi) dan kunci pengesahan (kunci awam) adalah berbeza Kunci persendirian digunakan untuk tandatangan dan kunci awam digunakan untuk pengesahan. Tandatangan yang menggunakan algoritma ini bukan sahaja boleh menghalang gangguan data, tetapi juga menghalang penolakan, kerana kunci peribadi hanya diketahui oleh penandatangan. Anda boleh menggunakan alat penjanaan kunci Openssl RSA untuk menjana satu set kunci awam dan peribadi RSA.

    Arahan penjanaan kunci RSA:

    Jana kunci peribadi RSA

     openssl genrsa -out rsa_private_key.pem 1024


    Jana kunci awam RSA

     openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

    Tukar kunci persendirian RSA kepada format PKCS8
    🎜

    Fail kunci yang dijana oleh alat ini mengandungi beberapa ulasan dan pemulangan pengangkutan, yang perlu dialih keluar untuk membentuk rentetan aksara!

    2 contoh algoritma tandatangan (tanda) RSA

    Kod rujukan Java

    .

    /**

            * Algoritma tandatangan RSA

           * @param privateKey

                                                                                                          

    *

    @lempar Pengecualian

    */

    public

    static Sign String (String PrivateKey, String Content, String Charset) Throws

    Exception {

    pkcs8encodedKeyspec Pripkcs8

    (privateKey) ); KeyFactory keyf = KeyFactory.getInstance("RSA"); PrivateKey priKey = keyf.generatePrivate(priPKCS8);

    java.security. java.security.Signature getInstance("SHA1WithRSA"); Signature.initSign(priKey);

    signature.update(content.getBytes(charset) );

    bait

    [] ditandatangani =                                                                                                                                                                                                                                                                                    Kembali

    Base64. "rsa_private_key.pem"); //Tidak perlu menukar kepada PKCS8

    $res = openssl_get_privatekey($privkey);

    openssl_sign($data, $sign, $res); $sign = base64_encode($sign);

    3 (versi java)

    pakej testRsa;import java.io .ByteArrayInputStream;


    import java.io.ByteArrayOutputStream;

    import java.io ;InputStream.amio codingException;

    import java.security.InvalidKeyException;

    import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;

    import java.security.SignatureException;

    import java$privkey = file_get_contents("rsa_private_key.pem"); //无需转PKCS8

    $res = openssl_get_privatekey($privkey);

    openssl_sign($data, $sign, $res);

    $sign = base64_encode($sign);

    import java.security java.security .spec.PKCS8EncodedKeySpec;

    import javax.crypto.Cipher;

    import org.apache.commons.codec.binary.Base64;

    /** *

    * @pengarang zhiyong.xiongzy

    *

    */

    ujian kelas awam RSA. zgK2qEReHUCzda5Hj+GaR8dmYz3v4UMozNeXhx7iqI7EK4Myp/qjCV2ROgh2LaL1ycugacTVx6dSfFvIOcczyhs8D4BUiJlSMsTWPVCSKsPAgMBAAECgYEAkL5DHbKGvIKL5DHbKGvIGKvL5DHbKgYEAkL5DHKGb9Kb3Kb9Kb3Kb9Kb9Db9Kb9Kb9b3Kb9Kb9b9bdb lAl93tni8ZnqEdGNFap91YcFz2BF7mQ3sHQFMpn2nJDtzj0tPsCKtNLHmpOi0ctAxedhzip+rOT6obNK+POL6czMWGJOaW8zLefxftgZWkT+eZactn+GiwQDHIxcAME 7pH92PTv4zFb1msB0H65Im2zQ+8JrlqEH/7AqqMIxkPjIMC/vJLpkZG4TYMCYXjd4rx7AkEAzoiLGwUsXDApbDJJxxgYV6y50H/oJm6ooJUIHoCw8 ezZ4kmkeWDPvQ35fQJACBM8zqieZqw9NhYs4QSZ0zw/m540eNxc1s5FkRhBoVdQa2w0nZ+8 1d+3Ng3dH4JtQs+Lp/WIXAqJfIZXPECoBgKiFuDu98Bg zUnCtwXG+h8bbsHkZN+btGMpgM5libC6Z80LIoKm14ZRpWQffhQJBAJyxWEnzZA9dvqEhj6I/BTPJgvzc/boGzZ2lKQlN8j57MDkZHryoWtoKWHjB3HpI3oWtoKWHjB3HpIo ;

          utama kekosongan statik awam(Rentetan[] args) {

                 Kandungan rentetan = "c/BOhNHjhvCXvOenIyNqmr0FI1M3cYt/BR/WEoMgoi2OsxLnHvg47ZFyg Arsw35jk43reMFUyemTLnZ4Xw/DXT5xxPzHy4NWLt2/K0mqA2e5PiShf8RX9EdLnoIYZPXKe3Ldnw0ha3RZtP4X2tBsHqU=";

     Str     ;    cuba {

            //解密

                  jsonStr = nyahsulit(kandungan, prikey, "UTF-8");

                 System.out.println(jsonStr);

                    /                              System.out.println(sign(prikey, content, "UTF -8"));

           } tangkapan (Pengecualian e) {

                  e.printStackTrace();

           }

                                                                         

           /**

                                                                                                        */

          tanda String statik awam (String privateKey, kandungan String, String charset) melontar Exception {

                 PKCS8EncodedKeySpec priPKCS8   = PKCS8EncodedKeySpec baharu           KeyFactory keyf = KeyFactory.getInstance("RSA");

    PrivateKey priKey = keyf.generatePrivate(priPKCS8);

                  

                 java.security.Tandatangan tandatangan = java.security.Signature.getInstance("SHA "); ature.initSign(priKey);

                 signature.update(kandungan .getBytes(charset) );

                 bait [] ditandatangani = signature.sign();

                 kembali Base64.encodeBase64String(ditandatangani);             nyahsulit String statik awam (Kandungan rentetan, Kunci_peribadi rentetan, Input_charset rentetan ) membuang Exception {

                 

                  

                 PrivateKey prikey = getPrivateKey(private_key.                                                                                                                                             ("RSA");

                 cipher.init(Cipher.DECRYPT_MODE, prikey);

                 InputStream in = new ByteArrayInputStream(Base64.decodeBase64(content.getBytes()));

                  ByteArrayOutputStream writer = new ByteArrayOutputStream();

     /                    writer小最多是128,将需要解密的内容,按128位拆开解密

                 bait[] buf = bait baharu[128];

                 int bufl;

                 sementara ((baca -f) = dalam) {(bu fl = 1)

                        bait [] blok = batal;

                         jika (buf.length == bufl) {

                                                                                                      } lain {

                               blok = bait baharu [bufl];

                                                                                                                                                                               } i < bufl; i++) {

                                      blok [i] = buf [i];

                                                                                            }

                        writer.write(cipher.doFinal(blok));

                 }

                                                                                                                                                                           .toByteArray(), input_charset);

          }

     

          PrivateKey statik awam getPrivateKey (Kunci rentetan) membuang Exception {

                                                                         keyBytes = Base64.decodeBase64(key.getBytes());

    //使用PKCS8  

                 PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);

                 y. Factory KeyFactory           kembali privateKey;

          }

     

    }

    .


    <?php

    $privkey=<< EOT gtxRDq10yHGwXs+RNOGxaglj0F+9kRQ7l5

    BEkN/HgPg90uWT6bNp5Qf4K3qJ WfY6FmWoNDKYyIYjDacAVheAC/Idg/0nKgPg90uWT6bNp5Qf4K3qJ Kc2PAgMBAAECgYEAjIVAqYdVyav5HZABmQ46oMGm

    Xgshiqom3uRslw0eowu5Mwv38aCYOO9t5RBVYOrcUh3HcNK6vgz6SAhQylK/MKk8

    hynSBnawh5 / iZhY/


    6WJsC0Fphl2yCmpxr0Gd/ HZL/+GJOtxwU

    kvvVplEmOKGHEcUSoLgxnBYS35S3qgxH4X989coyHV6EMNUXd5 hO1vz3RnIVRvrx

    sYsuGwJAcV989coyHV6EMNUXd5 hO1vz3RnIVRvrx

    sYsuGwJAcV1ypKOVrJPcun fq+rK0sBNG51d

    oz3F3LyNVI/DmWAr9DLGpIJa97I5JQJBALcqTmAKM7m/6J9 Gb5hi4sMYQvBKZwfX

    p/l3Df7gogcz2MPmqtzyb6MPmqcky8 e0CQCNv7Th8

    jnlWQ21UVBL1Lr3KcMM/0RJ0hiVGH46Gp93h9c2zs AgHQ01HLi1BeRcM1tZZNPIh

    GqEuuIa /iXjzNNc =

    -----TAMATKAN KUNCI PERSENDIRIAN-----

    EOT;

    $res = openssl_get_privatekey($privkey);

    //$content = "ycoYI7SXtj9GWHHNSxtj9GWHHNS27b7b0x.JFkv TGdT5VF+NWjBKpPVfyv5NRUYMNrHsHSeQgd4AWO6y3e5HWGmhCa92YdAzriSqoU2fAud4zJQtu1lKQP+iM5sC21GhSHlhm + 2q443kKjuUX2Fl6wv4 + H2onXBmbw2KHbz + knQW9AhjVoamYhy2 6Z11ihm771dFa+4w2taeAlhOEZHcE1w8uBXZPMlxlkT66OhvQXZRf88g==";_

    ]

    $kandungan = base64_decode($kandungan);

    $i = 0 ;

    $hasil = "" ; )AlitvSDKLib包含了SD K用到的lib和res

    2)AlitvSDKDemo引用上述Lib工程

     

    截图配置,把SDK引入您的工程

    1)  在项目属性中配置

    .

    2.jpg