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

请求参数说明

更新时间:2016/05/31                         访问次数:143285                    
 

请求参数是商户在与支付宝进行数据交互时,提供给支付宝的请求数据,以便支付宝根据这些数据进一步处理。

参数

参数名称

类型(字节长度)

参数说明

是否可为空

样例

基本参数

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是以2088开头的纯16位数字。
  • seller_email是支付宝登录账号,格式一般是邮箱或手机号。
  • seller_account_name是卖家支付宝账号别名。

三个参数至少必须传递一个。

当签约账号就是收款账号时,请务必使用参数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是以2088开头的纯16位数字。
  • buyer_email是支付宝登录账号,格式一般是邮箱或手机号。
  • buyer_account_name是买家支付宝账号别名。

三个参数的优先级别是: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

取值范围:

  • creditPay(信用支付)
  • directPay(余额支付)

如果不设置,默认识别为余额支付。

说明:

必须注意区分大小写。

可空

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种:

  • 0:订单码-简约前置模式,对应iframe宽度不能小于600px,高度不能小于300px;
  • 1:订单码-前置模式,对应iframe宽度不能小于300px,高度不能小于600px;
  • 3:订单码-迷你前置模式,对应iframe宽度不能小于75px,高度不能小于75px。
  • 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。

跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。

  • 2:订单码-跳转模式

可空

1

qrcode_width

商户自定二维码宽度

Integer

商户自定义的二维码宽度。

当qr_pay_mode=4时,该参数生效。

可空 200

need_buyer_realnamed

是否需要买家实名认证

String(2)

是否需要买家实名认证。

  • T表示需要买家实名认证;
  • 不传或者传其它值表示不需要买家实名认证。
可空  T

promo_param

商户优惠活动参数

String(128)

商户与支付宝约定的营销透传参数。

可空 {"customer201412":"Y","goods201412":"Y"}

hb_fq_param

花呗分期参数

String

参数格式:hb_fq_seller_percent ^卖家承担付费比例|hb_fq_num ^期数。

  • hb_fq_num:花呗分期数,比如分3期支付;
  • hb_fq_seller_percent:卖家承担收费比例,比如100代表卖家承担100%。

两个参数必须一起传入。

两个参数用“|”间隔。Key和value之间用“^”间隔。

具体花呗分期期数和卖家承担收费比例可传入的数值请咨询支付宝。

可空 hb_fq_seller_percent^100|hb_fq_num^3

goods_type

商品类型

String(2)

商品类型:

  • 1表示实物类商品
  • 0表示虚拟类商品

如果不传,默认为实物类商品。

可空 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&notify_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 支付插件的更多相关文章

  1. nopCommerce添加支付插件

    之前完成了nopCommerce和汉化以及配置,今天继续对nopCommerce的研究,为了能够完成购物,我们就要将伟大的支付宝添加至其中了.支付宝插件下载 将Nop.Plugin.Payments. ...

  2. nopcommerce 3.6网银在线支付插件(源码)

    网银在线支付插件,下载后通过后台插件管理安装.配置即可使用. 下载:网银在线支付插件3.1.3.6版.rar (106.3KB) 源代码放在\Plugins目录下,用vs打开重新生成. 源地址:htt ...

  3. 如何开发ecshop支付插件

    如何开发ecshop支付插件 ecshop模板网 / 2014-06-03 目标一:搞懂ecshop的支付流程 选完商品,进入购物车页面,点击“结算中心”,页面跳转到flow.php?step=che ...

  4. ionic-cordova 支付宝支付插件cordova-plugin-alipay-v2使用篇

    支付宝WS_APP_PAY_SDK_BASE_2.0 <APP支付> 支付宝的cordova插件其实在github上已经有很多了,但是都已经是以前的版本了.在2016年11月的时候支付宝进 ...

  5. Nopcommerce 项目添加插件

    插件是用来扩展nopCommerce功能的.nopCommerce拥有多种类型的插件.例如:支付方式(PayPal),税务机构,送货方式计算方法(UPS, USP, FedEx),小部件(如“在线聊天 ...

  6. 好用的Magento一步支付插件One Step Checkout免费版

    Magento免费版一步支付插件地址:http://www.magentocommerce.com/magento-connect/one-page-checkout.html‎ 直接引用KEY:ht ...

  7. 微信支付之扫码支付开发:我遇到的坑及解决办法(附:Ecshop 微信支付插件)

    前段时间帮一个朋友的基于ecshop开发的商城加入微信扫描支付功能,本以为是很简单的事儿——下载官方sdk或开发帮助文档,按着里面的做就ok了,谁知折腾了两三天的时间才算搞定,中间也带着疑问在网上找了 ...

  8. WordPress按钮秒支付插件发布,支持微信支付,支付宝,银联,京东,苏宁,易宝支付

    痛点: 我们用WordPress建设网站和开发移动应用,有时候我们其实不需要太多的流程,只是需要一个收款通道,但是可能对支持的渠道更加关注,特别是手机应用.所以WordPress按钮秒支付插件诞生了, ...

  9. WooCommerce微信支付插件免费版下载

    WooCommerce微信支付插件免费版下载 2016-05-11 点击:605 免费版来了 免费版终于来了,直接下载用吧,当然免费少一些功能,只有PC扫码支付,没有微信原生支付,没有汇率,没有退款, ...

随机推荐

  1. 【笔记】Asp.Net WebApi对js POST带参数跨域请求的支持方案

    先说下需求:在原来的WebApi项目中增加对js跨域的请求支持,请求方式:以POST为主,webapi路由规则根据原项目需求修改如下: public static void Register(Http ...

  2. de4dot3.14更新文件打包下载

    刚发现de4dot更新了,虽然只是10月份的文件更新,并未发布新的release,但好多人还不会编译... 关于de4dot有何功能就不再讲了. 本文主要提供编译通过后的打包文件下载. 首先下载de4 ...

  3. EC笔记,第二部分:9.不在构造、析构函数中调用虚函数

    9.不在构造.析构函数中调用虚函数 1.在构造函数和析构函数中调用虚函数会产生什么结果呢? #; } 上述程序会产生什么样的输出呢? 你一定会以为会输出: cls2 make cls2 delete ...

  4. KB,Kb单位换算,网络带宽中的Kbps和KB/s到底是什么意思? (注:B和b的区别)

    B是指字节(Byte)1个字节有8个比特组成    b是指比特(bit)代表一个2进制位(值为0或1) 上过网的朋友应该会听说过网络带宽这个词,可是这个网络带宽的单位到底是什么,为什么有的人说Kbps ...

  5. Linux Ctrl+c与ctrl+z的区别

    提问:CTRL-Z和CTRL-C区别?回答:CTRL-Z和CTRL-C都是中断命令,但是他们的作用却不一样.CTRL-C是强制中断程序的执行,而CTRL-Z的是将任务中断,但是此任务并没有结束,他仍然 ...

  6. MongoDB主从复制(主从集群 )

    1.简介 主从复制是MongoDB最常用的复制方式.这种方式非常灵活,可用于备份.故障恢复.读扩展等. 最基本的设置方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址.运行mon ...

  7. CSS3——3D翻转相册

    transform属性和transition过渡属性,结合jQuery代码实现翻转功能. <!DOCTYPE html> <html lang="en"> ...

  8. CSS常用背景图片定位方法

    CSS背景图片定位其实对于每一位学习前端的同学来说,都已经非常熟悉了.网上铺天盖地的最常见的一种方案就是在父元素中relative,然后子元素absolute.这种方案当然好,不过带来的一个缺点就是会 ...

  9. 今天再给大家带点html5前端开发的干货模板“text/tpl”怎么用 script template怎么用

    text/tpl 顾名思义就是模板,其实和C++模板函数类似的作用,就是利用他生成一个HMTL内容,然后append或者替换html里面 有什么好处,假如后端返回来的数据都是一样的,但是需要生成不同的 ...

  10. MySQL错误(一)

    Host 'localhost' is not allowed to connect to this MySQL server 手贱误操作将root用户删除,解决办法: 找到mysql的配置文件 my ...