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. VS2013设置护眼背景颜色

    打开VS2013 —> 工具 —> 选项 —> 环境 —> 字体和颜色 —> 选择显示项中的纯文本 —> 项目背景 —> 自定义—> 色调位85.饱和度 ...

  2. 基于CkEditor实现.net在线开发之路(5)列表页面开发

    这章主要讲解利用控件开发列表页面,我们先从最简单的列表页面开始讲解,这个列表只有一个列表展示.具体开发步骤请看下面动态图 由上动态图可以看出,开发一个简单的列表只有两步, 第一步:拖拽查询控件,设置好 ...

  3. Android Studio实现APK的更新、下载、安装

    先不讲那么多看效果图: 下面来讲解一些更新CODE,原理大家都知道,不废话,直接上代码.里面有一些是我自己做的测试例子,所以大家可以直接删掉就好了 第一个:activity_main.xml < ...

  4. 错误:下列软件包有未满足的依赖关系: openssh-server : 依赖: openssh-client (= 1:7.1p1-4)

    解决办法:尝试了很久才解决,这个是我发现最有用的,完美的解决了我的困难 后续过程参考:http://blog.csdn.net/jszhangyili/article/details/8881807 ...

  5. laravel5 数据库配置(MySQL)

    laravel5 数据库配置(MySQL) 首先有一个安装完成可以运行的laravel框架. 配置database.php 进入laravel根目录. 在config目录下找到database.php ...

  6. PHP资源网站收藏

    PHP之道 http://laravel-china.github.io/php-the-right-way/#use_the_current_stable_version http://www.ph ...

  7. c#中奖算法的实现

    算法名称 Alias Method public class AliasMethod { /* The probability and alias tables. */ private int[] _ ...

  8. centos yum Segmentation fault 问题解决办法

    今儿在centos 使用yum 安装软件时出现了 ”Segmentation fault“ 错误提示,google一大把执行 yum clean all 命令后,再执行还是没用,最后把 zlib.x. ...

  9. HTML DOM 教程

    HTML DOM DOM 教程 DOM 简介 DOM 节点 DOM 方法 DOM 属性 DOM 访问 DOM 修改 DOM 内容 DOM 元素 DOM 事件 DOM 导航 一,HTML DOM 简介 ...

  10. React Native知识6-NavigatorIOS组件

    NavigatorIOS包装了UIKit的导航功能,可以使用左划功能来返回到上一界面.本组件并非由Facebook官方开发组维护.这一组件的开发完全由社区主导.如果纯js的方案能够满足你的需求的话,那 ...