public function actionAsync() { $response = ['return_code' => 'FAIL', 'return_msg' => '参数格式校验错误']; $post = Wxpay::getXmlPostData(); if (isset($post['return_code']) && isset($post['result_code']) && isset($post['out_trade_no']) && isset($post['transaction_id']) && isset($post['transaction_id'])) { $id = $post['out_trade_no']; $tid = $post['transaction_id']; $status = $post['return_code'] == 'SUCCESS' && $post['result_code'] == 'SUCCESS'; $manager = $this->module->manager; $verified = $manager->verifySign($this->mode, true); $manager->saveNotify($this->mode, $id, $tid, $status, $verified, $post); if ($verified) { $response['return_code'] = 'SUCCESS'; $response['return_msg'] = 'OK'; } else { $response['return_msg'] = '签名验证失败'; } if ($status && $manager->complete($id, $tid) && ($asyncClass = $this->module->asyncClass)) { $asyncClass::paied($id); } } return Wxpay::xmlFormatter($response); }
/** * 获取微信打包信息 * @method getPackage * @since 0.0.1 * @param {string} $notify_url 异步通知地址 * @return {string} * @example \Yii::$app->payment->getPackage($notify_url); */ public function getPackage($notify_url) { $prepay = ['return_code' => 'FAIL', 'return_msg' => '签名验证失败']; $post = Wxpay::getXmlPostData(); $wxpay = Wxpay::sdk($this->modes['wxpay']); if ($wxpay->verifySign($post)) { $payment = Payment::findById($post['product_id']); $prepay = $wxpay->createUnifiedOrder(array_merge($payment->toArray(), $post), $notify_url); if ($prepay['return_code'] == 'SUCCESS' && $prepay['result_code'] == 'SUCCESS') { $payment->trade_id = $prepay['prepay_id']; $payment->save(); } } return $prepay; }