V2.0 - 微信小程序登录 / 微信扫码支付
yoyocmf 2020-07-05 13:50:27

微信小程序登录

 

1、配置小程序参数,建议不放在后台配置信息里,毕竟不是开放显示的东西,配置一次可能终身都不会再配了

common/config/params.php

配置示例如下:

PHP Code复制内容到剪贴板
  1. // 微信小程序配置 具体可参考EasyWechat  
  2.     'wechatMiniProgramConfig' => [  
  3.         'app_id'             => 'wxecc4e33da02e3821',  
  4.         'secret' => '7ced37f8f3eec389d5b9123bdcxxxx',  
  5.         'mch_id'             => '1504318xxx',  
  6.         'key'                => 'lqhbmNK32cXIqfxxx',  
  7.         'cert_path'          => Yii::getAlias('@root').'/cert/apiclient_cert.pem'// XXX: 绝对路径!!!!  
  8.         'key_path'           => Yii::getAlias('@root').'/cert/apiclient_key.pem',      // XXX: 绝对路径!!!!  
  9.         //'notify_url'         => '默认的订单回调地址',     // 你也可以在下单时单独设置来想覆盖它  
  10.     ],  

 

2、接口地址

common/modules/wechat/api/controllers/UserAuthController.php

ajax API地址:api.xxx.com/wechat/user-auth/wechat-mp/

 

 

 

 

 

微信支付

 

1、场景一:

(1)PC网站

(2)用户根据满意的商品加入购物车,加入完成后,系统生成订单,生成微信支付二维码,用户扫码支付

(3)回调中根据商户订单号,完成订单支付状态

 

PHP Code复制内容到剪贴板
  1.         $totalFee = 1;// 支付金额单位:分  
  2. //        $totalFee *= 100;  
  3.         $out_trade_no = date("YmdHis") . StringHelper::random(8, true);  
  4.         $body = \Yii::$app->request->post("title",'云监控摄像头');  
  5.         $detail = \Yii::$app->request->post("detail",'');  
  6.   
  7.         $log = new PayLog();  
  8.         $log->out_trade_no = $out_trade_no;  
  9.         $log->body = $body;  
  10.         $log->detail = $detail;  
  11.         $log->total_fee = $totalFee;  
  12.         $log->pay_fee = $totalFee;  
  13.         if (!$log->save()) {  
  14.             throw new HttpException(400,current($log->firstErrors));  
  15.         }  
  16.         $app = \Yii::$app->wechat->payment;  
  17.         /** 
  18.          * 注意:如果需要调用扫码支付 请设置 trade_type 为 NATIVE 
  19.          * 
  20.          * 结果示例:weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX 
  21.          */  
  22.         $result = $app->order->unify([  
  23.             'body' => $body,    //产品名称,  
  24.             'detail' => $detail,//产品简介  
  25.             'out_trade_no' => $out_trade_no,//商户订单号  
  26.             'total_fee' => $totalFee * 100,//金额单位为:分  
  27. //                'spbill_create_ip' => '123.12.12.123', // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址  
  28. //                'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 支付结果通知网址,如果不设置则会使用上面config配置里的默认地址  
  29.             'trade_type' => 'NATIVE',// JSAPI,NATIVE,APP...  
  30.         ]);  
  31.         if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {  
  32.             $config = $app->jssdk->sdkConfig($result['prepay_id']);  
  33.             $codeUrl = $result["code_url"];  
  34.             $ewm = DebrisHelper::getQRcode($codeUrl,"扫码支付");  
  35.             return [  
  36.                 'ewm' => $ewm,  
  37.                 'config' => $config  
  38.             ];  
  39.         } else {  
  40.             throw new HttpException(400,'微信支付异常, 请稍后再试');  
  41.         }  

 

生成支付二维码,扫码后回调中会收到的字段是:

{

    "appid": "wx312b4f15xxx",

    "bank_type": "OTHERS",

    "cash_fee": "1",

    "fee_type": "CNY",

    "is_subscribe": "Y",

    "mch_id": "1600700149",

    "nonce_str": "5f01692e3ee66",

    "openid": "oNqO6s8PTlHlJNxxx",

    "out_trade_no": "20200705134xxx",

    "result_code": "SUCCESS",

    "return_code": "SUCCESS",

    "sign": "8339410C80A666BCA80F6B76B51C8978",

    "time_end": "20200705134807",

    "total_fee": "1",

    "trade_type": "NATIVE",

    "transaction_id": "420000061620xxx"

}

 

2、场景二:

(1)PC网站

(2)根据指定产品生成该产品的二维码

(3)扫码下单后支付,回调中可以获取产品的id

PHP Code复制内容到剪贴板
  1. // 产品ID  
  2. $productId = \Yii::$app->request->get("product_id", 1);  
  3. $app = \Yii::$app->wechat->payment;  
  4. $content = $app->scheme($productId);  
  5. $ewm = DebrisHelper::getQRcode($content"扫码支付");  
  6. return [  
  7.     'ewm' => $ewm,  
  8. ];  

 

生成产品二维码,扫码后回调中会收到的字段是: 

{

    "appid": "wx312b4xxxx",

    "openid": "oNqO6s8PTlxxx",

    "mch_id": "1600700149",

    "is_subscribe": "Y",

    "nonce_str": "lyfaSsxHgp83qUQp",

    "product_id": "1",

    "sign": "196704844B365Bxxx"

}

 

 

本文来自于:http://www.yoyo88.cn/note/yoyocmf/522.html

Powered by yoyo苏ICP备15045725号