easychat tp5.0 开发微信支付

做微信支付之前,需要了解微信支付需要的材料
微信支付不同于支付宝支付
微信支付需要双向证书
证书可以去微信商户平台下载 具体下载及其操作请到微信商户平台查看 ,基本都是傻瓜式操作
进入正题
下载后的微信证书如下图所示:
easychat tp5.0 开发微信支付_第1张图片
然后就是微信支付的配置信息
我是在extra 该模块内设置,以便于获取
配置信息如下:
‘payment’ => [
‘app_id’ => ‘’, // 同公众号app_id 如果是小程序 则使用小程序的APPID
‘mch_id’ => ‘’, 商户账号
‘key’ => ‘’, // API 密钥
‘cert_path’ => ROOT_PATH . ‘wxcert’ . DS . ‘apiclient_cert.pem’, // XXX: 绝对路径!!!!
‘key_path’ => ROOT_PATH . ‘wxcert’ . DS . ‘apiclient_key.pem’, // XXX: 绝对路径!!!!
‘notify_url’ => ‘’ //回调地址 也可以在下单时单独设置,此地址失效
],
此时我们就可以去下单进行支付了
因为微信支付需要验证签名啥的,所以在支付的时候我们要去生成这几个参数,提供给微信
需要的签名请查看微信支付手册
$wxpay_config = config(‘weixin.payment’);
p a y m e n t A p p = F a c t o r y : : p a y m e n t ( paymentApp = Factory::payment( paymentApp=Factory::payment(wxpay_config);
$result = p a y m e n t A p p − > o r d e r − > u n i f y ( [ ′ b o d y ′ = > " " / / 自 己 定 义 ′ o u t t r a d e n o ′ = > " " / / 自 己 定 义 的 账 单 号 , 便 于 回 调 后 你 自 己 的 逻 辑 处 理 ′ t o t a l f e e ′ = > i n t v a l ( paymentApp->order->unify([ 'body' =>"" //自己定义 'out_trade_no' =>"" //自己定义的账单号,便于回调后你自己的逻辑处理 'total_fee' => intval( paymentApp>order>unify([body=>""//outtradeno=>""//便totalfee=>intval(payinfo[‘money’] * 100), //这是付的钱, 以分为单位
// ‘spbill_create_ip’ => ‘123.12.12.123’, // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
// ‘notify_url’ => ‘’, // 支付结果通知网址,如果不设置则会使用配置里的默认地址
‘trade_type’ => ‘JSAPI’,
‘openid’ => $this->me[‘openid’],
‘attach’ => 'p
’ . p a y i n f o [ ′ i d ′ ] ] ) ; i f ( payinfo['id'] ]); if ( payinfo[id]]);if(result[‘return_code’] == ‘SUCCESS’) {
$reta = [
‘timeStamp’ => strval(strtotime(date(“Y-m-d”))), //注意这里要去掉时分秒 因为你传给微信和微信返回来的时间不一定相等
‘nonceStr’ => md5(mt_rand()),
‘package’ => ‘prepay_id=’ . $result[‘prepay_id’]
];
// 小程序支付签名生成
$stringA = “appId=” . $wxpay_config[‘app_id’] . “&nonceStr=” . $reta[‘nonceStr’] . “&package=” . $reta[‘package’] . “&signType=MD5&timeStamp=” . $reta[‘timeStamp’] . “&key=” . $wxpay_config[‘key’];
r e t a [ ′ p a y S i g n ′ ] = s t r t o u p p e r ( m d 5 ( reta['paySign'] = strtoupper(md5( reta[paySign]=strtoupper(md5(stringA));
return ajax_success(‘ok’, $reta);
} else {
KaTeX parse error: Expected group after '_' at position 7: this->_̲_throwHttpErr(result[‘return_msg’], 500);
}
}
//返回出来的数据就是签名的参数
前端拿去调起支付即可

***回调处理***
当你配置好回调地址后,微信就会把支付结果通知给你
$wxpay_config = config('weixin.payment');
    $app = Factory::payment($wxpay_config);
    $response = $app->handlePaidNotify(function ($message, $fail) {
        /*
         * $message 格式:
         * array (
         * 'appid' => 'wx50cf6e6a0702fc1c',
         * 'attach' => 'p_4',
         * 'bank_type' => 'CFT',
         * 'cash_fee' => '1',
         * 'fee_type' => 'CNY',
         * 'is_subscribe' => 'N',
         * 'mch_id' => '1491326372',
         * 'nonce_str' => '5a48e2dc927c9',
         * 'openid' => 'oicgG0ba-rjHVX93Z_BxaIquYqwE',
         * 'out_trade_no' => 'P17123176508575',
         * 'result_code' => 'SUCCESS',
         * 'return_code' => 'SUCCESS',
         * 'sign' => 'CF940920C2D58B45692D9E6AA1CF48D8',
         * 'time_end' => '20171231211514',
         * 'total_fee' => '1',
         * 'trade_type' => 'JSAPI',
         * 'transaction_id' => '4200000038201712315328034121',);
         */
           return true;
         }
          return $response;
你就可以拿着这些信息去继续进行自己的业务逻辑。
**

注意我用的easywechat 的版本是4.0.

**

你可能感兴趣的:(easychat tp5.0 开发微信支付)