2016-10-27 6 views
0

Я разрабатываю Wap приложение с Laravel и OmniPay-Alipay (https://github.com/lokielse/omnipay-alipay/wiki/Aop-WAP-Gateway) Я следовал инструкциям:Как обеспечить PrivateKey для OmniPay

$gateway = Omnipay::create('Alipay_AopWap'); 
$gateway->setAppId('201610100207.....'); 
$gateway->setPrivateKey('MIICXAIBAAKBgQDH8RiuZfAi1Lm+81GTopr9Ttg/NL6CJ4vtQcKkCkj0DCdL4DVo6V2mBFp9aWsC1KmbphEvOCBotwfdBnEXeSSpGaGi8DNR95za+C027YluN6uxrSRQh3Enk16oEf4QIzezn91+aZgS2innm6RqDOkx/7qWQVAeQPtrPUOQdAJgQwIDAQABAoGAL9x+1ACC41OYwyTrujOKdmiRS1AM6osc68Z6GVp87C6cmYUqQ9rZGAyivLKncx4FG8U9B9ifqXFm6HnKSJwvMf6jKeMM5sn+ez3Ixc3MuaQyyPkAOeU/jdOYAtFHU6slbZTSaofgGaJ0CZCSkdQ+rMaAoJm3EcOjmAVpMvn0IgECQQD5gBJn4Tz0twIIS+VukJ0tQA/BpvuJU/CoHj/28EH6X1oHGvz4Se7Hdgx+TDY99akq24StyVwqLgp3OmuGYp7jAkEAzSaESlTLI/huFMJSCp1QLVWdz6nubMsNF82Na7I2S2v8OElerhi5HVCTXq4xWO4I8V9o34JktGn5GpwAdFyXIQJAWxBTp3aeOPNS2pRY+THvLETle1jnFgh9Hd9smUS30BpdUZqYGkdhz4tWpAJNCfBP/kSA+K015m9HgpzgAfyc4QJAfGRQbqm/iw4F4Xx6Nolwpix1xgcp1LnCNJ6kk5q5pT3S72Y9jJ7dD9NdqFlC/sNGlOTfODdeTK69Js9UzzmdQQJBAI99imtOqFPssADFHQg+w7EYH3tdX+YN7guiOaurb2r2P4a3S6DOq5GtFWG/ffM10q7gbXVS1KOWOFiMUCF/Ac0='); 
//$gateway->setPrivateKey('-----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQDH8RiuZfAi1Lm+81GTopr9Ttg/NL6CJ4vtQcKkCkj0DCdL4DVo6V2mBFp9aWsC1KmbphEvOCBotwfdBnEXeSSpGaGi8DNR95za+C027YluN6uxrSRQh3Enk16oEf4QIzezn91+aZgS2innm6RqDOkx/7qWQVAeQPtrPUOQdAJgQwIDAQABAoGAL9x+1ACC41OYwyTrujOKdmiRS1AM6osc68Z6GVp87C6cmYUqQ9rZGAyivLKncx4FG8U9B9ifqXFm6HnKSJwvMf6jKeMM5sn+ez3Ixc3MuaQyyPkAOeU/jdOYAtFHU6slbZTSaofgGaJ0CZCSkdQ+rMaAoJm3EcOjmAVpMvn0IgECQQD5gBJn4Tz0twIIS+VukJ0tQA/BpvuJU/CoHj/28EH6X1oHGvz4Se7Hdgx+TDY99akq24StyVwqLgp3OmuGYp7jAkEAzSaESlTLI/huFMJSCp1QLVWdz6nubMsNF82Na7I2S2v8OElerhi5HVCTXq4xWO4I8V9o34JktGn5GpwAdFyXIQJAWxBTp3aeOPNS2pRY+THvLETle1jnFgh9Hd9smUS30BpdUZqYGkdhz4tWpAJNCfBP/kSA+K015m9HgpzgAfyc4QJAfGRQbqm/iw4F4Xx6Nolwpix1xgcp1LnCNJ6kk5q5pT3S72Y9jJ7dD9NdqFlC/sNGlOTfODdeTK69Js9UzzmdQQJBAI99imtOqFPssADFHQg+w7EYH3tdX+YN7guiOaurb2r2P4a3S6DOq5GtFWG/ffM10q7gbXVS1KOWOFiMUCF/Ac0=-----END RSA PRIVATE KEY-----'); 

, но я продолжал получать сообщ об ошибке:

openssl_sign (): указанный ключевой параметр не может быть принудительно введен в закрытый ключ.

Я пробовал разные форматы, но напрасно. Как правильно установить секретный ключ? Заранее спасибо.

ответ

0

По моему чтению коды, то private_key параметр передается функция() openssl_pkey_get_private РНРА, то это:

http://php.net/manual/en/function.openssl-pkey-get-private.php

Глядя на ваш код выше, кажется, что вам нужно использовать что-то вроде линии, которые вы закомментированы:

$gateway->setPrivateKey('-----BEGIN RSA PRIVATE KEY-----MIICXAI... 

однако каждая строка файла закрытого ключа должен быть прекращена с новой строкой (\ п) характером.

Используйте OpenSSL для создания файла закрытого ключа в формате PEM, а затем прочитайте это при использовании file_get_contents().

+0

Не забудьте использовать двойные кавычки при вводе символов новой строки: '' line1 \ nline2 \ nline3 "' – Jason

+1

Важно отметить, что файлы, закодированные в PEM, неудобны в отношении форматирования, включая линейные каналы. Они должны использовать символ подачи строки Unix \ n, а не последовательность Windows \ r \ n. Вот почему я сказал: «Используйте OpenSSL для создания файла закрытого ключа в формате PEM», потому что таким образом вы знаете, что закрытый ключ будет иметь правильный формат и правильные символы окончания строки. Внедрение PEM-файла в виде строки в коде не является идеальным решением. – delatbabel