Giter VIP home page Giter VIP logo

alipay's Introduction

Alipay

支付宝SDK在Laravel5/Lumen封装包。

该拓展包想要达到在Laravel5/Lumen框架下,便捷使用支付宝的目的。

安装

composer require latrell/alipay dev-master

更新你的依赖包 composer update 或者全新安装 composer install

使用

要使用支付宝SDK服务提供者,你必须自己注册服务提供者到Laravel/Lumen服务提供者列表中。 基本上有两种方法可以做到这一点。

Laravel

找到 config/app.php 配置文件中,key为 providers 的数组,在数组中添加服务提供者。

    'providers' => [
        // ...
        'Latrell\Alipay\AlipayServiceProvider',
    ]

运行 php artisan vendor:publish 命令,发布配置文件到你的项目中。

Lumen

bootstrap/app.php里注册服务。

//Register Service Providers
$app->register(Latrell\Alipay\AlipayServiceProvider::class);

由于Lumen的artisan命令不支持vendor:publish,需要自己手动将src/config下的配置文件拷贝到项目的config目录下, 并将config.php改名成latrell-alipay.php, mobile.php改名成latrell-alipay-mobile.php, web.php改名成latrell-alipay-web.php.

说明

配置文件 config/latrell-alipay.php 为公共配置信息文件, config/latrell-alipay-web.php 为Web版支付宝SDK配置, config/latrell-alipay-mobile.php 为手机端支付宝SDK配置。

例子

支付申请

网页

	// 创建支付单。
	$alipay = app('alipay.web');
	$alipay->setOutTradeNo('order_id');
	$alipay->setTotalFee('order_price');
	$alipay->setSubject('goods_name');
	$alipay->setBody('goods_description');
	
	$alipay->setQrPayMode('4'); //该设置为可选,添加该参数设置,支持二维码支付。

	// 跳转到支付页面。
	return redirect()->to($alipay->getPayLink());

手机端

	// 创建支付单。
	$alipay = app('alipay.mobile');
	$alipay->setOutTradeNo('order_id');
	$alipay->setTotalFee('order_price');
	$alipay->setSubject('goods_name');
	$alipay->setBody('goods_description');

	// 返回签名后的支付参数给支付宝移动端的SDK。
	return $alipay->getPayPara();

结果通知

网页

	/**
	 * 异步通知
	 */
	public function webNotify()
	{
		// 验证请求。
		if (! app('alipay.web')->verify()) {
			Log::notice('Alipay notify post data verification fail.', [
				'data' => Request::instance()->getContent()
			]);
			return 'fail';
		}

		// 判断通知类型。
		switch (Input::get('trade_status')) {
			case 'TRADE_SUCCESS':
			case 'TRADE_FINISHED':
				// TODO: 支付成功,取得订单号进行其它相关操作。
				Log::debug('Alipay notify post data verification success.', [
					'out_trade_no' => Input::get('out_trade_no'),
					'trade_no' => Input::get('trade_no')
				]);
				break;
		}
	
		return 'success';
	}

	/**
	 * 同步通知
	 */
	public function webReturn()
	{
		// 验证请求。
		if (! app('alipay.web')->verify()) {
			Log::notice('Alipay return query data verification fail.', [
				'data' => Request::getQueryString()
			]);
			return view('alipay.fail');
		}

		// 判断通知类型。
		switch (Input::get('trade_status')) {
			case 'TRADE_SUCCESS':
			case 'TRADE_FINISHED':
				// TODO: 支付成功,取得订单号进行其它相关操作。
				Log::debug('Alipay notify get data verification success.', [
					'out_trade_no' => Input::get('out_trade_no'),
					'trade_no' => Input::get('trade_no')
				]);
				break;
		}

		return view('alipay.success');
	}

手机端

	/**
	 * 支付宝异步通知
	 */
	public function alipayNotify()
	{
		// 验证请求。
		if (! app('alipay.mobile')->verify()) {
			Log::notice('Alipay notify post data verification fail.', [
				'data' => Request::instance()->getContent()
			]);
			return 'fail';
		}

		// 判断通知类型。
		switch (Input::get('trade_status')) {
			case 'TRADE_SUCCESS':
			case 'TRADE_FINISHED':
				// TODO: 支付成功,取得订单号进行其它相关操作。
				Log::debug('Alipay notify get data verification success.', [
					'out_trade_no' => Input::get('out_trade_no'),
					'trade_no' => Input::get('trade_no')
				]);
				break;
		}

		return 'success';
	}

alipay's People

Contributors

daids avatar latrell avatar peiit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alipay's Issues

wap 参数错误,请修改

$parameter = array( 'service' => $this->service, 'partner' => $this->partner, 'payment_type' => $this->payment_type, 'notify_url' => $this->notify_url, 'return_url' => $this->return_url, 'seller_id' => $this->partner, 'out_trade_no' => $this->out_trade_no, 'subject' => $this->subject, 'total_fee' => $this->total_fee, 'body' => $this->body, 'it_b_pay' => $this->it_b_pay, 'show_url' => $this->show_url, 'exter_invoke_ip' => $this->exter_invoke_ip, 'app_pay' => $this->app_pay, '_input_charset' => strtolower($this->_input_charset), );
改成这样后,手机网页端就可以支付了,没有APP会是网页端支付宝,有APP就唤醒

楼主好人啊!

楼主好人啊! 这样做支付好简单!官方的SDK 真是晕

>=php7.2 each()参数废除导致报错

private function paraFilter($para)
{
$para_filter = array();
while ((list ($key, $val) = each($para)) == true) {
if ($key == 'sign' || $key == 'sign_type' || $val == '') {
continue;
} else {
$para_filter[$key] = $para[$key];
}
}
return $para_filter;
}

上述代码
while ((list ($key, $val) = each($para)) == true) {
修改为
foreach ($para as $key => $val) {
兼容性会更好 #32

APP无法接收异步通知问题

手机可以支付且手机能收到支付成功通知,但是服务器无法收到异步通知
将加密后的拼接字串进行urldecode发现"&notify_url"被转为了"¬ify_url"

我把你的代码拷贝出来
将加密后得到sign的参数数组中的notify_url删除,并拼接成url参数字串
因为notify_url不是数组第一个,此时使用createLinkstringUrlencode拼接就会有&notify_url
然后再用notify_url=url_encode(http://xxxx) . '&' . 刚拼接的url参数字串
生成订单,服务器就收到异步通知了
不知是不是我个人问题,所以不知是不是bug

Incorrect path for the cacert.pem on Unix

In the current constructor method the path to the cacert.pem is giving CURL error on Unix:
$this->cacert = getcwd() . '\\cacert.pem

This should be:
$this->cacert = getcwd() . '/cacert.pem

Can you add a setter method for this file?

alipay composer install error: config files didn't exist under config directory.

Hi bro,
Recently I created a laravel 5.1 project under /usr/share/nginx/laravel directory.
As I want to use latrel/alipay, so I run composer require latrell/alipya dev-master and composer install.
After that I didn't find config/latrell-alipay.php or other two config files under config directory, but vendor/latrell/alipay is ok. I don't know why, please help me, thx:)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.