示例#1
0
 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);
 }
示例#2
0
 /**
  * 获取微信打包信息
  * @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;
 }