Browse Source

微信支付

undefined
v-Brocloni 4 years ago
parent
commit
7f2d8038d5
5 changed files with 82 additions and 57 deletions
  1. +26
    -0
      addons/epay/certs/apiclient_cert.pem
  2. +28
    -0
      addons/epay/certs/apiclient_key.pem
  3. +9
    -9
      addons/epay/config.php
  4. +17
    -46
      addons/unishop/controller/Pay.php
  5. +2
    -2
      addons/unishop/uniapp/uni-shop/main.js

+ 26
- 0
addons/epay/certs/apiclient_cert.pem View File

@@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE-----
MIIEZTCCA86gAwIBAgIDHYb3MA0GCSqGSIb3DQEBBQUAMIGKMQswCQYDVQQGEwJD
TjESMBAGA1UECBMJR3Vhbmdkb25nMREwDwYDVQQHEwhTaGVuemhlbjEQMA4GA1UE
ChMHVGVuY2VudDEMMAoGA1UECxMDV1hHMRMwEQYDVQQDEwpNbXBheW1jaENBMR8w
HQYJKoZIhvcNAQkBFhBtbXBheW1jaEB0ZW5jZW50MB4XDTE2MDQwNjEyNTAyNVoX
DTI2MDQwNDEyNTAyNVowgZUxCzAJBgNVBAYTAkNOMRIwEAYDVQQIEwlHdWFuZ2Rv
bmcxETAPBgNVBAcTCFNoZW56aGVuMRAwDgYDVQQKEwdUZW5jZW50MQ4wDAYDVQQL
EwVNTVBheTEqMCgGA1UEAxQh6JyY6Jub6KGM572R57uc56eR5oqA5pyJ6ZmQ5YWs
5Y+4MREwDwYDVQQEEwgxMTc3NDYwNDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAMJqPHEeUQvWZQWl5W/QvI/MR97jCY6iArnfPPkLBgWY6lEh7cGFn5Fq
C2DsTHxuUC/7si9Sq5QHA2K8VaLk8qYDj2CurT0yRFVAVss/NYfPerZ6nHLbEB4p
dYg6jUvQVWe7n5hJScq+89MNGUOpgF4uCCD/HyUDpRT8MFRQ+yGDTpuCjqZwexgM
e0jNTKwvCXVwLcgR9LFknSiJCxDHAqauqd4r+ZAjDU4CZ/JWdeyLuRUqwxz4kECE
S9iC79mhyo/KwoUupsZKp8RKacrhHybqMjgyZNFsVueLHjcDpYkMgrpUQU6QBJv6
pLqOPejSQg99ddJNBTJJwwffU2mrDG0CAwEAAaOCAUYwggFCMAkGA1UdEwQCMAAw
LAYJYIZIAYb4QgENBB8WHSJDRVMtQ0EgR2VuZXJhdGUgQ2VydGlmaWNhdGUiMB0G
A1UdDgQWBBTIibbUnV9kTejncwyzXb81/xqj9TCBvwYDVR0jBIG3MIG0gBQ+BSb2
ImK0FVuIzWR+sNRip+WGdKGBkKSBjTCBijELMAkGA1UEBhMCQ04xEjAQBgNVBAgT
CUd1YW5nZG9uZzERMA8GA1UEBxMIU2hlbnpoZW4xEDAOBgNVBAoTB1RlbmNlbnQx
DDAKBgNVBAsTA1dYRzETMBEGA1UEAxMKTW1wYXltY2hDQTEfMB0GCSqGSIb3DQEJ
ARYQbW1wYXltY2hAdGVuY2VudIIJALtUlyu8AOhXMA4GA1UdDwEB/wQEAwIGwDAW
BgNVHSUBAf8EDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQUFAAOBgQAHelavW3WB
2qBtcG0uEVPLYlWKMvYpO79QUaWPYWh9bywA9d2zqoM8LfWgkOJtmetNdiqh3RVf
/DrKWsLalluaLIMEHuX2chnvtT7vIO4ILijgP/4MZ9k8Jpmi3tKUfFpJVA7E4MXa
7vM5gl21FRuqB96m24tynWHjmgshc4Kk2g==
-----END CERTIFICATE-----

+ 28
- 0
addons/epay/certs/apiclient_key.pem View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCajxxHlEL1mUF
peVv0LyPzEfe4wmOogK53zz5CwYFmOpRIe3BhZ+Ragtg7Ex8blAv+7IvUquUBwNi
vFWi5PKmA49grq09MkRVQFbLPzWHz3q2epxy2xAeKXWIOo1L0FVnu5+YSUnKvvPT
DRlDqYBeLggg/x8lA6UU/DBUUPshg06bgo6mcHsYDHtIzUysLwl1cC3IEfSxZJ0o
iQsQxwKmrqneK/mQIw1OAmfyVnXsi7kVKsMc+JBAhEvYgu/ZocqPysKFLqbGSqfE
SmnK4R8m6jI4MmTRbFbnix43A6WJDIK6VEFOkASb+qS6jj3o0kIPfXXSTQUyScMH
31NpqwxtAgMBAAECggEALemSzo//SdFe2B+eeHKOJVNz4aIyXpnKFQUwTAwbZvT+
2RwvHtWkol2txDzprzUKANrq8JwQYwvo88dQXgC9gRE0Kfv2c45Mbumb1bHevWz1
KOT5z3IGc2kNFZfmSHIxySaZAQjFwXio8j2UqtL7usIaL1iwjTg4IyWPcEoTlI0Y
reRXlZY5z+VpaDFQubFytF+5zlb7ck/lPa8B6IJXZTBBQC6zBhuxXPky8uAjiza1
1C0EHcIIwA+jkVxRbV4e8e6VV4OPnjgok8rN0GPEPlJNo/Gs73vSCRNOYgz5QwTB
7JgRc4eFEXLaX7ntZxhkrOjK1kJQ8hLxYQLvygA0zQKBgQD8+PmHg59Y4c6MkYYk
Gxn8SK6QCtNns72uFi3DJAN9j7x3ZSb4PcjDao0e9BeOt2wKuX+kOyXtSbKA33o/
izeevp9UF2eNhGWgGaU7kMAgylS/V/iIN4A4UuzOyPEYSa9LYLMeHwh+OtH6skqZ
ZjRPaLyJYrhP8Ecqp1B7rmu4rwKBgQDEvdwvvpmiEbui91g2l9P1E/ik3f+VfOTR
5qKtYHYtYdkZAmg+7B6V5f8BCjx7NScS9di8J5KEOuDAc/MXD+o9jDxlxsSmAXB4
n6fqko/wHmG+Q6FXmFamO3mdj+ziKt6ykoNQWS3lzZ4KLHNC1lDwMsd6VmMMr3Ys
iGH4nYYbowKBgDc7kRfCaDc6ziMo3tXhSPIpWFvA0VmSB/cLhqBVq6FtkaOr5S9M
JhpsmDVK7B3P9Hn++Fx+QZCmh5/Vq1ZWaiVxz03H8mcWoi2ri8UOnLRMGObSKURs
gcVKbcPUYbeA1xIpIdKQygTtiM0owlrt0rwHzSpd8Ioblx47+7mVYpWnAoGBAKgu
QMZToZNoo0S5OiBZA6iyLNAKsgxA2n4QMSoSlpNO3L3DUAfR4odzN9zUukT8d+1+
WYrmLRp6FlyOAdTKFwwMEClUlA/wlQuYN3uPVBoIbretqoNtx0yM9PZa7T2dNgfi
tPv/b/vNHHdH7jPJbyEV123d4QgcCeIhp9ZWGikPAoGBAMUbx9snnBwswUae+Dv2
NkH02dv7oPQnPWKbk8b1s/LQEuisYO+34Aofx1ik5MmAZBN/3x8Cn7/i0eOKEUnd
TRsJuiiSFLYdNISDUBQ4R263uSewow9kagrk/lwQgZ/6pJSXQH9G1ycNeZxmR3dq
XevCR+GjHIwTFaYo4XOBYoNw
-----END PRIVATE KEY-----

+ 9
- 9
addons/epay/config.php View File

@@ -11,16 +11,16 @@ return array (
),
'value' =>
array (
'appid' => '',
'app_id' => '',
'app_secret' => '',
'appid' => 'wxbe6da4af3e529e0c',
'app_id' => 'wxbe6da4af3e529e0c',
'app_secret' => '7c1b14020e87e9e213696e870da0e549',
'miniapp_id' => '',
'mch_id' => '',
'key' => '',
'notify_url' => '/addons/epay/api/notifyx/type/wechat',
'mch_id' => '1329733601',
'key' => 'a6654d342eedd8e293692a3e211a5e53',
'notify_url' => '',
'cert_client' => '/epay/certs/apiclient_cert.pem',
'cert_key' => '/epay/certs/apiclient_key.pem',
'log' => 1,
'log' => '1',
),
'rule' => '',
'msg' => '',
@@ -39,8 +39,8 @@ return array (
'value' =>
array (
'app_id' => '2016102100728544',
'notify_url' => '/addons/epay/api/notifyx/type/alipay',
'return_url' => '/addons/epay/api/returnx/type/alipay',
'notify_url' => '',
'return_url' => '',
'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApIVSOQhGhke6xjf0yvd8dBTH34lrzdLnybz0mysN54Zq5r854hBFf2BNyoRG5HL+gUWT+nbB7cfzhsf/Co3cfAb6WLfYc4dKDqJQYNK/AZhxJD/yTXp41jTTRPqqYT9vkIh4Y0H2uOEeBehWql+wx+KOkhhgLFFsanyU0++pR8ZqzzhQI0T1SqNSmK9Y8FjW0+JjCIoYI8E5Kg2ngszBR/Y7bBfMwF8Vw62cisGS9LoHNqz2Q6904MjzZzWi9pxAukD8D8TyAUIh63Ya4UtUgALFcW8fc/zJwSA0asDtgzHwEvEOFcDZKmVVCkEAsS3k45nJXIvZ0Pzrzn/2+ipu5QIDAQAB',
'private_key' => 'MIIEpQIBAAKCAQEAuWLcTZsd8mWDJ12rPJrog3/0o0toQqOxf8boG9WeVQ+aUyA7AD6j46xFJgdDlTVqMoOn2ywsaa6rnPtQ06rhSmTgGsLKCNHGfkP4FkAQNa/2LGHYhe4dQ/aek75KjzR4Gabnv0QtgMabIMUcM1c4bbQBo2dSHVL8FExFBLK1jiXIRhyFMA+llD2Ir341Q3Mls5DWuXoTmx+NXlcjwOuN2/u7zsSvCdxGWX8wkkY2is+IKMZ5ODUg72toSCMCr76exkWFlzp4b9WsXPtMei3XZpX4jQk6gy0gu8cAo3R7DpYMxIjNaP4YXOL6i/xTj9ps1S5JBnX5VskZSswXVQe55QIDAQABAoIBAGV3ZJjdU7C+OuCq9fQ/3Q9MU3uk5DXFHnuPRK8nZnesCI2C0Ig7wLv2KAq+YxEhoTRwtsjRDqXxQmCzdPPFTXXIbJh5ENdu6bNmRDz5Z2XbH2P/UeFMCJyQOQ8oUeq7jxiLL8CR8k3PZkyzVdIL5Qi2Q0dKX7lJGEuLyyLdJV3dA/e0eXTAX7XsihNeNh5maEkzmA/yS51MJM/nd9hl1TTAZpzJyuDwrM9jB88XWqM/URoedIIVZZI47KW1lGqYXwTYa8QV5ADAsXw/lXHjIMy9bvuoN9EqMSQ4NhfuOLvyueFG+Gt+Wwpaf0mmUL5htuGAXIK3AUoXl5K5uiJxIKkCgYEA9QLjpertX3IIyBbDa0p1z98zV/LvRwWh/K7f4EinyqQHRPBm7BIZtpgOztSdZYE6U6QG3cYzvbWEZ2Erq7ltpc1Yi9/Qjwp4zeUlxriuCp1Yb5/oQ9Xl75KJuPlFFFwkxGIjVwHVSPQYeJ5vqpSD9Ks9waDG5fFKW7wYioE4excCgYEAwbNh2624Dz+1SaAbbQ9wP5ursTGbbmTuz/092zNss9sXtfbmZHhiVGBV8DEygNQvW/1Sdyv+R0Q/TyHYBav8t55ON+AGaJ0KLexmeYqR1ksZ93RdN4bo/0zFel07qFdD+qKX+sKiazsh79liKg3yjuv7iKyVzAFqWHuNDDDk4GMCgYEAiTI2+3+TsDCQzkpA32FwmxgnDgaRCjoTPQVHg7Xrj0NOdsIPP/3avC5ljFfuUxqL6K4e0izcaEyueZ0l8SECTyevf5Oym4aHovO/tYlQm80D6m2mh+XMvdxWlmeu0PnP9M/nbh8uqY1V7qT5bpF/WpBRIo2/Ep+MvdWUAGrfj70CgYEAh9PGF0ml++tssIg5MyzURYZfyw1CNRNJ80ddjMxuuWA1LEBKJsHUEd7L5HZbN8OSwirNHQwYbtkIm/Dbjn6f5BJ6Puw1Ej6s2K8g3LGyulZHiyJqC3nrALtQ7xFZuB4ZaTOC5zB8vDzm+02wbFUDdf08kQaUtE15yTo6GgZfOIkCgYEAgv+VQZMX5cENxdUo2jw7FsNNo8jsK99iLkjri0R4wpP6x2OFZKBe0oqXN+bIGXRhAEU8F11uD1l+nnZhnRjB3P6vB16JNn691DjQf0R4SNECQcVU+BDb2DHG9PywwYcIM2x0idvd2QEYMLukJ0CPk5k5cIjzHE0mgblN2ktnhVg=',
'log' => '1',


+ 17
- 46
addons/unishop/controller/Pay.php View File

@@ -65,7 +65,7 @@ class Pay extends Base
{

$orderId = $this->request->request('order_id', 0);
$orderId = Hashids::decodeHex($orderId);
// $orderId = Hashids::decodeHex($orderId);

$orderModel = new \addons\unishop\model\Order();
$order = $orderModel->where(['id' => $orderId])->find();
@@ -75,6 +75,12 @@ class Pay extends Base
$this->error(__('Order does not exist'));
}

$products = $order->products()->select();

$body = Config::getByName('name')['value'];
foreach ($products as $product) {
$body .= '_' . $product['title'];
}
//MWEB
$platfrom = $this->request->header('platform', 'MP-WEIXIN');

@@ -87,55 +93,20 @@ class Pay extends Base
$trade_type = 'MWEB';
break;
}

// 如果是微信内访问 公众号等
if (Wechat::h5InWechat()) {
$trade_type = 'JSAPI';
}

$products = $order->products()->select();

$body = Config::getByName('name')['value'];
foreach ($products as $product) {
$body .= '_' . $product['title'];
}

$app = Wechat::initEasyWechat('payment');
$result = $app->order->unify([
'body' => $body,
'out_trade_no' => $order['out_trade_no'],
'total_fee' => bcmul($order['total_price'], 100),
'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
'trade_type' => $trade_type, // 请对应换成你的支付方式对应的值类型
'openid' => Wechat::getOpenidByUserId($this->auth->id)
]);

if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {

if ($trade_type == 'JSAPI') {
// 二次签名
$result['timeStamp'] = (string)time();
$result['paySign'] = Wechat::paySign([
'appId' => Config::getByName('app_id')['value'],
'nonceStr' => $result['nonce_str'],
'package' => 'prepay_id=' . $result['prepay_id'],
'timeStamp' => $result['timeStamp'],
'signType' => 'MD5'
], Config::getByName('key')['value']);
} elseif ($trade_type == 'MWEB') {
$page = '/pages/order/order?state=0';
if ($platfrom == 'APP-PLUS') {
$page = '/pages/index/index';
}
$result['mweb_url'] .= '&redirect_url=' . urlencode('https://' . $_SERVER['HTTP_HOST'] . '/h5/#' . $page);
$result['referer'] = 'https://' . $_SERVER['HTTP_HOST'];
}

$this->success('', $result);
} else {
$this->error($result['return_msg']);
$trade_type = 'wap';
}
$params = [
'amount' => bcmul($order['total_price'], 100),
'orderid' => $order->out_trade_no,
'type' => "wechat",
'title' => $body,
'notifyurl' => Config::getByName('notify_url')['value'],
'trade_type' => $trade_type,

];
return Service::submitOrder($params);
} catch (Exception $e) {
$this->error($e->getMessage());
}


+ 2
- 2
addons/unishop/uniapp/uni-shop/main.js View File

@@ -3,7 +3,7 @@ import store from './store'
import App from './App'

// 后端api地址
Vue.prototype.$unishow = "http://nwx.zhizhuchuxing.cn/addons/unishop";
Vue.prototype.$unishow = "http://127.0.0.1/addons/unishop";
// Vue.prototype.$unishow = "http://shop1.com/index.php/addons/unishop";
//Vue.prototype.$unishow = "http://t.fastadmin-ceshi.com:8888/addons/unishop";
//Vue.prototype.$unishow = "http://shop.weivee.com/addons/unishop";
@@ -13,7 +13,7 @@ uni.getSystemInfo({
success(res) {
//console.log(res)
if (res.platform != "devtools") {
Vue.prototype.$unishow = "http://nwx.zhizhuchuxing.cn/addons/unishop";
Vue.prototype.$unishow = "http://127.0.0.1/addons/unishop";
// Vue.prototype.$unishow = "http://shop1.com/index.php/addons/unishop";
}
}


Loading…
Cancel
Save