NopCommerce Alipay 支付插件
NopCommerce Alipay 支付插件
1.查找及下载NopCommerce Alipay插件
http://www.nopcommerce.com/p/963/alipay-payment-module-nopcommerce-team.aspx

2.解压并添加到项目
按照Readme.txt
1. 'Nop.Plugin.Payments.AliPay' directory contains source code.
2. 'Payments.AliPay' contains binaries. Just drop it into \Plugins directory on your server.
将相应的3.80文件夹下的文件 放置指定位置
Payments.AliPay -》 nopCommerce_3.80\Presentation\Nop.Web\Plugins
Nop.Plugin.Payments.AliPay -》nopCommerce_3.80\Plugins
在解决方案的Plugins Add Existing Item
Nop.Plugin.Payments.AliPay.AliPayPaymentProcessor
/// <summary>
/// Post process payment (used by payment gateways that require redirecting to a third-party URL)
/// </summary>
/// <param name="postProcessPaymentRequest">Payment info required for an order processing</param>
public void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
{
//string gateway = "https://www.alipay.com/cooperate/gateway.do?";
var sellerEmail = _aliPayPaymentSettings.SellerEmail;
var key = _aliPayPaymentSettings.Key;
var partner = _aliPayPaymentSettings.Partner;
var outTradeNo = postProcessPaymentRequest.Order.Id.ToString();
var subject = _storeContext.CurrentStore.Name;
var body = "Order from " + _storeContext.CurrentStore.Name;
var totalFee = postProcessPaymentRequest.Order.OrderTotal.ToString("0.00", CultureInfo.InvariantCulture);
var notifyUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentAliPay/Notify";
var returnUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentAliPay/Return";
string[] para ={
"service=" + Service,
"partner=" + partner,
"seller_email=" + sellerEmail,
"out_trade_no=" + outTradeNo,
"subject=" + subject,
"body=" + body,
"total_fee=" + totalFee,
"show_url=" + ShowUrl,
"payment_type=1",
"notify_url=" + notifyUrl,
"return_url=" + returnUrl,
"_input_charset=" + InputCharset
};
var aliayUrl = CreatUrl(para, InputCharset, key);
var post = new RemotePost
{
FormName = "alipaysubmit",
Url = "https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8",
Method = "POST"
};
post.Add("service", Service);
post.Add("partner", partner);
post.Add("seller_email", sellerEmail);
post.Add("out_trade_no", outTradeNo);
post.Add("subject", subject);
post.Add("body", body);
post.Add("total_fee", totalFee);
post.Add("show_url", ShowUrl);
post.Add("return_url", returnUrl);
post.Add("notify_url", notifyUrl);
post.Add("payment_type", "");
post.Add("sign", aliayUrl);
post.Add("sign_type", SignType);
post.Post();
}
Alipay请求参数说明
https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103740&docType=1
解决方案 Clean 和 Rebuild
运行站点
3.安装插件
Admin -> Configuration -> Plugins -> Local plugins

4.配置插件
Admin -> Configuration -> Payment -> Payment methods -> Configure


aliPay_partner:商户PID
aliPay_seller:商户支付宝
aliPay_rsaPriKey:生成的private_key
aliPay_rsaPubKey:生成的public_key
http://docs.apicloud.com/Client-API/Open-SDK/aliPay
https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103740&docType=1
配置信息将保存在Setting表中

5.启用插件
Admin -> Configuration -> Payment -> Payment methods -> Edit
6.前台查看

附 Alipay请求参数说明
https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103740&docType=1
请求参数说明
请求参数是商户在与支付宝进行数据交互时,提供给支付宝的请求数据,以便支付宝根据这些数据进一步处理。
|
参数 |
参数名称 |
类型(字节长度) |
参数说明 |
是否可为空 |
样例 |
|
基本参数 |
|||||
|
service |
接口名称 |
String |
接口名称。 |
不可空 |
create_direct_pay_by_user |
|
partner |
合作者身份ID |
String(16) |
签约的支付宝账号对应的支付宝唯一用户号。 以2088开头的16位纯数字组成。 |
不可空 |
2088101011913539 |
|
_input_charset |
参数编码字符集 |
String |
商户网站使用的编码格式,如utf-8、gbk、gb2312等。 |
不可空 |
gbk |
|
sign_type |
签名方式 |
String |
DSA、RSA、MD5三个值可选,必须大写。 |
不可空 |
MD5 |
|
sign |
签名 |
String |
请参见本文档“附录:签名与验签”。 |
不可空 |
7d314d22efba4f336fb187697793b9d2 |
|
notify_url |
服务器异步通知页面路径 |
String(190) |
支付宝服务器主动通知商户网站里指定的页面http路径。 |
可空 |
http://api.test.alipay.net/atinterface/receive_return.htm |
|
return_url |
页面跳转同步通知页面路径 |
String(200) |
支付宝处理完请求后,当前页面自动跳转到商户网站里指定页面的http路径。 |
可空 |
http://api.test.alipay.net/atinterface/receive_return.htm |
|
业务参数 |
|||||
|
out_trade_no |
商户网站唯一订单号 |
String(64) |
支付宝合作商户网站唯一订单号。 |
不可空 |
6843192280647118 |
|
subject |
商品名称 |
String(256) |
商品的标题/交易标题/订单标题/订单关键字等。 该参数最长为128个汉字。 |
不可空 |
贝尔金护腕式 |
|
payment_type |
支付类型 |
String(4) |
只支持取值为1(商品购买)。 |
不可空 |
1 |
|
total_fee |
交易金额 |
Number |
该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 |
不可空 |
100 |
|
seller_id |
卖家支付宝用户号 |
String(16) |
三个参数至少必须传递一个。 当签约账号就是收款账号时,请务必使用参数seller_id,即seller_id的值与partner的值相同。 三个参数的优先级别是:seller_id>seller_account_name>seller_email。 |
不可空 |
2088002007018966 |
|
seller_email |
卖家支付宝账号 |
String(100) |
alipay-test01@alipay.com |
||
|
seller_account_name |
卖家支付宝账号别名 |
String(100) |
tstable02@alipay.com |
||
|
buyer_id |
买家支付宝用户号 |
String(16) |
三个参数的优先级别是:buyer_id>buyer_account_name>buyer_email。 |
可空 |
2088002007018955 |
|
buyer_email |
买家支付宝账号 |
String(100) |
tstable01@alipay.com |
||
|
buyer_account_name |
买家支付宝账号别名 |
String(100) |
tstable03@alipay.com |
||
|
price |
商品单价 |
Number |
单位为:RMB Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。此参数为单价 规则:price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。 |
可空 |
10.00 |
|
quantity |
购买数量 |
Number |
price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。 |
可空 |
1 |
|
body |
商品描述 |
String(1000) |
对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 |
可空 |
美国专业护腕鼠标垫,舒缓式凝胶软垫模拟手腕的自然曲线和运动,创造和缓的GelFlex舒适地带! |
|
show_url |
商品展示网址 |
String(400) |
收银台页面上,商品展示的超链接。 |
可空 |
http://www.360buy.com/product/113714.html |
|
paymethod |
默认支付方式 |
String |
取值范围:
如果不设置,默认识别为余额支付。 说明: 必须注意区分大小写。 |
可空 |
directPay |
|
enable_paymethod |
支付渠道 |
String |
用于控制收银台支付渠道显示,该值的取值范围请参见支付渠道。 可支持多种支付渠道显示,以“^”分隔。 |
可空 |
directPay^bankPay^cartoon^cash |
|
anti_phishing_key |
防钓鱼时间戳 |
String |
通过时间戳查询接口获取的加密支付宝系统时间戳。 如果已申请开通防钓鱼时间戳验证,则此字段必填。 |
可空 |
587FE3D2858E6B01E30104656E7805E2 |
|
exter_invoke_ip |
客户端IP |
String(15) |
用户在创建交易时,该用户当前所使用机器的IP。 如果商户申请后台开通防钓鱼IP地址检查选项,此字段必填,校验用。 |
可空 |
128.214.222.111 |
|
extra_common_param |
公用回传参数 |
String(100) |
如果用户请求时传递了该参数,则返回给商户时会回传该参数。 |
可空 |
你好,这是测试商户的广告。 |
|
it_b_pay |
超时时间 |
String |
设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。 取值范围:1m~15d。 m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点,如1.5h,可转换为90m。 |
可空 |
1h |
|
token |
快捷登录授权令牌 |
String(40) |
如果开通了快捷登录产品,则需要填写;如果没有开通,则为空。 |
可空 |
201103290c9f9f2c03db4267a4c8e1bfe3adfd52 |
|
qr_pay_mode |
扫码支付方式 |
String(1) |
扫码支付的方式,支持前置模式和跳转模式。 前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下3种:
跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。
|
可空 |
1 |
|
qrcode_width |
商户自定二维码宽度 |
Integer |
商户自定义的二维码宽度。 当qr_pay_mode=4时,该参数生效。 |
可空 | 200 |
|
need_buyer_realnamed |
是否需要买家实名认证 |
String(2) |
是否需要买家实名认证。
|
可空 | T |
|
promo_param |
商户优惠活动参数 |
String(128) |
商户与支付宝约定的营销透传参数。 |
可空 | {"customer201412":"Y","goods201412":"Y"} |
|
hb_fq_param |
花呗分期参数 |
String |
参数格式:hb_fq_seller_percent ^卖家承担付费比例|hb_fq_num ^期数。
两个参数必须一起传入。 两个参数用“|”间隔。Key和value之间用“^”间隔。 具体花呗分期期数和卖家承担收费比例可传入的数值请咨询支付宝。 |
可空 | hb_fq_seller_percent^100|hb_fq_num^3 |
|
goods_type |
商品类型 |
String(2) |
商品类型:
如果不传,默认为实物类商品。 |
可空 | 1 |
https://mapi.alipay.com/gateway.do?body=%C3%C0%B9%FA%D7%A8%D2%B5%BB%A4%CD%F3%CA%F3%B1%EA%B5%E6%2C%CA%E6%BB%BA%CA%BD%C4%FD%BD%BA%C8%ED%B5%E6%C4%A3%C4%E2%CA%D6%CD%F3%B5%C4%D7%D4%C8%BB%C7%FA%CF%DF%BA%CD%D4%CB%B6%AF%A3%AC%B4%B4%D4%EC%BA%CD%BB%BA%B5%C4GelFlex%CA%E6%CA%CA%B5%D8%B4%F8%21&subject=%B1%B4%B6%FB%BD%F0%BB%A4%CD%F3%CA%BD&sign_type=MD5¬ify_url=http%3A%2F%2Fapi.test.alipay.net&out_trade_no=6741334835157966&return_url=http%3A%2F%2Fapi.test.alipay.net%2Fatinterface%2Freceive_return.htm&sign=dc3d42f405d7e738ab35344449e2d9f7&buyer_id=2088002007018955&total_fee=100&service=create_direct_pay_by_user&partner=2088101568338364&seller_id=2088002007018966&payment_type=1&qr_pay_mode=1&_input_charset=gbk
说明: 本样例仅供参考,支付宝网关为https://mapi.alipay.com/gateway.do。
注意:
- 此接口只支持https请求;
- 参数body(商品描述)、subject(商品名称)、extra_common_param(公用回传参数)不能包含特殊字符(如:#、%、&、+)、敏感词汇,也不能使用外国文字(旺旺不支持的外文,如:韩文、泰语、藏文、蒙古文、阿拉伯语);
- 请按照本文档“附录:签名与验签”中的签名方法对输入参数进行签名,该接口请求才能够被支付宝系统接收;
- 此接口支持重复调用,前提是交易基本信息(买家、卖家、交易金额、超时时间等)在多次调用中保持一致,且交易尚未完成支付;
- 配置qr_pay_mode为0或1或3或4的情况下,同步通知地址return_url需要传入商户中间跳转页面,即该页面需要实现让父页面自行跳转的功能,中间页面javascript代码:<script>window.parent.location.href='父页面调整的URL';</script>
NopCommerce Alipay 支付插件的更多相关文章
- nopCommerce添加支付插件
之前完成了nopCommerce和汉化以及配置,今天继续对nopCommerce的研究,为了能够完成购物,我们就要将伟大的支付宝添加至其中了.支付宝插件下载 将Nop.Plugin.Payments. ...
- nopcommerce 3.6网银在线支付插件(源码)
网银在线支付插件,下载后通过后台插件管理安装.配置即可使用. 下载:网银在线支付插件3.1.3.6版.rar (106.3KB) 源代码放在\Plugins目录下,用vs打开重新生成. 源地址:htt ...
- 如何开发ecshop支付插件
如何开发ecshop支付插件 ecshop模板网 / 2014-06-03 目标一:搞懂ecshop的支付流程 选完商品,进入购物车页面,点击“结算中心”,页面跳转到flow.php?step=che ...
- ionic-cordova 支付宝支付插件cordova-plugin-alipay-v2使用篇
支付宝WS_APP_PAY_SDK_BASE_2.0 <APP支付> 支付宝的cordova插件其实在github上已经有很多了,但是都已经是以前的版本了.在2016年11月的时候支付宝进 ...
- Nopcommerce 项目添加插件
插件是用来扩展nopCommerce功能的.nopCommerce拥有多种类型的插件.例如:支付方式(PayPal),税务机构,送货方式计算方法(UPS, USP, FedEx),小部件(如“在线聊天 ...
- 好用的Magento一步支付插件One Step Checkout免费版
Magento免费版一步支付插件地址:http://www.magentocommerce.com/magento-connect/one-page-checkout.html 直接引用KEY:ht ...
- 微信支付之扫码支付开发:我遇到的坑及解决办法(附:Ecshop 微信支付插件)
前段时间帮一个朋友的基于ecshop开发的商城加入微信扫描支付功能,本以为是很简单的事儿——下载官方sdk或开发帮助文档,按着里面的做就ok了,谁知折腾了两三天的时间才算搞定,中间也带着疑问在网上找了 ...
- WordPress按钮秒支付插件发布,支持微信支付,支付宝,银联,京东,苏宁,易宝支付
痛点: 我们用WordPress建设网站和开发移动应用,有时候我们其实不需要太多的流程,只是需要一个收款通道,但是可能对支持的渠道更加关注,特别是手机应用.所以WordPress按钮秒支付插件诞生了, ...
- WooCommerce微信支付插件免费版下载
WooCommerce微信支付插件免费版下载 2016-05-11 点击:605 免费版来了 免费版终于来了,直接下载用吧,当然免费少一些功能,只有PC扫码支付,没有微信原生支付,没有汇率,没有退款, ...
随机推荐
- VS2013设置护眼背景颜色
打开VS2013 —> 工具 —> 选项 —> 环境 —> 字体和颜色 —> 选择显示项中的纯文本 —> 项目背景 —> 自定义—> 色调位85.饱和度 ...
- 基于CkEditor实现.net在线开发之路(5)列表页面开发
这章主要讲解利用控件开发列表页面,我们先从最简单的列表页面开始讲解,这个列表只有一个列表展示.具体开发步骤请看下面动态图 由上动态图可以看出,开发一个简单的列表只有两步, 第一步:拖拽查询控件,设置好 ...
- Android Studio实现APK的更新、下载、安装
先不讲那么多看效果图: 下面来讲解一些更新CODE,原理大家都知道,不废话,直接上代码.里面有一些是我自己做的测试例子,所以大家可以直接删掉就好了 第一个:activity_main.xml < ...
- 错误:下列软件包有未满足的依赖关系: openssh-server : 依赖: openssh-client (= 1:7.1p1-4)
解决办法:尝试了很久才解决,这个是我发现最有用的,完美的解决了我的困难 后续过程参考:http://blog.csdn.net/jszhangyili/article/details/8881807 ...
- laravel5 数据库配置(MySQL)
laravel5 数据库配置(MySQL) 首先有一个安装完成可以运行的laravel框架. 配置database.php 进入laravel根目录. 在config目录下找到database.php ...
- PHP资源网站收藏
PHP之道 http://laravel-china.github.io/php-the-right-way/#use_the_current_stable_version http://www.ph ...
- c#中奖算法的实现
算法名称 Alias Method public class AliasMethod { /* The probability and alias tables. */ private int[] _ ...
- centos yum Segmentation fault 问题解决办法
今儿在centos 使用yum 安装软件时出现了 ”Segmentation fault“ 错误提示,google一大把执行 yum clean all 命令后,再执行还是没用,最后把 zlib.x. ...
- HTML DOM 教程
HTML DOM DOM 教程 DOM 简介 DOM 节点 DOM 方法 DOM 属性 DOM 访问 DOM 修改 DOM 内容 DOM 元素 DOM 事件 DOM 导航 一,HTML DOM 简介 ...
- React Native知识6-NavigatorIOS组件
NavigatorIOS包装了UIKit的导航功能,可以使用左划功能来返回到上一界面.本组件并非由Facebook官方开发组维护.这一组件的开发完全由社区主导.如果纯js的方案能够满足你的需求的话,那 ...