input('countryCode'); $currencyCode = $request->input('currencyCode'); $paymentType = $request->input('paymentType'); $paymentAmount = $request->input('paymentAmount'); $extendedParams = $request->input('extendedParams'); $rate = $request->input('rate'); $goods = "USDC"; $notifyUrl = "https://cdn.redcoin.uk/api/pay/notify"; if(!empty($extendedParams)){ if(!($countryCode == "BRA" || $paymentType == "901210072003")){ $extendedParams = "bankCode^".$extendedParams; } $signStr = "countryCode=" . $countryCode . "¤cyCode=" . $currencyCode . "&extendedParams=" . $extendedParams . "&goods=" . $goods . "&merchantNo=" . $merchantNo . "&merchantOrderNo=" . $merchantOrderNo . "¬ifyUrl=" . $notifyUrl . "&paymentAmount=" . $paymentAmount . "&paymentType=" . $paymentType; }else{ //签名参数组成待签名串 $signStr = "countryCode=" . $countryCode . "¤cyCode=" . $currencyCode . "&goods=" . $goods . "&merchantNo=" . $merchantNo . "&merchantOrderNo=" . $merchantOrderNo . "¬ifyUrl=" . $notifyUrl . "&paymentAmount=" . $paymentAmount . "&paymentType=" . $paymentType; } $sign = ""; //商户私钥 $private_key="MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJkJmUehPtZ0Vfy4s/o4x+IiZkA5Pbd4zLeYoGmSKBTzSq+diG3TvTkF+QSAofw/o5NaBbKRlQRKQjd0KNbD3mJv32eSf+xwiuN82h1nOOCHrcmwd4zW/F3M97n/hNxBHdOwgoEiRuHz8H7yJ4PxocDtlT27ecYa9aaMnArQZSj3AgMBAAECgYAlsGN7bI6ZKhVzI9nPKeSwIGCmOHKmmK1yGbiHx2LvpesizN0ojxjuzjXBkhxSjymtxGHa1Feqss8T8RuNqLc/ipWhMdEcpYTRnTvNFAk8SO50qGt8rAZW1Qcpwc8odXW4f0+GGmpOpuiv1mi+njHlRYonAGjvyURznCCOkokMQQJBAPubmTf3r174yhB3Z/r/aUoezJ2wV+67WsqAoeLNYoQF+d5cQHghmBQ1xnGkt4o5gp9aRYC5wPkHRMtEGazzHJ8CQQCbtYC0ttTZt0qv/s9Pkvs8HooAkTKhh1OoeABui8odDPiDCIm46/senRyh36pZ0mUkjmQbyjtHjNprDk2XjjypAkEA6mmDDFOkfbUIfOLia0R+UeHz/I4IvpCq+7NwH5/+QsZWj0Yfgky6JUocglBV91+xRMmTq2RkVx7ghwgBa9JsPQJAK8++DxsCeN/h2/NOUY2Bs0DEg7RXEqwJFfXt6SzcCaCErBnS5n0/gzWhwMo2HF/epZKLCGa2l0NCkazMmEAlQQJAR7RbqvqYwxslKOqZ6EiuB1gObxNGFbPUkznH/IesdRlTbcV/i2B+NQ71mMebC2O5FFdjMyiO04ysEwaUgm30lQ=="; $private_key=chunk_split($private_key, 64, "\n"); $merchant_private_key = "-----BEGIN RSA PRIVATE KEY-----\n" .$private_key."-----END RSA PRIVATE KEY-----"; $merchant_private_key = openssl_get_privatekey($merchant_private_key); openssl_sign($signStr, $sign_info, $merchant_private_key, OPENSSL_ALGO_MD5); $sign = base64_encode($sign_info); //提交参数 if(!empty($extendedParams)){ $postdata = array( 'merchantNo' => $merchantNo, 'merchantOrderNo' => $merchantOrderNo, 'countryCode' => $countryCode, 'currencyCode' => $currencyCode, 'paymentType' => $paymentType, 'paymentAmount' => $paymentAmount, 'extendedParams' => $extendedParams, 'goods' => $goods, 'notifyUrl' => $notifyUrl, 'sign' => $sign ); }else{ //签名参数组成待签名串 $postdata = array( 'merchantNo' => $merchantNo, 'merchantOrderNo' => $merchantOrderNo, 'countryCode' => $countryCode, 'currencyCode' => $currencyCode, 'paymentType' => $paymentType, 'paymentAmount' => $paymentAmount, 'goods' => $goods, 'notifyUrl' => $notifyUrl, 'sign' => $sign ); } $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://api.bpay.tv/api/v2/payment/order/create"); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); $data = json_encode($postdata); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($data) , 'Cache-Control: no-cache', 'Pragma: no-cache' )); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($curl); curl_close($curl); $result = @json_decode($res, true); if($result['code'] == 200){ $user_id = Users::getUserId(); DB::beginTransaction(); $payUserInfo = new PayUserInfo(); try { $payUserInfo->user_id = $user_id; $payUserInfo->order_id = $merchantOrderNo; $payUserInfo->country_code = $countryCode; $payUserInfo->currency_code = $currencyCode; $payUserInfo->payment_type = $paymentType; $payUserInfo->payment_amount = $paymentAmount; $payUserInfo->extended_params = $extendedParams; $payUserInfo->rate = $rate; $payUserInfo->create_time = time(); $payUserInfo->status = 0; $payUserInfo->save(); DB::commit(); } catch (\Exception $ex) { DB::rollBack(); return $this->error($ex->getMessage()); } return $this -> success($result['data']['paymentUrl']); }else{ return $this->error(__('支付通道维护,请更换支付方式')); } } public function payLog(Request $request) { $limit = $request->get('limit', 10); $user_id = Users::getUserId(); $list = new PayUserInfo(); if (!empty($user_id)) { $list = $list->where('user_id', $user_id); } $list = $list->orderBy('id', 'desc')->paginate($limit); return $this->success(array( "list" => $list->items(), 'count' => $list->total(), "limit" => $limit )); } }