Example #1
0
 private function getPayJsParameter(Order $model, $title, $attach = '')
 {
     $wechatUser = $this->getWechatUser();
     $account = WechatAccount::findOrFail($this->wechat_oauth2_account);
     $api = new API($account->toArray(), $account->getKey());
     $pay = new Pay($api);
     $order = (new UnifiedOrder('JSAPI', date('ymdHis') . str_pad($model->getKey(), 8, '0', STR_PAD_LEFT), $title, $model->total_money * 100))->SetNotify_url(url('wechat/feedback/' . $account->getKey() . '/' . $model->getKey()))->SetOpenid($wechatUser->openid)->setDetail($model->title)->SetAttach($attach);
     $UnifiedOrderResult = $pay->unifiedOrder($order);
     if ($UnifiedOrderResult['return_code'] != 'SUCCESS' || empty($UnifiedOrderResult['prepay_id'])) {
         return $this->failure(['content' => $UnifiedOrderResult['return_msg']]);
     }
     $js = new Js($api);
     $result = $js->getPayParameters($UnifiedOrderResult);
     return $result;
 }
Example #2
0
 public function store(Request $request, $id, $size = NULL)
 {
     $store = Store::find($id);
     if (empty($store)) {
         return $this->failure_noexists();
     }
     $account = WechatAccount::findOrFail(1);
     $qrcode = new Qrcode($account->toArray(), $account->getKey());
     $qr = $qrcode->getSceneStr('store-' . $id);
     //
     if (empty($qr)) {
         return $this->failure('store.failure_qrcode');
     }
     //empty($qr->wdid) && $qr->update(['wdid' => 1]); //设置一个callback的素材
     return redirect(!empty($qr->aid) && empty($size) ? 'attachment?id=' . $qr->aid : 'qr?text=' . urlencode($qr->url) . '&size=' . (empty($size) ? 25 : $size) . '&watermark=' . urlencode('static/img/wechat.png'));
 }
Example #3
0
 public function takeEffect(Account $account)
 {
     // 	    $menu_data = array (
     // 	        'button' => array (
     // 	            0 => array (
     // 	                'name' => '新品特惠',
     // 	                'sub_button' => array (
     // 	                    0 => array (
     // 	                        'type' => 'view',
     // 	                        'name' => '优惠列表',
     // 	                        'url' => 'http://www.hanpaimall.com/m/classify',
     // 	                    ),
     // 	                ),
     // 	            ),
     // 	            1 => array (
     // 	                'type' => 'view',
     // 	                'name' => '汉派商城',
     // 	                'url' => 'http://www.hanpaimall.com/m',
     // 	            ),
     // 	            2 => array (
     // 	                'name' => '我的中心',
     // 	                'sub_button' => array (
     // 	                    0 => array (
     // 	                        'type' => 'view',
     // 	                        'name' => '管理中心',
     // 	                        'url' => 'http://www.hanpaimall.com/auth',
     // 	                    ),
     // 	                    1 => array (
     // 	                        'type' => 'view',
     // 	                        'name' => '个人中心',
     // 	                        'url' => 'http://www.hanpaimall.com/m/ucenter',
     // 	                    )
     // 	                )
     // 	            )
     // 	        )
     // 	    );
     $menu_data = ['button' => []];
     $menulist = WechatMenu::with('children')->newQuery()->where('waid', $account->getAccountID())->where('pid', 0)->orderBy('order', 'asc')->get();
     foreach ($menulist as $menu) {
         $menu_item_data = [];
         if ($menu->children->count() > 0) {
             $menu_item_data['name'] = $menu->title;
             foreach ($menu->children as $sub_menu) {
                 $menu_item_data['sub_button'][] = ['type' => 'view', 'name' => $sub_menu->title, 'url' => $sub_menu->url];
             }
         } else {
             $menu_item_data = ['type' => 'view', 'name' => $menu->title, 'url' => $menu->url];
         }
         $menu_data['button'][] = $menu_item_data;
     }
     //           var_export($menu_data);exit;
     $account = WechatAccount::findOrFail($account->getAccountID());
     $api = new API($account->toArray(), $account->getKey());
     if ($api->createMenu($menu_data)) {
         return $this->success('wechat::wechat.menu_create_succerss', url('admin/wechat/menu'));
     } else {
         return $this->failure('wechat::wechat.menu_create_failure', url('admin/wechat/menu'));
     }
 }
Example #4
0
 public function destroy(Request $request, $id)
 {
     empty($id) && !empty($request->input('id')) && ($id = $request->input('id'));
     $id = (array) $id;
     foreach ($id as $v) {
         $account = WechatAccount::destroy($v);
     }
     return $this->success('', count($id) > 5, compact('id'));
 }
 public function getJsParameters($url = NULL)
 {
     $account = WechatAccount::findOrFail($this->wechat_oauth2_account);
     $js = new Js($account->toArray(), $account->getKey());
     return $js->getConfig($url);
 }
Example #6
0
 /**
  * 支付回调
  * @return [type] [description]
  */
 public function feedback(Request $request, $aid, $oid = NULL)
 {
     $aid = $request->input('aid') ?: $aid;
     $oid = $request->input('oid') ?: $oid;
     $account = WechatAccount::findOrFail($aid);
     $api = new API($account->toArray(), $account->getKey());
     $pay = new WechatPayTool($api);
     $result = $pay->notify(function ($result, &$message) use($account, $oid) {
         if ($result['return_code'] == 'SUCCESS') {
             $wechatUser = WechatUser::where('openid', $result['openid'])->firstOrFail();
             $result = array_only($result, ['return_code', 'return_msg', 'mch_id', 'device_info', 'result_code', 'err_code', 'err_code_des', 'trade_type', 'bank_type', 'total_fee', 'fee_type', 'cash_fee', 'cash_fee_type', 'coupon_fee', 'coupon_count', 'transaction_id', 'out_trade_no', 'attach', 'time_end']);
             WechatBill::create($result + ['waid' => $account->getKey(), 'wuid' => $wechatUser->getKey()]);
             if (!empty($oid)) {
                 //因为是微信访问的,只能靠记录日志来查询是否失败
                 $order = Order::findOrFail($oid);
                 $order->pay($result['total_fee']);
                 $this->dispatch((new \App\Jobs\OrderDeal($order))->delay(config('site.order.deal', 14 * 86400)));
             }
         } else {
             WechatBill::create(['return_code' => $result['return_code'], 'return_msg' => $result['return_msg'], 'waid' => $account->getKey()]);
         }
         return true;
     });
     return $result;
 }
Example #7
0
 /**
  * 支付回调
  * @return [type] [description]
  */
 public function feedback(Request $request, $aid, $oid = NULL)
 {
     $aid = $request->input('aid') ?: $aid;
     $oid = $request->input('oid') ?: $oid;
     $account = WechatAccount::findOrFail($aid);
     $api = new API($account->toArray(), $account->getKey());
     $pay = new WechatPayTool($api);
     $result = $pay->notify(function ($result, &$message) use($account) {
         if ($result['return_code'] == 'SUCCESS') {
             $wechatUser = WechatUser::where('openid', $result['openid'])->firstOrFail();
             $result = array_only($result, ['return_code', 'return_msg', 'mch_id', 'device_info', 'result_code', 'err_code', 'err_code_des', 'trade_type', 'bank_type', 'total_fee', 'fee_type', 'cash_fee', 'cash_fee_type', 'coupon_fee', 'coupon_count', 'transaction_id', 'out_trade_no', 'attach', 'time_end']);
             WechatBill::create($result + ['waid' => $account->getKey(), 'wuid' => $wechatUser->getKey()]);
         } else {
             WechatBill::create(['return_code' => $result['return_code'], 'return_msg' => $result['return_msg'], 'waid' => $account->getKey()]);
         }
         return true;
     });
     return $result;
 }