扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
抄来的 不求最佳 只是希望对你有帮助
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、雅安服务器托管、营销软件、网站建设、黄骅网站维护、网站推广。
require_once("././././config.php");
require_once(SYSTEM."db.php"); //导入db类
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);//实例化db
$sql = "SELECT * FROM setting ";
$query = $db-query($sql);
$rows = $query-rows;
$appid = '5';
$mchid = '1';
$key = 'a';
$appsecret = 'c';
$sslcert_path = 'apiclient_cert.pem';
$sslkey_path = 'apiclient_key.pem';
$curl_proxy_host = '0.0.0.0';
$curl_proxy_port = 0;
$report_levenl = 1;
$config = "
class WxPayConfig
{
const APPID = '$appid';
const MCHID = '$mchid';
const KEY = '$key';
const APPSECRET = '$appsecret';
const SSLCERT_PATH = '$sslcert_path';
const SSLKEY_PATH = '$sslkey_path';
const CURL_PROXY_HOST = '$curl_proxy_host';//'10.152.18.220';
const CURL_PROXY_PORT = $curl_proxy_port;//8080;
const REPORT_LEVENL = $report_levenl;
}
";
eval($config);
unset($config, $appid, $mchid, $key, $appsecret, $sslcert_path, $sslkey_path, $curl_proxy_host, $curl_proxy_port, $report_levenl);
//echo WxPayConfig::APPID;exit;
//不清楚可以问联系我:web$ebaitian.cn(将$换为@)
文接上篇 PHP如何更科学地接入第三方渠道 ,既然已经写到这了,索性创建了一个gitee仓库,地址: ,有需要的可以去看看。
言归正传,微信支付v3版本刚推出不久,鉴于微信官方一贯语焉不详的尿性,论坛上自然仍旧一片哀嚎,鄙人一路踩坑下来,倒也还算顺利,把过程分享给大家参考~
在微信商户平台中找到API安全,这一步按照官方提示操作即可,比较简单不再赘述
注意,第1步中导出的证书有三个文件,以我的经验只有apiclient_key.pem是有用的,apiclient_cert.pem则没什么用(没发现它有什么用),拿到apiclient_key.pem的路径之后:
上面是官方提供的命令,此处:
apiV3key = 设置的v3秘钥
mchId = 商户号
mchPrivateKeyFilePath = apiclient_key.pem的路径
mchSerialNo = 商户API证书序列号
outputFilePath = 微信支付平台证书的存储路径
你可能会问,-c参数填啥?这里需要说一下这个参数是验证证书用的,填的是微信支付平台证书的路径,因为我们现在是 第一次创建证书,所以-c参数不需要填写 ,需要特别注意一下。
这样就能确保上文注入的支付实例都有共同的支付和回调方法
有部分方法文中没上,我个人的项目中用上了,就暂且保留吧
通知部分过段时间再更,明天就算端午节就更到这了,有需要的小伙伴可以留言,我争取尽快补上~
//重写回调处理函数
public function NotifyProcess($data, $msg)
{
Log::DEBUG("call back:" . json_encode($data));
$notfiyOutput = array();
if(!array_key_exists("transaction_id", $data)){
$msg = "输入参数不正确";
return false;
}
//查询订单,判断订单真实性
if(!$this-Queryorder($data["transaction_id"])){
$msg = "订单查询失败";
return false;
}
$this-handel_order($data['out_trade_no'],$data['transaction_id']);
return true;
}
//业务处理
public function handel_order($order_sn,$out_trade_no){
$arr = json_encode(array(
'order_sn' =$order_sn,
'out_trade_no'=$out_trade_no,
));
$url = getCurl('Wxpay/payComplete');
$res = json_decode(https_request($url,$arr),true);
if($res['status']==1) $this-Closeorder($order_sn); //关闭订单
}
以PHP语言为例,对微信支付的开发流程进行一下说明:
1.获取订单信息。
2.根据订单信息和支付相关的账号生成sign,并且生成支付参数。
3.将支付参数信息POST到微信服务器,获取返回信息。
4.根据返回信息生成相应的支付代码(微信内部)或是支付二维码(非微信内),完成支付。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流