1. 程式人生 > >pc端微信掃碼支付和支付寶在線支付(還未驗證 先留著)

pc端微信掃碼支付和支付寶在線支付(還未驗證 先留著)

無需 host var efi 成功 raw func pwd 更改

本DEMO演示了PHP支付寶和微信掃碼在線支付,支付成功後,在回調地址顯示支付相關信息。

操作步驟:

1.修改配置文件 Application/common/conf/config.php

$arr = array( 
‘DB_TYPE‘ => ‘mysql‘,
‘DB_HOST‘ => "localhost",
‘DB_NAME‘ => ‘demo‘,
‘DB_USER‘ => "sucaihuo.com",
‘DB_PWD‘ => "sucaihuo.com",
‘DB_PORT‘ => 3306,
‘DB_PREFIX‘ => ‘‘,
);


2.修改支付寶和微信支付配置信息Application/home/conf/config.php

支付寶請到支付寶商戶官網申請:https://b.alipay.com/?ynsrc=zhuzhanA,微信支付配置申請:https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN

$arr = array( 
‘URL_ROUTER_ON‘ => true,
/* 支付設置 */
‘payment‘ => array(
‘alipay‘ => array(
// 收款賬號郵箱
‘email‘ => [email protected]
/* */,
// 加密key,開通支付寶賬戶後給予
‘key‘ => ‘ggo084pb84gl43qnw82a39n9b7r1jq2m‘,
// 合作者ID,支付寶有該配置,開通易寶賬戶後給予
‘partner‘ => ‘2088901006538525‘,
//收款支付寶賬號,以2088開頭由16位純數字組成的字符串,一般情況下收款賬號就是簽約賬號
‘seller_id‘ => ‘2088901006538525‘,
//簽名方式
‘sign_type‘ => strtoupper(‘MD5‘),
//字符編碼格式 目前支持utf-8
‘input_charset‘ => strtolower(‘utf-8‘),
// 產品類型,無需修改
‘service‘ => ‘create_direct_pay_by_user‘,
// 支付類型 ,無需修改
‘payment_type‘ => ‘1‘,
),
‘alipaywap‘ => array(
// 收款賬號郵箱
‘email‘ => [email protected]
/* */,
// 加密key,開通支付寶賬戶後給予
‘key‘ => ‘ggo084pb84gl43qnw82a39n9b7r1jq2m‘,
// 合作者ID,支付寶有該配置,開通易寶賬戶後給予
‘partner‘ => ‘2088901006538525‘,
//收款支付寶賬號,以2088開頭由16位純數字組成的字符串,一般情況下收款賬號就是簽約賬號
‘seller_id‘ => ‘2088901006538525‘,
//簽名方式
‘sign_type‘ => strtoupper(‘MD5‘),
//字符編碼格式 目前支持utf-8
‘input_charset‘ => strtolower(‘utf-8‘),
// 產品類型,無需修改
‘service‘ => ‘alipay.wap.create.direct.pay.by.user‘,
// 支付類型 ,無需修改
‘payment_type‘ => ‘1‘,
),
‘wechatjspai‘ => array(
‘APPID‘ => ‘wx422126b0b62bbfcfc‘,
‘MCHID‘ => ‘1349825901‘,
‘KEY‘ => ‘2088901006538525‘,
‘APPSECRET‘ => ‘45843e705995a12106155f4c26f716dc‘,
),
)
);



只要操作以上兩個步驟,即可調通支付寶和微信在線支付,以下為支付代碼教程。

訂單生成代碼如下: Application\Home\Controller\PayController.class.php

public function submit() { 
$paytype = I("post.paytype");
$data[‘order_money‘] = I("post.money", 1);//訂單金額
$data[‘order_no‘] = date("YmdHis") . rand(1000, 9999);//訂單號
$data[‘pay_type‘] = $paytype;
$data[‘addtime‘] = time();
M("order")->add($data);
$site_url = ‘http://‘ . $_SERVER[‘HTTP_HOST‘] . $_SERVER[‘PHP_SELF‘];
$dir = dirname($site_url);
$data[‘url_notify‘] = $dir . "/Notify/pay_alipay";//回調地址
$data[‘url_return‘] = $dir . "/Pay/order_detail";//返回地址
$data[‘title‘] = "標題" . $data[‘order_no‘];
$data[‘body‘] = "主體內容" . $data[‘order_no‘];
if ($paytype == ‘alipay‘) {
$this->alipay_jump($data);
} elseif ($paytype == ‘wechat_code‘) {
$data[‘url_notify‘] = $dir . "/Notify/pay_weixin";
$this->wechat_jump($data);
}
}



支付成功回調,更改訂單狀態為已付款: Application\Home\Controller\NotifyController.class.php
public function pay_weixin() { 
$simple = json_decode(json_encode(simplexml_load_string($GLOBALS[‘HTTP_RAW_POST_DATA‘], ‘SimpleXMLElement‘, LIBXML_NOCDATA)), true);

$notify_data[‘order_no‘] = $notify_data[‘trade_no‘] = $simple[‘out_trade_no‘];
$notify_data[‘third_id‘] = $simple[‘transaction_id‘];
$notify_data[‘pay_money‘] = $simple[‘total_fee‘];

$notify_data[‘payment_method‘] = ‘weixin‘;

// $sign = $simple[‘sign‘];
// file_put_contents(‘ac_simple.txt‘, json_encode($simple));
// file_put_contents(‘ac_notify_data.txt‘, json_encode($notify_data));

$this->order_pay($notify_data);
}

public function pay_alipay() {
$notify_data[‘order_no‘] = $notify_data[‘trade_no‘] = I("post.out_trade_no");
$notify_data[‘third_id‘] = I("post.trade_no");
$notify_data[‘pay_money‘] = I("post.total_fee");
$notify_data[‘payment_method‘] = ‘alipay‘;
$this->order_pay($notify_data);
file_put_contents(‘ac_notify_data.txt‘, json_encode($_REQUEST));
}

/**
* 支付結果返回
*/
public function order_pay($data_order) {

$order_no = $data_order[‘order_no‘];
if ($order_no == ‘‘) {
return false;
}
$order_info = M(‘order‘)->where(array("order_no" => $order_no))->find();
if ($order_info[‘state‘] == 0) {
$data_order[‘update_time‘] = $_SERVER [‘REQUEST_TIME‘];
$data_order[‘state‘] = 1; // 已付款
M(‘order‘)->where(array("order_no" => $order_no))->save($data_order);
}
}

pc端微信掃碼支付和支付寶在線支付(還未驗證 先留著)