Laravel-pay
都沒使用過Markdown,這裡就不要提示文章![Laravel](https://cdn.learnku.com/uploads/images/201907/13/21839/5jb7SbJdHy.png!large)
**微信支付
- 掃碼支付
- H5支付
- jsapi支付
1、掃碼支付
/**
* 微信掃碼支付接
*
* @return mixed
*/
public function weixinScanPay()
{
$order = [
'out_trade_no' => time(), // 只能是數字、大小寫字母_-|* 且在同一個商戶號下唯一 要求32字元
'body' => '訂單支付',
'total_fee' => '1', // 訂單總金額,單位為分,詳見支付金額
];
try {
$pay = Pay::wechat(config('pay.wechat'))->scan($order);
$res = (new BaconQrCodeGenerator)
->format('svg')
->size(200)->errorCorrection("L")
->generate($pay['code_url']);
return $res;
} catch (GatewayException $e) {
Log::info('二維碼出錯:' . $e->getMessage());
}
}
3、H5支付
/**
* 微信H5支付訂單下單處理
*
* @param Request $request
* @return string
*/
public function H5Pay()
{
// 測試 訂單號
$order_no = time();
$amount = '1';
$order = [
'out_trade_no' => $order_no, // 只能是數字、大小寫字母_-|* 且在同一個商戶號下唯一 要求32字元
'body' => '訂單支付', // 商品描述
'total_fee' => $amount, // 訂單總金額,單位為分,詳見支付金額
];
try {
$wap = Pay::wechat(config('pay.wechat'))->wap($order);
// 回撥地址支付完成頁面
$mweb_url = $wap->getTargetUrl() . '&redirect_url=' . config('pay.wechat.pay_success');
$set_wap = Pay::wechat(config('pay.wechat'))->wap($order)->setTargetUrl($mweb_url);
return $set_wap->getContent();
} catch (GatewayException $e) {
Log::info(date("H:i:s") . " 訂單{order['out_trade_no']}");
if (strpos($e->getMessage(), 'OK該訂單已支付') === false) {
// 不是已支付訂單
return response()->error($e->getMessage());
} else {
return response()->error('訂單已支付訊息');
}
}
}
/**
* 獲取 wx js api pay 資訊
*
* @param Api $api
* @return mixed
*/
public function jsApiPay()
{
$order_no = time();
$order = [
// 'openid' => $api->user()->openid,
'out_trade_no' => $order_no, // 只能是數字、大小寫字母_-|* 且在同一個商戶號下唯一 要求32字元
'body' => '訂單支付', // 商品描述
'total_fee' => 1 // 訂單總金額,單位為分,詳見支付金額
];
try {
return response()->data(Pay::wechat(config('pay.wechat'))->mp($order));
} catch (GatewayException $e) {
Log::info(date("H:i:s") . " 訂單{order['out_trade_no']}");
if (strpos($e->getMessage(), 'OK該訂單已支付') === false) {
// 不是已支付訂單
return response()->error('訂單支付失敗!');
} else {
return response()->error('訂單已支付訊息');
}
}
}