官方下载sdk:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
我用的是thinkphp3.2,
单独拎出来哥包online,在里面做的处理
在WxPay.Config.php配置好APPID,MCHID,
放置好KEY:商户支付密钥
或者是直接放个路径
自己程序做好处理之后,开始调用插件
dAddon('NativePay', 'wechat_pay/online');
$notify = new \NativePay();
$input = new \WxPayUnifiedOrder();
$input->SetBody($order['title']);
$input->SetAttach($order['title']);
$input->SetOut_trade_no($order['order_sn']);
$input->SetTotal_fee($order['total_money']);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetNotify_url("https://my.mashangji.com/api/company/notify");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id("123456789");
$result = $notify->GetPayUrl($input);
if($result['return_msg']=="OK"){
return array('code_url'=>$result['code_url']);
}else{
E($result['return_msg'],ERROR);
}
注意:前方大坑来了
a、签名一直提示失败,然后使用了线上检测工具:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1,可是居然线上的和我自己生成的还不一样!做了很多次支付了,这次的很奇葩,后来字符串一个一个对照着查看发现了问题:
notify_url在去生成签名的拼接中,会被转义, ¬ify_url的¬会被转义,所以自己做好处理
我是用了个笨方法:直接先把字符串替换成别的,最后再替换回来
b、使用微信sign校验工具提示签名正确了,可是还是验证失败。这是另一个大坑!!
网上搜索资料发现:在微信商户平台重新生成密钥试试。。
key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置
设置32位密钥,可以根据一个密文,将密文生成MD5值,则正好是32位。
然后将密钥key保存至项目的配置文件中,做统一修改。
修改之后返回成功成功了!!