wqData['uniacid']; $auth_code=trim($result['auth_code']); $this->payment($uniacid,$outTradeNo,$auth_code); die; if($auth_code){ $app=WeChat::cashierConfig($uniacid,$storeId,$origin); $result = $app->order->unify([ 'body' => '腾讯充值中心-QQ会员充值', 'out_trade_no' =>$outTradeNo, 'total_fee' => 1, //'notify_url' => 'https://v2.bkycms.com/channel/cashier-notify/notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址 //'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型 'auth_code'=>$auth_code ]); if(!array_key_exists("return_code", $result) || !array_key_exists("result_code", $result)) { echo json_encode(['code'=>1,'msg'=>'接口调用失败']);die; } //③、确认支付是否成功 $queryTimes = 10; while($queryTimes > 0) { $succResult = 0; //③、确认支付是否成功 $queryResult = $this->queryOrder($uniacid,$storeId,$outTradeNo); //如果需要等待1s后继续 if($queryResult['succCode'] == 2){ sleep(2); continue; } else if($queryResult['succCode'] == 1){//查询成功 $this->notify($outTradeNo); } else {//订单交易失败 break; } } echo json_encode(['code'=>1,'msg'=>'订单取消']);die; }else{ echo json_encode(['code'=>1,'msg'=>'缺少付款码']);die; } } /** * * 查询订单情况 * @param string $out_trade_no 商户订单号 * @param int $succCode 查询订单结果 * @return 0 订单不成功,1表示订单成功,2表示继续等待 */ public function queryOrder($uniacid,$storeId,$outTradeNo){ try{ $origin=1; $app=WeChat::cashierConfig($uniacid,$storeId,$origin); $result=$app->order->queryByOutTradeNumber($outTradeNo); } catch(Exception $e) { } if($result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") { //支付成功 if($result["trade_state"] == "SUCCESS"){ $result['succCode']=1; return $result; } //用户支付中 else if($result["trade_state"] == "USERPAYING"){ $result['succCode']=2; return false; } } //如果返回错误码为“此交易订单号不存在”则直接认定失败 if($result["err_code"] == "ORDERNOTEXIST") { $succCode = 0; } else{ //如果是系统错误,则后续继续 $succCode = 2; } return false; } public function notify($outTradeNo){ $order = (new \yii\db\Query()) ->from('{{%ybwm_instore_order}}') ->where('outTradeNo=:outTradeNo', [':outTradeNo' => $outTradeNo])->one(); $res=Yii::$app->db->createCommand()->update('{{%ybwm_instore_order}}', ['state'=>2],'outTradeNo=:outTradeNo', [':outTradeNo' => $outTradeNo])->execute(); $transaction = Yii::$app->db->beginTransaction(); //开始事务 if($res) { $bill = Bill::bill($order['uniacid'], 1, 1, $order['outTradeNo'], 1); if (!$bill) { $transaction->rollBack();//事务回滚 return false; } } echo json_encode(['code'=>1,'msg'=>'支付成功']);die; } //-----------------------------支付宝条形码支付-------------------------------------------------- //支付宝条码支付,直接调用ali_tiaoma_pay方法,把条码和金额传进去就ok function actionAlipay(){ $config =array( 'app_id' => '2019091867562464', 'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjEKdm/ZchS/TmkEim2qrTfSFv4kq44KILM+7NaqsJTzrfZwWAWLeEqCHCM9n2lB/3cU0ImLPpHlzFLoy0hKgk+ZtbXhgfTLHtSErQL+WLqsNMe7mcrUYGO/9/51Z8X/b5UJgUzlVWoxnlROCfoGTQCmSmof5RtInWyXWk0CCj3u9jyzXsLhaonB3o1Y5rJEXyrQwCTyAgZlw9UesaKtq+l6J3ry2tHJSKt6tfH4nLA2F8CTteSOjmVd6y5RebqRhud6hBlVxoSV7FS7wTLVR3su8rgH6AAydB12IRd+TnGYYk5trNsqF2CLCk8sKcktL7OkUFiAHFooqcLqJpqTYCwIDAQAB', 'private_key' => 'MIIEpgIBAAKCAQEA6l/HNl169TQ+cwm80tHgoHF+FJtC5b26/Xw7dwy8UJiBB1p1WO1p9Si01WdSQbBwZcxUY+A347LE2R9FH70kc6d5Fan7vZTUAT+a6xF7+TwZshyTlNM2zB2/a07wXZqkrjuwIQ5AnqqbGhbyq6tqD4+H2J59SHgK21ZJpmbGoqDfOGJC79n8sGD2X9BGU9JS5STwqQN6lqY0/FhyQZmcv6EYFapXXIUzzDZ/bZeGvRa9JAqTylI+Kd96aAYZtrkZCkuysjgdvwTA02w4nA0xDKMen4iu3GsDo+pSQFfYSdsxTdnuYcEfs6AV7Y/tc6fLrb4mTELJK8AS3wd/WAKKZwIDAQABAoIBAQC1gODkwDYVqJToP9VEKpbbiajLSoXfJzSlU801X96CR+g8ipgv+wRAgHqyfWZdSsdwfnGoOx7tLid1wdqlPrP5AOwrk81JvvUD1n8hphOtKxb3MVw1N/DK2ArCjopk4vq/l6fJoaD3f0XISZc6zO/BBzV70xlQwu4deFBnFlaj35g2/zK5GRCbs6Sjka3WqEC9Dd16jJXfV4Zal2Mmv1eyaYGnyBAc3gdftA3RRqffJ5RsisgiY2KKaNg20kPW7um3U2pcYAxSYZhJVEsd4r0paKPG9jtkSrR+zEzyR1pHZDmD3DAS5sggpiPdLiMYyYEBOKzCLumCvqdPFiX+XGJpAoGBAPcYAkfX0i893dGfHbbMSeoxGTJkI7y0YqmhFaJVgYBD4HkkWUHUbfqcAmJW5lw2Ain/jRnRBhEyuLeAaTpPTpNtRtyCagfdD4ULpLE2R89tPttcDgZ5uLq3Tdg88IKbdA9A0I6RnUomglJbbwSFrl+5PxUb+0iFlfaQUj8cmDU7AoGBAPLSZvFpscsISy7s7AkQVOrfiufgDa+MjwEzIcZp3qrjTOkLCvE4Ta12/ABKYtD8o7OR7fhfGUbRMW5vFpEauQdyFqN+xwZ9unJq83mv28qwbSY/TC4it6XSoq6cDgwhYloLWnj+D8Yejf8IiY1Ui/t23wZmbb96tZPywgmBu3zFAoGBAOBNZySYgjBoVMhJTMv3vtFdKKZZyScwCLA7jkwCmsA43biainv7vqpUnMVwZUUnsec2GHxrBrrt9Eh/xQYtoAKsnDroGCBzR/dajnJf9+gQH5M5iXHPZSX56Cx3hUzKmRyPlcMV5Fa/hmYEok7Um2pB20XqVL2MpolgkYjBCFqpAoGBAJLjnqx5ULlOihSX8+1DuOrgUaoVSpIgiD2kjdD2KGHd4J+1M2has/q0WJtgZEiiG/E73OX7uVGyqKFyiAc9UCLl7DX5MjKGCiy+8AxzypThhxW1AsOB8vBX7FuOQZ0q8NEhvxgkMKybvTBDHNqnA4saDK5Vdhx4AbG/D4wqs501AoGBAPKLLch4WckE9m+awheuuTp50ON8ghjwMvJg3u9DgDQber/8C9ig1nN1SQp9vXYSWW9sc70YvGpwBbD+V+XZD3yTbEiyt5ESVsFMhE19C2oBg9Dy64lJ8B4i1uJ9EhTeP3A8XjP2f0r8ClQwQoh0OL6rx7734ToZnUnnWOhxZ9Eh', ); $order = [ 'out_trade_no' => time(), 'total_amount' => '0.01', 'subject' => 'test subject-刷卡支付', 'auth_code' => '286636537649543523', ]; try { $alipay = Pay::alipay($config)->pos($order); }catch (\Exception $e){ //echo $e->getMessage(); // die(); // 终止异常 } switch ($alipay->code) { case "10000": echo json_encode(['code'=>1,'msg'=>'支付成功']);die; break; case "10003": echo json_encode(['code'=>2,'msg'=>'等待用户付款']);die; break; case "40004": echo json_encode(['code'=>2,'msg'=>'支付失败']);die; break; default: echo json_encode(['code'=>2,'msg'=>'不支持的交易状态,交易返回异常!!!']);die; break; } } public function actionCeshi(){ $config = [ 'app_id' => 'wx2f926923ad50c5e5', // 小程序 APPID 'mch_id' => '1556224401', 'key' => 'ybkj888ybkj888ybkj888ybkj888ybkj', ]; $out_trade_no=2021030200009; $order = [ 'out_trade_no' =>$out_trade_no, 'total_fee' => 1, 'body' => 'test subject-微信刷卡支付', 'auth_code' => '134553238456978129', ]; try { $wechat = Pay::wechat($config)->pos($order); dd($wechat);die; }catch (\Exception $e){ //echo $e->getMessage(); // die(); // 终止异常 } //$result=Pay::wechat($config)->find($out_trade_no); try { $alipay = Pay::alipay($config)->pos($order); dd($alipay); }catch (\Exception $e){ //echo $e->getMessage(); // die(); // 终止异常 } } public function payment($uniacid,$outTradeNo,$auth_code){ $order=$order = (new \yii\db\Query()) ->from('{{%ybwm_instore_order}}') ->where('outTradeNo=:outTradeNo', [':outTradeNo' => $outTradeNo])->one(); $money=0.01; if(substr($auth_code , 0 , 2)=='28'){ $payType=2; //$config=WeChat::payConfig($uniacid,$payType); $config =array( 'app_id' => '2019091867562464', 'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjEKdm/ZchS/TmkEim2qrTfSFv4kq44KILM+7NaqsJTzrfZwWAWLeEqCHCM9n2lB/3cU0ImLPpHlzFLoy0hKgk+ZtbXhgfTLHtSErQL+WLqsNMe7mcrUYGO/9/51Z8X/b5UJgUzlVWoxnlROCfoGTQCmSmof5RtInWyXWk0CCj3u9jyzXsLhaonB3o1Y5rJEXyrQwCTyAgZlw9UesaKtq+l6J3ry2tHJSKt6tfH4nLA2F8CTteSOjmVd6y5RebqRhud6hBlVxoSV7FS7wTLVR3su8rgH6AAydB12IRd+TnGYYk5trNsqF2CLCk8sKcktL7OkUFiAHFooqcLqJpqTYCwIDAQAB', 'private_key' => 'MIIEpgIBAAKCAQEA6l/HNl169TQ+cwm80tHgoHF+FJtC5b26/Xw7dwy8UJiBB1p1WO1p9Si01WdSQbBwZcxUY+A347LE2R9FH70kc6d5Fan7vZTUAT+a6xF7+TwZshyTlNM2zB2/a07wXZqkrjuwIQ5AnqqbGhbyq6tqD4+H2J59SHgK21ZJpmbGoqDfOGJC79n8sGD2X9BGU9JS5STwqQN6lqY0/FhyQZmcv6EYFapXXIUzzDZ/bZeGvRa9JAqTylI+Kd96aAYZtrkZCkuysjgdvwTA02w4nA0xDKMen4iu3GsDo+pSQFfYSdsxTdnuYcEfs6AV7Y/tc6fLrb4mTELJK8AS3wd/WAKKZwIDAQABAoIBAQC1gODkwDYVqJToP9VEKpbbiajLSoXfJzSlU801X96CR+g8ipgv+wRAgHqyfWZdSsdwfnGoOx7tLid1wdqlPrP5AOwrk81JvvUD1n8hphOtKxb3MVw1N/DK2ArCjopk4vq/l6fJoaD3f0XISZc6zO/BBzV70xlQwu4deFBnFlaj35g2/zK5GRCbs6Sjka3WqEC9Dd16jJXfV4Zal2Mmv1eyaYGnyBAc3gdftA3RRqffJ5RsisgiY2KKaNg20kPW7um3U2pcYAxSYZhJVEsd4r0paKPG9jtkSrR+zEzyR1pHZDmD3DAS5sggpiPdLiMYyYEBOKzCLumCvqdPFiX+XGJpAoGBAPcYAkfX0i893dGfHbbMSeoxGTJkI7y0YqmhFaJVgYBD4HkkWUHUbfqcAmJW5lw2Ain/jRnRBhEyuLeAaTpPTpNtRtyCagfdD4ULpLE2R89tPttcDgZ5uLq3Tdg88IKbdA9A0I6RnUomglJbbwSFrl+5PxUb+0iFlfaQUj8cmDU7AoGBAPLSZvFpscsISy7s7AkQVOrfiufgDa+MjwEzIcZp3qrjTOkLCvE4Ta12/ABKYtD8o7OR7fhfGUbRMW5vFpEauQdyFqN+xwZ9unJq83mv28qwbSY/TC4it6XSoq6cDgwhYloLWnj+D8Yejf8IiY1Ui/t23wZmbb96tZPywgmBu3zFAoGBAOBNZySYgjBoVMhJTMv3vtFdKKZZyScwCLA7jkwCmsA43biainv7vqpUnMVwZUUnsec2GHxrBrrt9Eh/xQYtoAKsnDroGCBzR/dajnJf9+gQH5M5iXHPZSX56Cx3hUzKmRyPlcMV5Fa/hmYEok7Um2pB20XqVL2MpolgkYjBCFqpAoGBAJLjnqx5ULlOihSX8+1DuOrgUaoVSpIgiD2kjdD2KGHd4J+1M2has/q0WJtgZEiiG/E73OX7uVGyqKFyiAc9UCLl7DX5MjKGCiy+8AxzypThhxW1AsOB8vBX7FuOQZ0q8NEhvxgkMKybvTBDHNqnA4saDK5Vdhx4AbG/D4wqs501AoGBAPKLLch4WckE9m+awheuuTp50ON8ghjwMvJg3u9DgDQber/8C9ig1nN1SQp9vXYSWW9sc70YvGpwBbD+V+XZD3yTbEiyt5ESVsFMhE19C2oBg9Dy64lJ8B4i1uJ9EhTeP3A8XjP2f0r8ClQwQoh0OL6rx7734ToZnUnnWOhxZ9Eh', ); $order = [ 'out_trade_no' =>$outTradeNo, 'total_fee' =>$money, 'body' => '收银台-支付宝当面付', 'auth_code' =>$auth_code, ]; try { $alipay = Pay::alipay($config)->pos($order); }catch (\Exception $e){ //echo $e->getMessage(); // die(); // 终止异常 } switch ($alipay->code) { case "10000": echo json_encode(['code'=>1,'msg'=>'支付成功']);die; break; case "10003": echo json_encode(['code'=>2,'msg'=>'等待用户付款']);die; break; case "40004": echo json_encode(['code'=>2,'msg'=>'支付失败']);die; break; default: echo json_encode(['code'=>2,'msg'=>'不支持的交易状态,交易返回异常!!!']);die; break; } }else{ $payType=1; $money=bcmul($money,100); $config=WeChat::payConfig($uniacid,$payType); $order = [ 'out_trade_no' =>$outTradeNo, 'total_fee' =>$money, 'body' => '收银台-支付宝当面付', 'auth_code' =>$auth_code, ]; try { $wechat = Pay::wechat($config)->pos($order); }catch (\Exception $e){ //echo $e->getMessage(); // die(); // 终止异常 } if($wechat->return_code=='SUCCESS'&&$wechat->return_code=='OK'&&$wechat->result_code=='SUCCESS'){ echo json_encode(['code'=>1,'msg'=>'支付成功']);die; }else{ $wechat = Pay::wechat($config)->find($outTradeNo); if($wechat->return_code=='SUCCESS'&&$wechat->return_code=='OK'&&$wechat->result_code=='SUCCESS'){ echo json_encode(['code'=>1,'msg'=>'支付成功']);die; }else{ echo json_encode(['code'=>1,'msg'=>'订单取消']);die; } } } } }