九鼎 - PHP Online
Form of PHP Sandbox
*** This page was generated with the meta tag "noindex, nofollow". This happened because you selected this option before saving or the system detected it as spam. This means that this page will never get into the search engines and the search bot will not crawl it. There is nothing to worry about, you can still share it with anyone.
Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php
in the places where the PHP script should be executed.
Result of php executing
Full code of 九鼎.php
- <?php
- //请求格式
- $data = [
- 'merId' => '20200676', //商户号
- 'orderId' => 'to000000001', //订单号,值允许英文数字
- 'orderAmt' => '123', //订单金额,单位元保留两位小数
- 'channel' => 'bank', //支付通道编码
- 'desc' => 'payment', //简单描述,只允许英文数字 最大64
- 'ip' => '150.242.158.33',
- 'bankcode' => 'CCB',
- 'notifyUrl' => "https://httpbin.org/post", //异步返回地址
- 'returnUrl' => "https://httpbin.org/post", //同步返回地址
- 'nonceStr' => "43121113432" //随机字符串不超过32位
- ];
- $privateKey = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCCNRPik6EqgRBxaTqkWOkkGLorW3N1vEc7NVouSqgGkk3LfKfMjHOFgg28k939GAIJedIn3npBLa7UuCgptAn42nfzxCJSbOShKRb7age8Fn+W3vBLH+u/dyaDttDcP3yTaHRu9rtRO7STJQ81R768lt2anjXtJ2esYc0QeCfBKEtIT1XYpzyU5yFF0yxkc6sggysZpbzKlG+ckzu1Z3Y/DagMNW9rw3EPD4OosE0I9t4vB0skaNh7BOX7SIzG9nvL9xuND7lYxTFJJMHiYwF9uCUY27Oa5ilS0qONPQK9MsS5Hgd9ZzOw2CZ450A3B3rRXK6DdeEiM1KacWvyVGvxAgMBAAECggEAHI7Tq7BBevcPyjAQQpeVmuspefT23+3Jmbzb6KdLLxXLpkPS8dQkSjX6GVA9MhOf7sAfTctH+R+x5sn1VSA9x6zy/i4YcQedJZPDjKT2yVQN6+M9xNxdcoMJmX3xVT0/b31LfEL1Vp3HvzYznbX8qZRVSmJE5Zzs6iwRM/mGjqCdg063g3O1nbmP6VZWSypXsF5iwRtp/EYGw5H2wO8bFBkkO2vThhN8xytjNpeVfda8kRnKwqiI2WTVk5wxLfB7QCJyNX5JgepM4Hg1mE2LF9RlsoJBzHQeBcgAjNhCCYt14yYFY18J7fT1t/dhIUHAj7M1QsG8gzYOcsJSVrr72QKBgQDEqG9mY5K/zB65wHKqEzjPcT8bxsRKUdQsMFECtAWevxdFM2UPeSU/CkPDIwef4VgNmRAfYqz6RpkXUIPPsRKSDA4vaJkbL9A6NHUaSo5awjzQ4mth4n9xgSSyDJfZC72sj9vdgW85TwldUJe7lwwOECfozhNIC7I3BuTOMzTGfwKBgQCpf2vDrXHK34XfeQMxCqfW+FtDlk5abw/tMcIFYE/IRMs+nItKgZ0ckFoCz6CNtnO1IDMoQgyXZMxtPSJ53lRO5ivGWdAl+ZX9DR2KcmjXON9t4OFxRFFNUUT3OORxk93Bc5lH2DLewklArmZd0tTjKje2LcxUrk5bADY37R71jwKBgQCGe6zatwM22A629i0zsztpWMdQZmf7buQKZ+wuTg991K3EK/ZTU4QuDQXz3vOq2P5PJjoJTICAEmFEuVG6aRwK9eWJdB0no1XhR9hA53VcCXJvYjcO1EZUx3zhqYz553aJGEPBwW7fIPaFcsSgixW6VEAGi05SOXVg/fzgKdJQXwKBgB/jkzjLZv9OMneq4sjVQmKVc0Yx/yfQgWSU2fX8+sWo+7wZ47Lu08pN9kFVItXGn9pR5o4KbygElNlwiQ34oE//yfiVaS3b2TY0w3wKrmLfllmr135h5hHv2lPQ5lngAfalcw8rQ9bZIsMCjMvWIKtkg/rIfwrniGJildDL0elNAoGAWfbqHIoQdWTma/GjEfcStDwecTAD5dL6N/IyfrR9zomUriA5Y9x0XfT/ku/apoVXcBpbCCryyYuLRKIJTbo4B2JCMXuTRwBTyF3mYEAtobFidWg8OzFqI3hzYbXuj4XjMepCk4Ga5mtJ1hoO14c8tSIpdK6OV2RuMnBlOKTf4Qg=';
- $md5Key = 'rUyqobxtSQsVIdjCaDPGmOTkLcKAulfM';
- class Rsa
- {
- public $publicKey = '';
- public $privateKey = '';
- private $_privKey;
- /**
- * * private key
- */
- private $_pubKey;
- /**
- * * public key
- */
- private $_keyPath;
- /**
- * * the keys saving path
- */
- /**
- * * the construtor,the param $path is the keys saving path
- * @param string $publicKey 公钥
- * @param string $privateKey 私钥
- */
- public function __construct($publicKey = null, $privateKey = null)
- {
- $this->setKey($publicKey, $privateKey);
- }
- /**
- * 设置公钥和私钥
- * @param string $publicKey 公钥
- * @param string $privateKey 私钥
- */
- public function setKey($publicKey = null, $privateKey = null)
- {
- if (!is_null($publicKey)) {
- $this->publicKey = $publicKey;
- }
- if (!is_null($privateKey)) {
- $this->privateKey = $privateKey;
- }
- }
- /**
- * * setup the private key
- */
- private function setupPrivKey()
- {
- if (is_resource($this->_privKey)) {
- return true;
- }
- $pem = chunk_split($this->privateKey, 64, "\n");
- $pem = "-----BEGIN PRIVATE KEY-----\n" . $pem . "-----END PRIVATE KEY-----\n";
- $this->_privKey = openssl_pkey_get_private($pem);
- return true;
- }
- /**
- * * setup the public key
- */
- private function setupPubKey()
- {
- if (is_resource($this->_pubKey)) {
- return true;
- }
- $pem = chunk_split($this->publicKey, 64, "\n");
- $pem = "-----BEGIN PUBLIC KEY-----\n" . $pem . "-----END PUBLIC KEY-----\n";
- $this->_pubKey = openssl_pkey_get_public($pem);
- return true;
- }
- /**
- * 构造签名
- * @param string $dataString 被签名数据
- * @return string
- */
- public function sign($dataString)
- {
- $this->setupPrivKey();
- $signature = false;
- openssl_sign($dataString, $signature, $this->_privKey,OPENSSL_ALGO_SHA256);
- return base64_encode($signature);
- }
- /**
- * 验证签名
- * @param string $dataString 被签名数据
- * @param string $signString 已经签名的字符串
- * @return number 1签名正确 0签名错误
- */
- public function verify($dataString, $signString)
- {
- $this->setupPubKey();
- $signature = base64_decode($signString);
- $flg = openssl_verify($dataString, $signature, $this->_pubKey,OPENSSL_ALGO_SHA256);
- return $flg;
- }
- public function __destruct()
- {
- is_resource($this->_privKey) && @openssl_free_key($this->_privKey);
- is_resource($this->_pubKey) && @openssl_free_key($this->_pubKey);
- }
- }
- function sign($data,$md5Key,$privateKey){
- ksort($data);
- reset($data);
- $arg = '';
- foreach ($data as $key => $val) {
- //空值不参与签名
- if ($val == '' || $key == 'sign') {
- continue;
- }
- $arg .= ($key . '=' . $val . '&');
- }
- $arg = $arg . 'key=' . $md5Key;
- //print($arg.PHP_EOL);
- //签名数据转换为大写
- $sig_data = strtoupper(md5($arg));
- //print($sig_data.PHP_EOL);
- //使用RSA签名
- $rsa = new Rsa('', $privateKey);
- //私钥签名
- return $rsa->sign($sig_data);
- }
- //私钥签名
- $data['sign'] = sign($data,$md5Key,$privateKey);
- print($data['sign'].PHP_EOL);