123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- // by 请勿倒卖,已申请软著,否则追究法律责任
- error_reporting(1);
- class AlipayService
- {
- protected $appId;
- protected $returnUrl;
- protected $notifyUrl;
- protected $charset;
- protected $signType;
- protected $privateKey;
- public function __construct($_var_0, $_var_1, $_var_2, $_var_3, $_var_4)
- {
- $this->appId = $_var_0;
- $this->returnUrl = $_var_1;
- $this->notifyUrl = $_var_2;
- $this->charset = "utf8";
- $this->signType = $_var_3;
- $this->privateKey = $_var_4;
- }
- public function doPay($totalFee, $outTradeNo, $orderName, $returnUrl, $notifyUrl, $wap = '')
- {
- $_var_5 = $wap ? "alipay.wap.create.direct.pay.by.user" : "create_direct_pay_by_user";
- $_var_6 = array("partner" => $this->appId, "service" => $_var_5, "_input_charset" => strtolower($this->charset), "sign_type" => strtoupper($this->signType), "return_url" => $returnUrl, "notify_url" => $notifyUrl, "out_trade_no" => $outTradeNo, "total_fee" => $totalFee, "subject" => $orderName, "payment_type" => 1, "seller_id" => $this->appId);
- return $this->buildRequestForm($_var_6);
- }
- function buildRequestForm($para_temp)
- {
- $_var_7 = $this->buildRequestPara($para_temp);
- $_var_8 = "<form id='alipaysubmit' name='alipaysubmit' action='https://mapi.alipay.com/gateway.do?_input_charset=" . trim(strtolower($this->charset)) . "' method='post'>";
- while (list($_var_9, $_var_10) = each($_var_7)) {
- $_var_8 .= "<input type='hidden' name='" . $_var_9 . "' value='" . $_var_10 . "'/>";
- }
- $_var_8 = $_var_8 . "<input type='submit' value='提交' style='display:none;'></form>";
- $_var_8 = $_var_8 . "<script>document.forms['alipaysubmit'].submit();</script>";
- return $_var_8;
- }
- function buildRequestPara($para_temp)
- {
- $_var_11 = $this->paraFilter($para_temp);
- $_var_12 = $this->argSort($_var_11);
- $_var_13 = $this->buildRequestMysign($_var_12);
- $_var_12["sign"] = $_var_13;
- $_var_12["sign_type"] = strtoupper(trim($this->signType));
- return $_var_12;
- }
- function argSort($para)
- {
- ksort($para);
- reset($para);
- return $para;
- }
- private function buildRequestMysign($para_sort)
- {
- $_var_14 = $this->createLinkstring($para_sort);
- $_var_15 = "";
- switch (strtoupper(trim($this->signType))) {
- case "MD5":
- $_var_15 = $this->md5Sign($_var_14, $this->privateKey);
- break;
- case "RSA":
- default:
- $_var_15 = $this->rsaSign($_var_14, $this->privateKey);
- break;
- }
- return $_var_15;
- }
- private function rsaSign($_var_16, $_var_17)
- {
- $_var_17 = str_replace("-----BEGIN RSA PRIVATE KEY-----", "", $_var_17);
- $_var_17 = str_replace("-----END RSA PRIVATE KEY-----", "", $_var_17);
- $_var_17 = str_replace("\n", "", $_var_17);
- $_var_17 = "-----BEGIN RSA PRIVATE KEY-----" . PHP_EOL . wordwrap($_var_17, 64, "\n", true) . PHP_EOL . "-----END RSA PRIVATE KEY-----";
- $_var_18 = openssl_get_privatekey($_var_17);
- if ($_var_18) {
- openssl_sign($_var_16, $_var_19, $_var_18);
- } else {
- echo "您的私钥格式不正确!" . "<br/>" . "The format of your private_key is incorrect!";
- exit;
- }
- openssl_free_key($_var_18);
- $_var_19 = base64_encode($_var_19);
- return $_var_19;
- }
- function md5Sign($prestr, $key)
- {
- $prestr = $prestr . $key;
- return md5($prestr);
- }
- private function createLinkstring($para)
- {
- $_var_20 = "";
- while (list($_var_21, $_var_22) = each($para)) {
- $_var_20 .= $_var_21 . "=" . $_var_22 . "&";
- }
- $_var_20 = substr($_var_20, 0, count($_var_20) - 2);
- return $_var_20;
- }
- private function paraFilter($_var_23)
- {
- $_var_24 = array();
- while (list($_var_25, $_var_26) = each($_var_23)) {
- if ($_var_25 == "sign" || $_var_25 == "sign_type" || $_var_26 == "") {
- continue;
- } else {
- $_var_24[$_var_25] = $_var_23[$_var_25];
- }
- }
- return $_var_24;
- }
- function verifyNotify($data)
- {
- if (empty($data)) {
- return false;
- } else {
- $_var_27 = $this->paraFilter($data);
- $_var_28 = $this->argSort($_var_27);
- $_var_29 = $this->buildRequestMysign($_var_28);
- if ($_var_29 = $data["sign"]) {
- return true;
- } else {
- return false;
- }
- }
- }
- }
|